Everything an AI agent can do with the Power BI API.

A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.

Endpoints38
API versionv1.0
Last updated23 June 2026
Orientation

How the Power BI API works.

The Power BI API is how an app or AI agent works with a Power BI tenant: listing and refreshing datasets, exporting a report to a file, creating a workspace, or uploading a published file. Access is granted through a Microsoft Entra ID token and a set of permissions, given either as a signed-in user's delegated scopes or as a service principal whose access is controlled in the Power BI admin portal, and a call reaches only the workspaces and items behind that identity. The API has no general event push, so an agent polls for activity like a dataset's refresh history or an export job's status.

38Endpoints
10Capability groups
16Read
22Write
12Permissions
Authentication
Every call authenticates with a Microsoft Entra ID (Azure AD) OAuth 2.0 bearer token, obtained by a registered Azure AD application. A token can act on behalf of a signed-in user, carrying delegated scopes like Dataset.Read.All, or it can belong to a service principal that calls the API as itself for unattended automation. The base path is https://api.powerbi.com/v1.0/myorg, and most operations target a workspace as /groups/{groupId}/...
Permissions
Delegated access uses Power BI Service scopes added to the app under API permissions in Azure, each typically paired as a read scope and a write scope, such as Dataset.Read.All versus Dataset.ReadWrite.All, and the same shape for Report, Dashboard, Dataflow, Workspace, and Capacity. When a service principal is used instead, those Azure AD scopes no longer apply: its access is controlled in the Power BI admin portal and by the workspace roles it is granted. A 403 means the scope or the workspace access is missing.
Versioning
The REST API is served under a single path-based version, v1.0, in the path itself (/v1.0/myorg). There is no dated version header to pin and no per-request version negotiation. Microsoft adds new operations to the same surface over time rather than releasing breaking dated versions, so an integration tracks the one current version.
Data model
The API is organized into operation groups: Datasets (semantic models), Reports, Dashboards and their Tiles, Groups (workspaces), Imports, Dataflows, Gateways, Capacities, Push Datasets, and Embed Token, plus Admin operations for tenant-wide governance. Most operations come in a My workspace form and an In Group form that targets a specific workspace by ID. A workspace is called a group throughout the API. Long-running work, like a dataset refresh or a report export, is asynchronous: the call returns an ID and the result is polled.
Connect & authenticate

Connection & authentication methods.

How an app or AI agent connects to Power BI determines what it can reach. There is the REST API for calls, a hosted server that exposes Power BI tools to agents, and an embed-token route for handing limited access to an embedded view, and each is governed by the Microsoft Entra ID identity behind it and the permissions that identity carries.

Ways to connect

REST API

The Power BI REST API answers at https://api.powerbi.com under a single path-based version, https://api.powerbi.com/v1.0/myorg. It takes JSON request bodies and returns JSON, and a call authenticates with a Microsoft Entra ID (Azure AD) OAuth 2.0 bearer token. Most paths target a specific workspace as /groups/{groupId}/..., where a group is a workspace.

Best forConnecting an app or AI agent to Power BI.
Governed byThe Entra ID token and the delegated scopes or service principal permissions it carries.
Docs ↗

MCP servers (Model Context Protocol)

Microsoft ships two first-party Power BI MCP servers, both in public preview. The remote server is a Fabric-hosted endpoint, reached over streamable HTTP and authenticated with Microsoft Entra ID, that lets an agent query semantic models in natural language by generating and running DAX with the authenticated user's permissions. The local Power BI Modeling MCP server runs over stdio and exposes tools to build and modify semantic models, validate DAX, and run bulk operations, authenticating with Entra ID or a service principal.

Best forConnecting an AI agent to Power BI through MCP.
Governed byThe Entra ID identity and the Fabric role-based access it carries.
Docs ↗

Embed token

An embed token is a short-lived token generated through the REST API that grants an embedded application access to named reports, datasets, and workspaces, optionally with row-level security identities. It is used in the embed-for-customers scenario so that end users do not each need a Power BI account, and it scopes access to only the content named when it was generated.

Best forHanding limited, time-boxed access to an embedded Power BI view.
Governed byThe scopes named when the token is generated and its lifetime.
Docs ↗
Authentication

Azure AD delegated (user) permissions

