Get certified for free when you join Fabric Data Days 2026 and dive into Fabric, Power BI, SQL, AI, and other essential data skills.
Join nowTry your skills in the Power BI Dataviz World Championship! Round one ends June 26. Join now
Hello Everybody,
I have a problem with a Power BI API
First i get the Token:
$url = 'https://login.windows.net/' . $directoryIdAzure . '/oauth2/token'
/** @var GuzzleHttp\Client $client **/
$response = $client->post(
$url,
[
"headers" => [
"Accept" => "application/json"
],
'form_params' => [
'resource' => 'https://analysis.windows.net/powerbi/api',
'client_id' => $clientIdAzure,
'client_secret' => $clientSecretAzure,
'grant_type' => 'client_credentials',
'username' => $user,
'password' => $pass,
'scope' => 'openid',
]
]
);
$body = json_decode($response->getBody()->getContents(), true);
$token = $body['access_token'];
After i need list all Workspaces using a token
$client2 = new \GuzzleHttp\Client();
$res = $client2->request(
'GET',
'https://api.powerbi.com/v1.0/myorg/groups',
[
'headers' =>
[
'Authorization' => 'Bearer ' . $token,
'Accept' => 'application/json',
'Content-type' => 'application/json'
]
]
);
$workspaces = json_decode($res->getBody()->getContents(), true);
Return this error for me:
"Client error: `GET https://api.powerbi.com/v1.0/myorg/groups` resulted in a `401 Unauthorized` response"
The permissions in the Azure it's OK:
Solved! Go to Solution.
I Solved my problem.
I change
'grant_type' => 'client_credentials',
to
'grant_type' => 'password',
and I had to disable Security Defaults in the Azure
Azure Portal > Azure AD > Properties > Click on Manage Security Defaults link > Toggle Enable Security Defaults button to NO.
I hope thats help anyone.
You also need to enable use of the Fabric API within the Developer settings of your Power BI tenant. See ths link for details: https://learn.microsoft.com/en-us/power-bi/developer/embedded/embed-service-principal
I Solved my problem.
I change
'grant_type' => 'client_credentials',
to
'grant_type' => 'password',
and I had to disable Security Defaults in the Azure
Azure Portal > Azure AD > Properties > Click on Manage Security Defaults link > Toggle Enable Security Defaults button to NO.
I hope thats help anyone.