A reference guide for building AI agents: every method, how to authenticate, and the permissions each one needs.
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.
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.
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.
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.
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.
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.
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.
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.
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.
List, read, refresh, and delete datasets, read their refresh history and data sources, update parameters, and bind a dataset to a gateway.
Create a push dataset, list its tables, push rows of data into a table, and clear a table's rows.
List, read, clone, and delete reports, export a report to a file, and replace a report's content.
List and read dashboards, create a dashboard, and list, read, and clone the tiles on it.
List the workspaces a user can reach, read one, create a workspace, delete it, and manage who has access.
Upload a .pbix, .rdl, .xlsx, or .json file into a workspace, list imports, and read a single import's status.
List and read dataflows, trigger a dataflow refresh, list its transactions, and delete a dataflow.
List the gateways a user administers, read one, list its data sources, and create a data source on it.
List the capacities a user can reach and assign a workspace to a capacity.
Generate a short-lived embed token that lets an embedded application view or edit specific reports, datasets, and workspaces.
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.
| Method | Endpoint | What it does | Access | Permission | Version | |
|---|---|---|---|---|---|---|
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 | ||||||
| GET | /v1.0/myorg/groups/{groupId}/datasets | Return a list of datasets (semantic models) in the specified workspace. | read | Dataset.Read.All | Current | |
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.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/groups/{groupId}/datasets/{datasetId} | Return the specified dataset from the specified workspace. | read | Dataset.Read.All | Current | |
Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Acts ondataset Permission (capability) Dataset.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes | Trigger a refresh for the specified dataset. An enhanced (asynchronous) refresh runs when a request body beyond notifyOption is set. | write | Dataset.ReadWrite.All | Current | |
Required scope: Dataset.ReadWrite.All. Returns 202 Accepted with a Location header to poll for status. Acts ondataset Permission (capability) Dataset.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitShared capacity: 8 refreshes per day per dataset, including scheduled refreshes. SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes | Return the refresh history for the specified dataset. | read | Dataset.Read.All | Current | |
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.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| DELETE | /v1.0/myorg/groups/{groupId}/datasets/{datasetId} | Delete the specified dataset from the specified workspace. | write | Dataset.ReadWrite.All | Current | |
Required scope: Dataset.ReadWrite.All. Deleting a dataset removes the reports and dashboards built on it. Acts ondataset Permission (capability) Dataset.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/datasets/{datasetId}/Default.UpdateParameters | Update the parameter values for the specified dataset. | write | Dataset.ReadWrite.All | Current | |
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.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/groups/{groupId}/datasets/{datasetId}/datasources | Return a list of data sources for the specified dataset. | read | Dataset.Read.All | Current | |
Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Acts ondatasource Permission (capability) Dataset.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/datasets/{datasetId}/Default.BindToGateway | Bind the specified dataset to the specified on-premises data gateway. | write | Dataset.ReadWrite.All | Current | |
Required scope: Dataset.ReadWrite.All. Points the dataset at the gateway used to reach its on-premises sources. Acts ondataset Permission (capability) Dataset.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Push datasetsCreate a push dataset, list its tables, push rows of data into a table, and clear a table's rows.4 | ||||||
| POST | /v1.0/myorg/groups/{groupId}/datasets | Create a new push dataset, defining its tables and columns, in the specified workspace. | write | Dataset.ReadWrite.All | Current | |
Required scope: Dataset.ReadWrite.All. A push dataset has at most 75 tables and 75 columns. Acts ondataset Permission (capability) Dataset.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/groups/{groupId}/datasets/{datasetId}/tables | Return a list of tables within the specified push dataset. | read | Dataset.Read.All | Current | |
Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Only supports push datasets. Acts ontable Permission (capability) Dataset.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/datasets/{datasetId}/tables/{tableName}/rows | Add new data rows to the specified table within a push dataset. | write | Dataset.ReadWrite.All | Current | |
Required scope: Dataset.ReadWrite.All. Only supports push datasets. Acts onrow Permission (capability) Dataset.ReadWrite.AllVersionAvailable 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. SourceOfficial documentation ↗ | ||||||
| DELETE | /v1.0/myorg/groups/{groupId}/datasets/{datasetId}/tables/{tableName}/rows | Delete all rows from the specified table within a push dataset. | write | Dataset.ReadWrite.All | Current | |
Required scope: Dataset.ReadWrite.All. Clears the whole table; only supports push datasets. Acts onrow Permission (capability) Dataset.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
ReportsList, read, clone, and delete reports, export a report to a file, and replace a report's content.7 | ||||||
| GET | /v1.0/myorg/groups/{groupId}/reports | Return a list of reports from the specified workspace. | read | Report.Read.All | Current | |
Required scope: Report.ReadWrite.All or Report.Read.All. Acts onreport Permission (capability) Report.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/groups/{groupId}/reports/{reportId} | Return the specified report from the specified workspace. | read | Report.Read.All | Current | |
Required scope: Report.ReadWrite.All or Report.Read.All. Acts onreport Permission (capability) Report.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/reports/{reportId}/Clone | Clone the specified report, optionally into a different workspace and onto a different dataset. | write | Report.ReadWrite.All | Current | |
Required scope: Report.ReadWrite.All. Acts onreport Permission (capability) Report.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| DELETE | /v1.0/myorg/groups/{groupId}/reports/{reportId} | Delete the specified report from the specified workspace. | write | Report.ReadWrite.All | Current | |
Required scope: Report.ReadWrite.All. Acts onreport Permission (capability) Report.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/reports/{reportId}/ExportTo | Start an asynchronous job to export the specified report to a file, such as PDF, PPTX, or PNG. | write | Report.Read.All | Current | |
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.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/groups/{groupId}/reports/{reportId}/exports/{exportId} | Return the current status of an Export To File job for the specified report. | read | Report.Read.All | Current | |
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.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/reports/{reportId}/UpdateReportContent | Replace the content of the specified report with the content of a source report. | write | Report.ReadWrite.All | Current | |
Required scope: Report.ReadWrite.All. Overwrites the report's pages and visuals in place. Acts onreport Permission (capability) Report.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Dashboards & tilesList and read dashboards, create a dashboard, and list, read, and clone the tiles on it.4 | ||||||
| GET | /v1.0/myorg/groups/{groupId}/dashboards | Return a list of dashboards from the specified workspace. | read | Dashboard.Read.All | Current | |
Required scope: Dashboard.ReadWrite.All or Dashboard.Read.All. Acts ondashboard Permission (capability) Dashboard.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/dashboards | Create a new empty dashboard in the specified workspace. | write | Dashboard.ReadWrite.All | Current | |
Required scope: Dashboard.ReadWrite.All. Acts ondashboard Permission (capability) Dashboard.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/groups/{groupId}/dashboards/{dashboardId}/tiles | Return a list of tiles within the specified dashboard. | read | Dashboard.Read.All | Current | |
Required scope: Dashboard.ReadWrite.All or Dashboard.Read.All. Acts ontile Permission (capability) Dashboard.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/dashboards/{dashboardId}/tiles/{tileId}/Clone | Clone the specified tile, optionally onto another dashboard. | write | Dashboard.ReadWrite.All | Current | |
Required scope: Dashboard.ReadWrite.All. Acts ontile Permission (capability) Dashboard.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Workspaces (groups)List the workspaces a user can reach, read one, create a workspace, delete it, and manage who has access.4 | ||||||
| GET | /v1.0/myorg/groups | Return a list of workspaces the user has access to. | read | Workspace.Read.All | Current | |
Required scope: Workspace.Read.All or Workspace.ReadWrite.All. A workspace is called a group in the API. Acts onworkspace Permission (capability) Workspace.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups | Create a new workspace. | write | Workspace.ReadWrite.All | Current | |
Required scope: Workspace.ReadWrite.All. A service principal needs the Fabric admin setting that lets it create workspaces. Acts onworkspace Permission (capability) Workspace.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| DELETE | /v1.0/myorg/groups/{groupId} | Delete the specified workspace. | write | Workspace.ReadWrite.All | Current | |
Required scope: Workspace.ReadWrite.All. Deletes the workspace and its contents. Acts onworkspace Permission (capability) Workspace.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/users | Grant a user, group, or service principal the specified access to the workspace. | write | Workspace.ReadWrite.All | Current | |
Required scope: Workspace.ReadWrite.All. Sets a role like Admin, Member, Contributor, or Viewer. Acts onworkspace Permission (capability) Workspace.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
ImportsUpload a .pbix, .rdl, .xlsx, or .json file into a workspace, list imports, and read a single import's status.2 | ||||||
| POST | /v1.0/myorg/groups/{groupId}/imports | Publish new content into a workspace by uploading a .pbix, .rdl, .xlsx, or .json file. | write | Dataset.ReadWrite.All | Current | |
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.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/groups/{groupId}/imports/{importId} | Return the specified import, including whether it succeeded, is publishing, or failed. | read | Dataset.Read.All | Current | |
Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Used to track an upload to completion. Acts onimport Permission (capability) Dataset.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
DataflowsList and read dataflows, trigger a dataflow refresh, list its transactions, and delete a dataflow.3 | ||||||
| GET | /v1.0/myorg/groups/{groupId}/dataflows | Return a list of all dataflows in the specified workspace. | read | Dataflow.Read.All | Current | |
Required scope: Dataflow.ReadWrite.All or Dataflow.Read.All. Acts ondataflow Permission (capability) Dataflow.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/dataflows/{dataflowId}/refreshes | Trigger a refresh for the specified dataflow. | write | Dataflow.ReadWrite.All | Current | |
Required scope: Dataflow.ReadWrite.All. Acts ondataflow Permission (capability) Dataflow.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| DELETE | /v1.0/myorg/groups/{groupId}/dataflows/{dataflowId} | Delete a dataflow, including its definition file and model, from Power BI data prep storage. | write | Dataflow.ReadWrite.All | Current | |
Required scope: Dataflow.ReadWrite.All. Acts ondataflow Permission (capability) Dataflow.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
GatewaysList the gateways a user administers, read one, list its data sources, and create a data source on it.3 | ||||||
| GET | /v1.0/myorg/gateways | Return a list of on-premises data gateways the user administers. | read | Dataset.Read.All | Current | |
Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Returns only gateways the caller is an admin of. Acts ongateway Permission (capability) Dataset.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| GET | /v1.0/myorg/gateways/{gatewayId}/datasources | Return a list of data sources configured on the specified gateway. | read | Dataset.Read.All | Current | |
Required scope: Dataset.ReadWrite.All or Dataset.Read.All. Acts ondatasource Permission (capability) Dataset.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/gateways/{gatewayId}/datasources | Create a new data source, with its connection details and credentials, on the specified gateway. | write | Dataset.ReadWrite.All | Current | |
Required scope: Dataset.ReadWrite.All. Credentials must be encrypted with the gateway's public key. Acts ondatasource Permission (capability) Dataset.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
CapacitiesList the capacities a user can reach and assign a workspace to a capacity.2 | ||||||
| GET | /v1.0/myorg/capacities | Return a list of capacities the user has access to. | read | Capacity.Read.All | Current | |
Required scope: Capacity.Read.All or Capacity.ReadWrite.All. Acts oncapacity Permission (capability) Capacity.Read.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
| POST | /v1.0/myorg/groups/{groupId}/AssignToCapacity | Assign the specified workspace to the specified capacity. | write | Capacity.ReadWrite.All | Current | |
Required scopes: Capacity.ReadWrite.All and Workspace.ReadWrite.All. Moves the workspace onto dedicated capacity. Acts oncapacity Permission (capability) Capacity.ReadWrite.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
Embed tokensGenerate a short-lived embed token that lets an embedded application view or edit specific reports, datasets, and workspaces.1 | ||||||
| POST | /v1.0/myorg/GenerateToken | Generate an embed token granting an embedded application access to specific reports, datasets, and target workspaces. | write | Report.Read.All | Current | |
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.AllVersionAvailable since the API’s base version Webhook eventNone Rate limitStandard limits apply SourceOfficial documentation ↗ | ||||||
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.
| Event | What it signals | Triggered by |
|---|
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.
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.
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.
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.
The status codes an agent should handle, and what to do about each.
| Status | Code | Meaning | What to do |
|---|---|---|---|
| 401 | Unauthorized | No 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. |
| 403 | Forbidden | The 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. |
| 404 | NotFound | The 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. |
| 429 | TooManyRequests | The 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. |
| 500 | InternalServerError | An error occurred on the Power BI service side. | Retry with backoff, and include the RequestId response header when contacting Microsoft support. |
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.
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.
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.
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.
There is one current path-based version; new operations are added to the same surface.
Power BI REST API reference ↗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.