Join us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM.
Register now!The Power BI Data Visualization World Championships is back! Get ahead of the game and start preparing now! Learn more
Hi,
I am trying to create new datasources under gateway using api from C# but still gets error response "400: Bad request".
Supplied credentials encrypted as described in https://msdn.microsoft.com/en-us/library/mt784645.aspx
Here's code i'm using...
string powerBIDatasourcesApiUrl = String.Format("https://api.powerbi.com/v1.0/myorg/gateways/{0}/datasources", gatewayId);
HttpWebRequest request = System.Net.WebRequest.Create(powerBIDatasourcesApiUrl) as System.Net.HttpWebRequest;
//POST web request to create a datasource.
request.KeepAlive = true;
request.Method = "POST";
request.ContentLength = 0;
request.ContentType = "application/json";
//Add token to the request header
request.Headers.Add("Authorization", String.Format("Bearer {0}", token));
string datasourceJson =
"{" +
"\"name\":\"" + <datasourceName> + "\"," +
"\"type\":\"Sql\"," +
"\"connectionDetails\":\"{\"server\":\"<server>\",\"database\":\"<database>\"}\"," +
"\"credentialDetails\":{" +
"\"credentials\":\"" + <credentialsHash> + "\"," +
"\"encryptionAlgorithm\":\"RSA-OAEP\"," +
"\"encryptedConnection\":\"Encrypted\"," +
"\"privacyLevel\":\"Public\"," +
"\"credentialType\":\"Windows\"" +
"}}";
//POST web request
byte[] byteArray = System.Text.Encoding.UTF8.GetBytes(datasourceJson);
request.ContentLength = byteArray.Length;
//Write JSON byte[] into a Stream
using (Stream writer = request.GetRequestStream())
{
writer.Write(byteArray, 0, byteArray.Length);
writer.Flush();
writer.Close();
writer.Dispose();
var response = (HttpWebResponse)request.GetResponse();
Console.WriteLine(string.Format("Datasource {0}", response.StatusCode.ToString()));
}
You can't add a new datasource through the patch Datasource API, as this API is used to:
"
updates the credentials for a data source.
"
As far as I know, currently there is no possible way to create new datasource, what could be done is:
Update the existing DataSource connection string, or update the credentials for a data source.
https://msdn.microsoft.com/en-US/library/mt771178.aspx
Regards,
Michael
Hi Michael,
thank for your reply.
According to this manual,
https://msdn.microsoft.com/en-us/library/mt784643.aspx
it should be possible to create a new datasource under gateway.
Check out the November 2025 Power BI update to learn about new features.
Advance your Data & AI career with 50 days of live learning, contests, hands-on challenges, study groups & certifications and more!
| User | Count |
|---|---|
| 4 | |
| 2 | |
| 2 | |
| 1 | |
| 1 |
| User | Count |
|---|---|
| 10 | |
| 10 | |
| 4 | |
| 3 | |
| 3 |