Forum Discussion
Help: Web API works in Desktop but disconnected in Service
- 11 months ago
Hi Chief,
the first step is to create a free Azure account at https://azure.microsoft.com/free.
Once signed in, they should go to the Azure portal and register a new app under Azure Active Directory > App registrations and name the app (e.g., “PowerBI_API_App”), choose “Single tenant,”. After registering, generate a client secret under “Certificates & secrets” and copy the value immediately, as it won’t be shown again.Next, assign API permissions to the app by going to “API permissions,” selecting “Power BI Service,” and adding delegated permissions like Dataset.Read.All, Report.Read.All, and Workspace.Read.All. Admin consent must be granted for these permissions to take effect.
Then, in the Power BI Admin Portal (https://app.powerbi.com/admin-portal), enable tenant settings to allow service principals to use Power BI APIs and access workspaces. Finally, go to the Power BI workspace, click “Access,” and add the registered app (service principal) with a role like Member or Admin.
This setup allows Power BI Service to authenticate securely using the app instead of relying on unsupported API key headers.
Hope above setup resolves your query and with little research you will be able overcome permission issues in your usecase mentioned above
Thanks,
Prashanth Are
MS fabric community support
Power BI Service can’t handle custom header auth directly.
Works in Desktop but fails in Service because Service doesn’t store API header credentials.
Fix: Install and use an On-premises data gateway (personal) → keep your Web.Contents with headers in Power Query.
Alternative: If API allows, switch to Basic Auth (username/password) or query string keys so you can set credentials directly in Service.
👉 Easiest solution: Use a gateway for the Web API connection.
Shahid12523 thanks for the response. When estabilishing on premis data gateway test connection fails to authenticate. I've tried Anonymous, Basic, etc. but none will allow connection. Result is: credentials provided for the source are invalid. I'm not sure what credentials they are looking for, my standard username and password to log into the web application or something else. Nothing seems to work.