A registered Microsoft Entra ID application signs a user in and receives a token carrying delegated scopes on the Power BI Service, like Dataset.Read.All or Report.ReadWrite.All. The token acts as that user, so it reaches only what the user can reach, narrowed further by the scopes consented to. Scopes are added to the app under API permissions in Azure.

TokenOAuth 2.0 bearer token (Microsoft Entra ID)
Best forActing on behalf of a signed-in user.
Docs ↗

Service principal

A service principal lets an application call the API as itself, with no signed-in user. When a service principal is enabled, the app's Azure AD scopes no longer apply; access is instead controlled in the Power BI admin portal and by the workspace roles the principal is granted. This is the usual choice for unattended automation.

TokenOAuth 2.0 bearer token (client credentials)
Best forUnattended automation and server-to-server calls.
Docs ↗

Embed token

An embed token is minted by a backend through the REST API and passed to an embedded view in the browser. It is limited to the reports, datasets, and workspaces named at generation time, can carry row-level security identities, and expires after its set lifetime.

TokenPower BI embed token
Best forEmbedding Power BI content for users without their own Power BI accounts.
Docs ↗
Capability map

What an AI agent can do in Power BI.

The Power BI API is split into areas an agent can act on, like datasets (semantic models), reports, dashboards, workspaces, imports, dataflows, and gateways. Each area has its own methods, and a write in some areas refreshes data, replaces report content, or moves a workspace onto a capacity.

Datasets (semantic models)

8 endpoints

List, read, refresh, and delete datasets, read their refresh history and data sources, update parameters, and bind a dataset to a gateway.

A write here refreshes data, changes a dataset's connections, or deletes it.
View endpoints

Push datasets

4 endpoints

Create a push dataset, list its tables, push rows of data into a table, and clear a table's rows.

A write here adds or removes the rows that feed a streaming or push dataset.
View endpoints

Reports

7 endpoints

List, read, clone, and delete reports, export a report to a file, and replace a report's content.

A write here clones, deletes, or overwrites a report.
View endpoints

Dashboards & tiles

4 endpoints

List and read dashboards, create a dashboard, and list, read, and clone the tiles on it.

A write here creates a dashboard or clones a tile.
View endpoints

Workspaces (groups)

4 endpoints

List the workspaces a user can reach, read one, create a workspace, delete it, and manage who has access.

A write here creates or deletes a workspace, or grants someone access to it.
View endpoints

Imports

2 endpoints

Upload a .pbix, .rdl, .xlsx, or .json file into a workspace, list imports, and read a single import's status.

A write here publishes new content into a workspace from an uploaded file.
View endpoints

Dataflows

3 endpoints

List and read dataflows, trigger a dataflow refresh, list its transactions, and delete a dataflow.

A write here refreshes or deletes a dataflow.
View endpoints

Gateways

3 endpoints

List the gateways a user administers, read one, list its data sources, and create a data source on it.

A write here creates a data source or updates its stored credentials on a gateway.
View endpoints

Capacities

2 endpoints

List the capacities a user can reach and assign a workspace to a capacity.

A write here moves a workspace onto a capacity.
View endpoints

Embed tokens

1 endpoint

Generate a short-lived embed token that lets an embedded application view or edit specific reports, datasets, and workspaces.

A write here mints a token that grants embedded access to the named content.
View endpoints
Endpoint reference

Every Power BI API method.

Filter by method, access, or permission, or search any path. Select a row for version detail, rate limits, the related webhook event, and the source.

MethodEndpointWhat it doesAccessPermissionVersion

Datasets (semantic models)

List, read, refresh, and delete datasets, read their refresh history and data sources, update parameters, and bind a dataset to a gateway.8

Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Granted as an Azure AD delegated permission on the Power BI Service.

Acts ondataset
Permission (capability)Dataset.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All or Dataset.Read.All.

Acts ondataset
Permission (capability)Dataset.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All. Returns 202 Accepted with a Location header to poll for status.

Acts ondataset
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitShared capacity: 8 refreshes per day per dataset, including scheduled refreshes.

Required scope: Dataset.ReadWrite.All or Dataset.Read.All. There are 20 to 60 history entries available, depending on refreshes in the last 3 days.

Acts ondataset
Permission (capability)Dataset.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All. Deleting a dataset removes the reports and dashboards built on it.

Acts ondataset
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All. Changes values like a server name or a date used in the model's queries.

Acts ondataset
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All or Dataset.Read.All.

Acts ondatasource
Permission (capability)Dataset.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All. Points the dataset at the gateway used to reach its on-premises sources.

