Learn from the best! Meet the four finalists headed to the FINALS of the Power BI Dataviz World Championships! Register now
Hello,
I hope you're all doing well. I wanted to reach out to see if anyone has had success using the enhanced refresh with the Power BI REST API to refresh datasets with specific tables in the request body. Despite following the documentation closely, I'm still encountering an issue where the request is being submitted as "via API" rather than "via enhanced API."
Has anyone attempted to use the enhanced API call with Python for refreshing the dataset? Any insights or guidance on this would be greatly appreciated.
Documentaiton Link : Enhanced refresh with the Power BI REST API - Power BI | Microsoft Learn
API : Post https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes
Python POST API Sample code
url_rfsh_data = f'https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes'
Solved! Go to Solution.
Hi @satishorre20,
in my experienve, if the refresh shows “via API” it usually means the request didn’t include the enhanced options in the JSON body, or the dataset isn’t on Premium/PPU/Fabric. In your sample you used params=payload (query string) instead of json=payload (request body), so the service probably treated it like a standard refresh.
import requests
url = f"https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes"
headers = {
"Authorization": f"Bearer {result['access_token']}",
"Content-Type": "application/json"
}
payload = {
"type": "Full",
"commitMode": "transactional",
"maxParallelism": 2,
"retryCount": 2,
"objects": [ { "table": "DateDim" } ]
}
r = requests.post(url, headers=headers, json=payload) # <-- use json, not params
print(r.status_code, r.text)
Reference examples and parameters here: Enhanced refresh
If you found this helpful, consider giving some Kudos. If I answered your question or solved your problem, mark this post as the solution.
Taylor Amy.
Proud to be a Super User! | |
Hi @satishorre20,
in my experienve, if the refresh shows “via API” it usually means the request didn’t include the enhanced options in the JSON body, or the dataset isn’t on Premium/PPU/Fabric. In your sample you used params=payload (query string) instead of json=payload (request body), so the service probably treated it like a standard refresh.
import requests
url = f"https://api.powerbi.com/v1.0/myorg/groups/{groupId}/datasets/{datasetId}/refreshes"
headers = {
"Authorization": f"Bearer {result['access_token']}",
"Content-Type": "application/json"
}
payload = {
"type": "Full",
"commitMode": "transactional",
"maxParallelism": 2,
"retryCount": 2,
"objects": [ { "table": "DateDim" } ]
}
r = requests.post(url, headers=headers, json=payload) # <-- use json, not params
print(r.status_code, r.text)
Reference examples and parameters here: Enhanced refresh
If you found this helpful, consider giving some Kudos. If I answered your question or solved your problem, mark this post as the solution.
Taylor Amy.
Proud to be a Super User! | |