This guide walks you through connecting Power BI Enterprise to Q-Play, so your reports and dashboards can be displayed inside the platform.
Before you start: You'll need access to a Power BI Admin account (or someone on your team who has one) to complete this setup, since some steps involve tenant-level settings that only an admin can change.
Capacity requirement: Embedding Power BI content requires your workspace to run on a paid capacity — A (Power BI Embedded), P (Premium), or F (Fabric) SKU. Shared or Pro capacity does not support embed token generation. If your workspace is on shared/Pro capacity, jobs will fail with a 403 error until you upgrade to one of these capacities.
Using an SoC player? SoC players are the built-in smart TV platform found in displays like LG, Samsung, or Sony — as opposed to an external media player box. These aren't powerful enough to render a live, interactive Power BI embed, so if your display runs on one, you'll need to use one of the Screenshot job types instead of the live Report/Dashboard type — more on this in Step 6 below.
Follow our general guide on working with integrations in Q-Play to start a new integration, and choose Power BI Enterprise as the type.
Set your Timezone and Language for the integration, then click Next.
This is the step that connects Q-Play to your Power BI tenant.
If you'd rather use your own custom App Registration instead, that option is also available here — but we assume you already know how to set this up if you choose it, as we can't provide support for custom app registration setups.
If you clicked Create Integration without authorizing, you'll land on the Integration status tab. To complete the setup:
When you authorize with Microsoft, Q-Play creates a service principal user in your Power BI tenant called "Q-Play PowerBi v1.1". This is what actually lets Q-Play read your reports — it needs explicit access to work.
This is usually a one-time setup — if it's already been done in your organization (e.g. for another third-party integration), you can skip it. It requires Power BI Admin access.
For both settings:
Once Steps 4 and 5 are completed, your integration is fully set up. Now you're ready to set up your first job.
A job is what actually pulls a specific report or dashboard into Q-Play. Each report or dashboard you want to display needs its own job.
From the integration's Overview page, click Add Job.
Give the job a descriptive name — this is just for your own reference in Q-Play.
Choose what kind of Power BI content this job displays:
Using an SoC player? SoC players are the built-in smart TV platform found in displays like LG, Samsung, or Sony — as opposed to an external media player box. These aren't powerful enough to render a live embed. Use one of the Screenshot job types instead — the result looks the same, it's just a static image rather than an interactive embed.
This is the part people get stuck on most, so let's go through it carefully.
Once you've chosen Report or Dashboard as the Job Type, you'll need to fill in a Workspace ID and a Report ID (or Dashboard ID). Both of these come from the URL of the report or dashboard when you have it open in Power BI.
Here's an example Power BI report URL:
https://app.powerbi.com/groups/89b63c7c-e8ab-4322-b1e6-cabb581c1d94/reports/90983b81-7237-4b0d-902c-5b8c196c205e/93a0bdd07004584f8f3b?experience=power-bi
Breaking that down:
89b63c7c-e8ab-4322-b1e6-cabb581c1d94 — the ID right after /groups/.90983b81-7237-4b0d-902c-5b8c196c205e — the ID right after /reports/. This is only the first ID segment.93a0bdd07004584f8f3b — the ID right after the Report ID, before ?experience=.... This is a separate value from the Report ID.For dashboards, the process is the same, except the URL contains /dashboards/ instead of /reports/. Dashboards don't have pages, so there's no Page ID to worry about.
Setting up a Screenshot job? You'll also need the Page ID — the ID right after the Report ID in the URL. This is what tells Q-Play which specific page of the report to screenshot. Since dashboards don't have pages, this only applies to Report Screenshot jobs.
These settings only appear for Report Screenshot and Dashboard Screenshot job types.
Report/Dashboard Width & Height — this sets the resolution the screenshot is rendered at, like setting a virtual screen size for Power BI to render into. It doesn't need to exactly match your physical display's resolution, but it's a good starting point if you're not sure what to use.
For Dashboard Screenshot jobs specifically, there's an extra setting:
Dashboard fitment — controls how the dashboard is scaled into the screenshot:
Power BI dashboards aren't dynamic like reports — they don't automatically reflow. If the dashboard's elements are large, Fit to width may make them look stretched or oddly proportioned. If that happens, try Actual size instead, or adjust the width/height to better match the dashboard's actual layout.
Schedule type controls when the job actually runs:
Note: "Resource timeout" and "Refresh schedule" describe how often a new screenshot is generated. This wording applies to Report Screenshot and Dashboard Screenshot jobs specifically — for live Report/Dashboard jobs, there's nothing being "refreshed" since the content is already live, so Schedule type is the only setting that matters there.
Resource timeout (On-demand only) — the minimum time that must pass between screenshots. This prevents the job from re-running more often than necessary while it's actively in use.
Refresh schedule (Scheduled only) — how often a new screenshot should automatically be generated, e.g. every hour.
Jobs don't run automatically the moment the integration is set up — you need to trigger a run yourself to confirm the connection works and see a result.
You can do this in one of two ways:
From the Overview page: Click the ▶ (play) icon next to any job in the Jobs list.
From inside a specific job: Open the job, then click Run Job Now in the top-right corner.
Either way, the run will appear in Recent Runs once it's finished, showing whether it succeeded or failed. If it fails, see the troubleshooting section below.
Once your job is set up and running successfully, the data itself is ready — but nothing will show on a screen yet. The integration only stores the connection; actually displaying the report or dashboard happens in the Q-Play app.
See Power Bi Enterprise app setup guide for how to add your job's output to a screen.
If a job shows a Failed or Error status, you can check exactly what went wrong in the logs.
Each job run has its own log.
The log will show a timestamped error message, usually including an HTTP status code and an error code — this tells you what actually went wrong.
| Error code | Typical reason | What to do | |
|---|---|---|---|
| 400 |
InvalidRequest |
The request was rejected by Power BI — usually because of how the report/dataset itself is set up, not the request sent by Q-Play | Check the specific error message in the log for more detail. If it's unclear, contact support with the full log. |
| 400 | PowerBIEntityNotFound |
The report, dataset, or workspace no longer exists | Check that the report/dataset/workspace hasn't been deleted, renamed, or moved. |
| 401 | Unauthorized |
The Microsoft authorization is invalid or has expired | Re-authorize the integration with Microsoft (see Step 3). |
| 403 | PowerBINotAuthorizedException |
The service principal doesn't have the required workspace permission | Make sure "Q-Play PowerBi v1.1" has at least Member access to the workspace (see Step 4). |
| 403 | TokenExpired |
The access token has expired | Re-authorize the integration with Microsoft (see Step 3). |
| 404 | PowerBIEntityNotFound |
The report or workspace can't be found | Same as above — verify the resource still exists and hasn't moved. |
| 409 | Conflict |
The request conflicts with the current state of the resource | Try running the job again. If it keeps happening, contact support. |
| 429 | TooManyRequests |
Too many requests sent to Power BI in a short time | Wait a while and try again. If this happens often, consider running the job less frequently. |
| 500 | InternalServiceError |
A temporary issue on Microsoft's side | Try again later. |
| 503 | ServiceUnavailable |
Power BI is temporarily unavailable | Try again later, or check Microsoft's service status page. |
If you run into an error that isn't listed here, contact support and include the full error message from the log — it'll help us identify the issue faster.