The ultimate Fabric, Power BI, SQL, and AI community-led learning event. Save €200 with code FABCOMM.
Get registeredCompete to become Power BI Data Viz World Champion! First round ends August 18th. Get started.
Hello.
I'm trying to use the PowerBI API to export a specific page of a report as a PNG. The functionality works, giving me a zip file containing a PNG file for every page in the report.
My issue comes when I'm trying to select a specific visual or page by modifying the payload. Following the documentation, this is how my payload looks like
{
'format': 'PNG',
'powerBIReportConfiguration': {
'settings': {
'locale': 'en-US',
'excludeHiddenPages': 'true'
},
'pages': [
{
'pageName': 'Test report page',
}
]
}
But I am still getting a zip file with all the pages instead of just the selected one. Same thing happens when selecting a specific visual.
Solved! Go to Solution.
The pagename is likely not what you think it is. It is more of a GUID based identifier. If you don't specify the right pagename the export will ignore your request and give you all pages.
Unfortunately the main documentation Reports - Export To File In Group - REST API (Power BI Power BI REST APIs) | Microsoft Docs is not very helpful. However, there's this : Export Power BI embedded analytics reports API - Power BI | Microsoft Docs which gives you the hint on how to fetch the page names via a different API call.
The pagename is likely not what you think it is. It is more of a GUID based identifier. If you don't specify the right pagename the export will ignore your request and give you all pages.
Unfortunately the main documentation Reports - Export To File In Group - REST API (Power BI Power BI REST APIs) | Microsoft Docs is not very helpful. However, there's this : Export Power BI embedded analytics reports API - Power BI | Microsoft Docs which gives you the hint on how to fetch the page names via a different API call.
Hello!
Thank you for your reply! I used the Get Pages API Endpoint and I noticed that it gave both a "Name" and a "Display Name", just like you mentioned. I tried running the same code using the GUID-like given to me by the API, but I still get all of the pages in the report.
Could I be missing something in the payload that makes the API ignore it?
You can use the sandbox to try the API call in the service. That helps with the debugging.
So I have found the issue by pure luck. I was using Python's requests package to send the requests, and the payload was written as a Python dictionary and given to the package, since that work usually.
Apparently, this endpoint does not like that and I had to write it as a JSON string and pass it like that.
can you share the payload for the report configuration to isolate just a single visual? I am working on the same use case. Thank you