Acts ondataset
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Push datasets

Create a push dataset, list its tables, push rows of data into a table, and clear a table's rows.4

Required scope: Dataset.ReadWrite.All. A push dataset has at most 75 tables and 75 columns.

Acts ondataset
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Only supports push datasets.

Acts ontable
Permission (capability)Dataset.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All. Only supports push datasets.

Acts onrow
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limit120 POST rows requests per minute per dataset; at most 10,000 rows per request and 1,000,000 rows per hour.

Required scope: Dataset.ReadWrite.All. Clears the whole table; only supports push datasets.

Acts onrow
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Reports

List, read, clone, and delete reports, export a report to a file, and replace a report's content.7

Required scope: Report.ReadWrite.All or Report.Read.All.

Acts onreport
Permission (capability)Report.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Report.ReadWrite.All or Report.Read.All.

Acts onreport
Permission (capability)Report.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Report.ReadWrite.All.

Acts onreport
Permission (capability)Report.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Report.ReadWrite.All.

Acts onreport
Permission (capability)Report.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scopes (all): Report.ReadWrite.All or Report.Read.All, plus Dataset.ReadWrite.All or Dataset.Read.All. Returns 202; poll Get Export To File Status for the result.

Acts onreport
Permission (capability)Report.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Report.ReadWrite.All or Report.Read.All. Used to poll an export job started by Export To File.

Acts onexport
Permission (capability)Report.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Report.ReadWrite.All. Overwrites the report's pages and visuals in place.

Acts onreport
Permission (capability)Report.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Dashboards & tiles

List and read dashboards, create a dashboard, and list, read, and clone the tiles on it.4

Required scope: Dashboard.ReadWrite.All or Dashboard.Read.All.

Acts ondashboard
Permission (capability)Dashboard.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dashboard.ReadWrite.All.

Acts ondashboard
Permission (capability)Dashboard.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dashboard.ReadWrite.All or Dashboard.Read.All.

Acts ontile
Permission (capability)Dashboard.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dashboard.ReadWrite.All.

Acts ontile
Permission (capability)Dashboard.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Workspaces (groups)

List the workspaces a user can reach, read one, create a workspace, delete it, and manage who has access.4

Required scope: Workspace.Read.All or Workspace.ReadWrite.All. A workspace is called a group in the API.

Acts onworkspace
Permission (capability)Workspace.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Workspace.ReadWrite.All. A service principal needs the Fabric admin setting that lets it create workspaces.

Acts onworkspace
Permission (capability)Workspace.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Workspace.ReadWrite.All. Deletes the workspace and its contents.

Acts onworkspace
Permission (capability)Workspace.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Workspace.ReadWrite.All. Sets a role like Admin, Member, Contributor, or Viewer.

Acts onworkspace
Permission (capability)Workspace.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Imports

Upload a .pbix, .rdl, .xlsx, or .json file into a workspace, list imports, and read a single import's status.2

Required scope: Dataset.ReadWrite.All. The datasetDisplayName query parameter names the file; files over 1 GB use a temporary upload location.

Acts onimport
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Used to track an upload to completion.

Acts onimport
Permission (capability)Dataset.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Dataflows

List and read dataflows, trigger a dataflow refresh, list its transactions, and delete a dataflow.3

Required scope: Dataflow.ReadWrite.All or Dataflow.Read.All.

Acts ondataflow
Permission (capability)Dataflow.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataflow.ReadWrite.All.

Acts ondataflow
Permission (capability)Dataflow.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataflow.ReadWrite.All.

Acts ondataflow
Permission (capability)Dataflow.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Gateways

List the gateways a user administers, read one, list its data sources, and create a data source on it.3

Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Returns only gateways the caller is an admin of.

Acts ongateway
Permission (capability)Dataset.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All or Dataset.Read.All.

Acts ondatasource
Permission (capability)Dataset.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scope: Dataset.ReadWrite.All. Credentials must be encrypted with the gateway's public key.

Acts ondatasource
Permission (capability)Dataset.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Capacities

List the capacities a user can reach and assign a workspace to a capacity.2

Required scope: Capacity.Read.All or Capacity.ReadWrite.All.

Acts oncapacity
Permission (capability)Capacity.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Required scopes: Capacity.ReadWrite.All and Workspace.ReadWrite.All. Moves the workspace onto dedicated capacity.

