Microsoft Power BI (Client Credentials)
Integrate your application with the Microsoft Power BI API using a service principal (client credentials)
🚀 Quickstart
Connect to Microsoft Power BI with Tenklo and see data flow in 2 minutes.
In Tenklo (free signup), go to Integrations -> Configure New Integration -> Microsoft Power BI (Client Credentials).
Go to Connections -> Add Test Connection -> Connect, then enter your Tenant ID, Client ID, and Client Secret. Later, you'll let your users do the same directly from your app.
Call the Microsoft Power BI API
Let's make your first request to the Power BI API (list the workspaces your service principal can access). Replace the placeholders below with your API key, integration ID, and connection ID:
curl "https://api.tenklo.dev/proxy/v1.0/myorg/groups" \
-H "Authorization: Bearer <NANGO-API-KEY>" \
-H "Provider-Config-Key: <INTEGRATION-ID>" \
-H "Connection-Id: <CONNECTION-ID>"Or fetch credentials with the Node SDK or API.
✅ You're connected! Check the Logs tab in Tenklo to inspect requests.
Follow our Auth implementation guide to integrate Tenklo in your app.
To obtain your own production credentials, follow the setup guide linked below.
📚 Microsoft Power BI (Client Credentials) integration guides
Nango-maintained guides for common use cases.
- How do I link my account? Connect using an Entra ID app registered as a Power BI service principal
Official docs: Power BI REST API
🧩 Pre-built syncs & actions for Microsoft Power BI (Client Credentials)
Explore Nango-provided actions in your dashboard. Extend and customize them to fit your needs.
Others
| Function name | Description | Type | Source code |
|---|---|---|---|
add-dataset-rows | Append rows of data to a push-dataset table. | Action | 🔗 Github |
add-workspace-user | Grant a user or service principal access to a workspace. | Action | 🔗 Github |
create-dashboard | Create a new, empty dashboard in a workspace. | Action | 🔗 Github |
create-push-dataset | Create a new dataset with an explicit table/column schema in push mode, ready to receive rows via the API without needing a .pbix file. | Action | 🔗 Github |
create-workspace | Create a new Power BI workspace. | Action | 🔗 Github |
delete-dataset-rows | Delete all rows from a push-dataset table (truncate) | Action | 🔗 Github |
delete-dataset | Delete a dataset. | Action | 🔗 Github |
delete-workspace | Delete a workspace. | Action | 🔗 Github |
execute-dataset-queries | Run a DAX query against a dataset and return the results | Action | 🔗 Github |
get-dataset-refresh-schedule | Get the configured refresh schedule for a dataset. | Action | 🔗 Github |
get-dataset | Get details of a single dataset. | Action | 🔗 Github |
get-workspace | Get details of a single workspace. | Action | 🔗 Github |
list-dashboard-tiles | List the tiles on a dashboard. | Action | 🔗 Github |
list-dashboards | List dashboards in a workspace. | Action | 🔗 Github |
list-dataflows | List dataflows in a workspace | Action | 🔗 Github |
list-dataset-datasources | List the data sources backing a dataset. | Action | 🔗 Github |
list-dataset-refresh-history | List the refresh history of a dataset. | Action | 🔗 Github |
list-dataset-users | List users and service principals with direct access to a dataset. | Action | 🔗 Github |
list-datasets | List datasets in a workspace. | Action | 🔗 Github |
list-gateways | List on-premises data gateways visible to this service principal. | Action | 🔗 Github |
list-reports | List reports in a workspace. | Action | 🔗 Github |
list-workspace-users | List users and service principals with access to a workspace. | Action | 🔗 Github |
list-workspaces | List Power BI workspaces (groups) accessible to this service principal. | Action | 🔗 Github |
refresh-dataset | Trigger a refresh of a dataset. | Action | 🔗 Github |
takeover-dataset | Transfer ownership of a dataset's data source credentials to the caller. | Action | 🔗 Github |
update-dataset-refresh-schedule | Configure the automatic refresh schedule for a dataset. | Action | 🔗 Github |
update-dataset-table-schema | Replace a push dataset table's column schema. | Action | 🔗 Github |
update-workspace | Rename a workspace. | Action | 🔗 Github |
datasets | Sync datasets across all workspaces accessible to this service principal. | Sync | 🔗 Github |
workspaces | Sync Power BI workspaces (groups) accessible to this service principal. | Sync | 🔗 Github |
API gotchas
- Power BI's app-only auth isn't gated by Microsoft Graph permissions alone — a Power BI tenant admin must also enable Allow service principals to use Power BI APIs (and, if scoping to a security group, add the app to that group) in the Fabric admin portal's tenant settings. Without this, requests fail even with a valid token and correct application permissions.
- A service principal only sees workspaces it's been added to as a viewer, contributor, member, or admin (
/v1.0/myorg/groups). To read tenant-wide without per-workspace membership, use the Admin API (/v1.0/myorg/admin/groups) — this requires enabling Service principals can access read-only admin APIs in the Fabric admin portal (separate from the base tenant setting above). No Microsoft Entra API permission is needed:Tenant.Read.All/Tenant.ReadWrite.Allare delegated-only scopes and don't apply to service principals.