Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Score big with last-minute savings on the final tickets to FabCon Vienna. Secure your discount

Reply
gddata
New Member

Power BI Rest API returns 401 authorized for some methods

I want to prepare a report that shows the usage statistics of our PowerBI reports. I wanted to use the PowerBI Rest API for this. I was able to access this API and do a few operations, but we cannot access other methods (Admin) that we want to access (such as creating a group, listing the group we created). We are getting a 401 error. I think that we have given the necessary authorizations on Azure and through Power BI Admin, but I think there is a point we missed.

 

PowerBI Portal Admin SettingsPowerBI Portal Admin Settings

 

 

 

 

RESOURCE_URL = 'https://analysis.windows.net/powerbi/api/.default' 
GROUP_URL = "https://api.powerbi.com/v1.0/myorg/groups"
ADMIN_URL = "https://api.powerbi.com/v1.0/myorg/admin/apps"
ADMIN_GROUP_URL_BASE = "https://api.powerbi.com/v1.0/myorg/admin/groups"
REPORT_URL = "https://api.powerbi.com/v1.0/myorg/groups/{}/reports"

token = { "bearer": None, "expiration": None }

headers = { "Content-Type': 'application/json" }
#response = requests.post("https://login.microsoftonline.com/", headers = headers, data = body)

auth = ClientSecretCredential (authority = AUTHORITY_URL, tenant_id = TENANT_ID, client_id = CLIENT_ID, client_secret = CLIENT_SECRET)
access_token = auth.get_token(RESOURCE_URL)
access_token = access_token.token
print(access_token)

bearer = access_token
token["bearer"] = "Bearer {}".format(bearer)
token["expiration"] = datetime.datetime.now() + datetime.timedelta(hours = 1)
rint(token)
headers = { "Authorization": token["bearer"] }

def CreateGroup(group_name:str):
    workspace_v2=True
    body = {
      "name": group_name
    }

    parameters = "?workspaceV2=True"
    
    response = requests.post(GROUP_URL + parameters, headers = headers, data = body)
    
    if response.status_code == HTTP_OK:
        print("New group created")

def GetGroups():
    response = requests.get(GROUP_URL, headers = headers)
    print(response)
    if response.status_code == HTTP_OK:
        print(response.json()["value"])

GetGroups()

 

 

 

 

Response :

https://api.powerbi.com/v1.0/myorg/admin/groups?$top={$top}
<Response [401]>

Please could you  suggest a way to solve this problem.

 

Thanks.

1 ACCEPTED SOLUTION
Anonymous
Not applicable

Hi @gddata ,

According to your provided info, it seems that you call REST API using service principal. But service principal authentication is currently supported for the following read-only admin APIs. You can find the details in the following official documentations.

Considerations and limitations

Supported APIs

vyiruanmsft_0-1692093156178.png

Best Regards

View solution in original post

1 REPLY 1
Anonymous
Not applicable

Hi @gddata ,

According to your provided info, it seems that you call REST API using service principal. But service principal authentication is currently supported for the following read-only admin APIs. You can find the details in the following official documentations.

Considerations and limitations

Supported APIs

vyiruanmsft_0-1692093156178.png

Best Regards

Helpful resources

Announcements
August Power BI Update Carousel

Power BI Monthly Update - August 2025

Check out the August 2025 Power BI update to learn about new features.

August 2025 community update carousel

Fabric Community Update - August 2025

Find out what's new and trending in the Fabric community.