Acts oncapacity
Permission (capability)Capacity.ReadWrite.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply

Embed tokens

Generate a short-lived embed token that lets an embedded application view or edit specific reports, datasets, and workspaces.1

Required scopes (as applicable): Report.ReadWrite.All or Report.Read.All, Dataset.ReadWrite.All or Dataset.Read.All, plus Content.Create when a target workspace is named. For the embed-for-customers scenario. At most 50 reports, datasets, or workspaces.

Acts onembed token
Permission (capability)Report.Read.All
VersionAvailable since the API’s base version
Webhook eventNone
Rate limitStandard limits apply
No endpoints match those filters.
Webhooks

Webhook events.

Power BI does not offer a general webhook system on the REST API. An agent learns about activity by polling, like checking a dataset's refresh history or an export job's status, rather than receiving a pushed event.

EventWhat it signalsTriggered by
No events match that search.
Rate limits & pagination

Rate limits, pagination & request size.

Power BI limits how fast an app or AI agent can call, by a per-user request rate measured within a time window, with several operations carrying their own tighter ceilings.

Request rate

Power BI throttles by counting how many requests a single user sends within a time window. When the limit is passed, further requests from that user return HTTP 429 (Too many requests) with a Retry-After header giving the number of seconds to wait. Several operations carry their own tighter ceilings on top of the general rate, noted on the relevant rows: triggering a dataset refresh is capped at eight per day on shared capacity, and pushing rows into a push dataset is held to 120 requests per minute per dataset. Some admin read operations are limited to as few as 50 requests per hour.

Pagination

List operations return an OData response with a value array, and a $top and $skip query option can page through larger result sets where supported. Admin list operations expose continuationUri and continuationToken to page through long results. Many workspace-scoped lists return the full set without paging.

Request size

A push dataset has at most 75 tables, 75 columns, and 75 relationships. A single push-rows request takes at most 10,000 rows, with 1,000,000 rows per hour per dataset, and a string column value is capped at 4,000 characters. Importing a .pbix file over 1 GB (up to 10 GB) requires a temporary upload location and a Premium capacity workspace.

Errors

Status codes & error handling.

The status codes an agent should handle, and what to do about each.

StatusCodeMeaningWhat to do
401UnauthorizedNo valid Microsoft Entra ID token was provided, or the token has expired.Acquire a fresh token from Microsoft Entra ID and resend with the Authorization: Bearer header.
403ForbiddenThe token is valid but lacks the required scope or the user or service principal lacks access to the workspace or item.Grant the needed scope on the app registration, or give the user or service principal access to the workspace.
404NotFoundThe workspace, dataset, report, or other item does not exist or is not visible to the caller.Confirm the ID is correct and the caller has access to the workspace it lives in.
429TooManyRequestsThe per-user request rate within the time window was exceeded, so further requests are throttled for a short period.Wait the number of seconds in the Retry-After header before retrying, and smooth the request rate.
500InternalServerErrorAn error occurred on the Power BI service side.Retry with backoff, and include the RequestId response header when contacting Microsoft support.
Versioning & freshness

Version history.

The Power BI REST API is served under a single path-based version and does not pin a dated version per request. Microsoft adds new operations to the same surface over time rather than minting breaking dated versions.

Version history

What changed, and when

Latest versionv1.0
v1.0Current version
Current path-based version

The Power BI REST API is served under a single path-based version, v1.0, carried in the request path as /v1.0/myorg. There is no dated version header and no per-request version negotiation. Microsoft adds new operation groups and operations to this same surface over time rather than minting breaking dated versions, so an integration tracks the one current version. Recent additions to the v1.0 surface include enhanced (asynchronous) dataset refresh, the report Export To File job flow, and the Execute Queries operation for running DAX against a dataset.

What changed
  • Enhanced refresh: Refresh Dataset In Group accepts type, commitMode, objects, and other parameters for asynchronous, partition-level refresh.
  • Reports: Export To File started an asynchronous job flow exporting to PDF, PPTX, PNG, and paginated formats.
  • Datasets: Execute Queries and Execute Dax Queries run DAX against a dataset and return results.
  • Dataflows: CI/CD operations such as saving a Gen1 dataflow as Gen2 added in preview.
2022-12-09Feature update
Enhanced refresh reached general availability

