Skip to content
Praval Technologies

Blog

Repointing Power BI reports with the REST API

Repointing a report through Power BI Desktop creates a new report object: new ID, dead URL, broken dashboard tiles and lost subscriptions. The Rebind Report endpoint preserves all of it in about thirty seconds.

Praval Technologies3 min read

In enterprise BI environments, repointing Power BI reports to different datasets is a recurring requirement: consolidating shared datasets, or making structural changes to data models.

The traditional PBIX re-upload

Repointing through Power BI Desktop means downloading the .pbix, updating the data source, and republishing to the service. The service treats that as the creation of a new report object, which causes:

  • a new report ID
  • the existing report URL becoming invalid
  • broken references in dashboards, applications and anything anyone has bookmarked or shared
  • manual reconfiguration of permissions, row-level security, subscriptions and bookmarks

For one report that is 15–20 minutes. For fifty, it is 12–16 hours before you have revalidated anything or told a single user.

The Rebind Report endpoint

The REST API offers a Rebind Report call. With one request:

  • the report is rebound to the new dataset
  • its ID and URL are preserved
  • bookmarks, dashboard tiles and subscriptions remain intact
Manual PBIX re-uploadRebind Report API
Time per report15–20 minutes~30 seconds
50 reports12–16 hoursunder 30 minutes
Report ID and URLChangedPreserved
Subscriptions and tilesRebuilt by handIntact

The call itself

POST https://api.powerbi.com/v1.0/myorg/groups/{groupId}/reports/{reportId}/Rebind

{ "datasetId": "new-dataset-guid" }

That is the whole operation. The report ID is untouched, and since the URL is derived from it, everything pointing at that report keeps resolving.

Permissions

The caller needs write permission on the target report, build permission on the new dataset, and the Report.ReadWrite.All scope. Missing build on the dataset is the usual first-run failure, worth confirming before a batch rather than halfway through one.

Two behaviours to know before running a batch

If the new dataset lives in a different workspace, a shared dataset is created automatically inside the report's own workspace. And if the report previously used a live connection, that connection is replaced with a direct binding to the new dataset.

Neither is a failure, but both change the shape of your workspace, and both are easier to reason about deliberately than to discover afterwards.

What the endpoint will not do for you

  • It does not validate schema compatibility. The call succeeds against a mismatched dataset and the failure surfaces later as broken visuals. Compatibility is a pre-flight check, not something the API performs.
  • Paginated (.rdl) reports are out of scope: standard Power BI reports only.
  • Reports on a live connection to SSAS or AAS cannot be rebound at all.
  • A rebind does not trigger a dataset refresh. That stays a separate operation you schedule or call yourself.

None of these make it the wrong tool. They do mean a batch rebind is a planned operation with a pre-flight check, rather than something to fire at a production workspace on a Friday afternoon.

The rebind itself is metadata only; it does not alter report layout or visuals, which is exactly why it is safe to run in bulk. Test on a copy first all the same. The operation is fast and reversible in principle, but a scripted loop across fifty production reports deserves one dry run more than you think it needs.

Recognise any of this in your own estate?

Start with the problem rather than the technology, and we will tell you honestly whether it is ours to solve.