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
Hi all,
I'm trying to call one of these two endpoints using Python, but running into 401 Unauthorized without any details from the API response.
https://learn.microsoft.com/en-us/rest/api/power-bi/datasets/execute-queries-in-group
https://learn.microsoft.com/en-us/rest/api/power-bi/datasets/execute-queries
Below is my code in Python, for full transparency versions used: Python 3.12.9, requests 2.32.2, msal 1.31.1
# internal imports
import configuration_details
# external imports
import json
import msal # microsoft authentication library
import requests
(
authority_url,
azure_ad_client_id,
azure_ad_client_secret,
) = configuration_details.retrieve_pbi_details()
authentication_context = msal.ConfidentialClientApplication(
client_id=azure_ad_client_id,
client_credential=azure_ad_client_secret,
authority=authority_url,
validate_authority=True,
)
token = authentication_context.acquire_token_for_client(
scopes=["https://analysis.windows.net/powerbi/api/.default"]
)
access_token = token.get("access_token")
data = json.dumps({"queries": [{"query": "EVALUATE VALUES(Worklogs)"}]})
response = requests.post(
data=data,
url="https://api.powerbi.com/v1.0/myorg/groups/a365faf8-a136-48b7-96f0-2368934a9328/datasets/7284eead-fb8b-4fbf-9532-0c7df5dcd409/executeQueries",
headers={
"Authorization": f"Bearer {access_token}",
"Content-Type": "application/json",
},
timeout=60
)
The response is 401 with content `{'code': 'PowerBINotAuthorizedException', 'parameters': {}, 'details': [], 'exceptionCulprit': 1}`
Checked:
- Workspace ID and dataset ID are correct
- Service principal related to client ID had admin rights on the workspace
- Client secret is correct
- Other similar API calls work with the same code, for example GET
Solved! Go to Solution.
I resolved the issue myself. For anyone else running into this: the issue was the semantic model having row-level security enabled. It seems you cannot use service principals in this case.
It is sparsely mentioned in the Power BI API endpoint limitations section, but would appreciate a clear API response from the API itself:
To use Service Principals, make sure the admin tenant setting Allow service principals to use Power BI APIs under Developer settings is enabled. However, regardless of the admin tenant setting, Service Principals aren't supported for datasets with RLS per RLS limitations or datasets with SSO enabled.
I resolved the issue myself. For anyone else running into this: the issue was the semantic model having row-level security enabled. It seems you cannot use service principals in this case.
It is sparsely mentioned in the Power BI API endpoint limitations section, but would appreciate a clear API response from the API itself:
To use Service Principals, make sure the admin tenant setting Allow service principals to use Power BI APIs under Developer settings is enabled. However, regardless of the admin tenant setting, Service Principals aren't supported for datasets with RLS per RLS limitations or datasets with SSO enabled.