Enhanced refresh through the Power BI REST API, formerly called asynchronous refresh, moved from public preview to general availability. It lets Refresh Dataset In Group run an asynchronous, partition-level refresh with parameters like type, commitMode, and objects, plus built-in reliability features such as auto retries and batched commits. It is available on Premium, Premium Per User, and Embedded capacities.

What changed
  • Refresh Dataset In Group accepts a request body beyond notifyOption to trigger an enhanced refresh.
  • Partition-level and table-level refresh through the objects array.
  • Auto retries, batched commits, and a pollable refresh request ID.
2022-05-25Feature update
Execute Queries DAX REST API reached general availability

The Execute Queries operation, which runs Data Analysis Expressions (DAX) queries against a dataset and returns the results, moved from public preview to general availability. It lets an app or AI agent read data out of a semantic model without rendering a report.

What changed
  • Execute Queries and Execute Dax Queries run DAX against a dataset and return tabular results.
  • Available for datasets in My workspace and in a workspace.

There is one current path-based version; new operations are added to the same surface.

Power BI REST API reference ↗
Questions

Power BI API, answered.

Why does the API call workspaces 'groups'?+
Power BI workspaces are still called groups in the REST API for historical reasons. Any path with /groups/{groupId} is operating on a workspace, and {groupId} is the workspace ID. The documentation notes this directly: a reference to groups means a call is working with workspaces.
How do I authenticate, and what's the difference between a user token and a service principal?+
Both are Microsoft Entra ID OAuth 2.0 bearer tokens from a registered Azure AD app. A delegated (user) token signs a user in and carries the scopes consented to, so it reaches only what that user can reach. A service principal calls the API as the application itself with no user, which suits unattended automation; once a service principal is enabled, the app's Azure AD scopes stop applying and access is managed in the Power BI admin portal and through workspace roles.
What scopes does an operation need?+
Most areas pair a read scope and a write scope. A read like Get Datasets accepts Dataset.Read.All or Dataset.ReadWrite.All, while a write like Refresh Dataset In Group needs Dataset.ReadWrite.All. The same pattern covers Report, Dashboard, Dataflow, Workspace, and Capacity. Some operations need more than one: Export To File needs a Report scope and a Dataset scope, and creating a workspace needs Workspace.ReadWrite.All. Each operation's reference page lists its Required Scope.
Does Power BI support webhooks?+
The Power BI REST API does not offer a general webhook system for pushing events. An agent learns about activity by polling instead, such as reading a dataset's refresh history, checking the status of an export job, or reading an import's state. The separate Fabric platform offers event-driven options outside this API.
How does a dataset refresh work through the API?+
Refresh Dataset In Group is a POST that returns 202 Accepted with a Location header. A plain refresh sets only notifyOption; an enhanced (asynchronous) refresh sets other parameters like type, commitMode, or objects and omits notifyOption. Progress is polled through the refresh's request ID. On shared capacity, refreshes are capped at eight per day per dataset, including scheduled ones, and enhanced refresh is not supported there.
What are the rate limits?+
Power BI throttles per user within a time window and returns HTTP 429 with a Retry-After header saying how many seconds to wait. Specific operations are tighter: a dataset refresh is limited to eight per day on shared capacity, pushing rows is held to 120 requests per minute per dataset with at most 10,000 rows per request and 1,000,000 per hour, and some admin reads allow as few as 50 requests per hour.
How do I publish a .pbix file through the API?+
Use Post Import In Group, a multipart/form-data POST to /groups/{groupId}/imports with the file in the body and datasetDisplayName set to the file name. It needs Dataset.ReadWrite.All and returns an import ID, polled with Get Import In Group until its state is Succeeded. Files between 1 GB and 10 GB are uploaded to a temporary blob location first and require a Premium capacity workspace.
Related

More analytics API guides for agents

What is Bollard AI?

Control what every AI agent can do in Power BI.

Bollard AI sits between a team's AI agents and Power BI. Grant each agent exactly the access it needs, read or write, resource by resource, and every call is checked and logged.

  • Set read, write, or full access per agent, never a shared Power BI app registration.
  • Denied by default, so an agent reaches only what has been explicitly allowed.
  • Every call recorded in plain English: who, what, where, and the decision.
Power BI
Analytics Agent
Read datasets ResourceOffReadFull use
Refresh a dataset ActionOffReadFull use
Create workspaces ActionOffReadFull use
Per-agent access, set in Bollard AI, not in Power BI