Forum Discussion
Can't refresh dynamic API URL in Power BI service
- 1 year ago
Hello jimbob2285,
Thanks for getting back and for providing those additional details.You're absolutely on the right track using RelativePath with Web.Contents is the correct solution to make your API call refreshable in the Power BI Service. You're very close, and the issue now seems to be related to how the parameters and authentication are being passed in the M code.
Key things to check:
- Keep your BaseUrl simple and static. It should not include parameters or dynamic segments.
- Use RelativePath only for the fixed portion of the endpoint path like /v1/organizations.
- Pass start, limit, and api_token using the Query option as a record. This is critical Power BI expects query parameters to be passed in this structured format to allow refresh in the Service.
- Avoid string concatenation inside RelativePath or Query. These should be clearly separated.
- If your API uses an API key in the query string, include it in the Query record as well. If it uses headers, you’ll need to configure it using the Headers option inside Web.Contents.
Here are two official docs that explain this pattern clearly:
- Web.Contents with RelativePath & Query: https://learn.microsoft.com/en-us/powerquery-m/web-contents
- Why dynamic URLs are blocked: https://learn.microsoft.com/en-us/power-bi/connect-data/refresh-data#refresh-and-dynamic-data-sources
- 1 year ago
Hello jimbob2285,
Thanks for sharing more details, you're really close. The issue now is with how the Query parameter is being passed.Power BI expects Query to be in a structured format using key-value pairs, not as a single concatenated string like "api_token=XXXX". This is a common roadblock. Instead of building one string, you should treat each query parameter as a separate item in a list (or "record") so Power BI can safely handle them and construct the URL properly for both Desktop and Service refresh.
Hello jimbob2285,
Thank you for reaching out to the Microsoft Fabric Forum Community.
Power BI Service does not allow refresh of dynamic data sources for security and privacy reasons. This specifically affects queries where the URL is built dynamically inside a function or loop, which works fine in Desktop but is blocked in the Service.
To make your API call refreshable in the Service:
- You’ll need to restructure the API call to use static base URLs.
- Use Power BI’s advanced options for Web.Contents, such as RelativePath and Query, to safely pass parameters like start, limit and api_token.
This approach avoids the dynamic URL issue and ensures that your query meets the Power BI Service’s data privacy and security rules.
If this information is helpful, please “Accept as solution” and give a "kudos" to assist other community members in resolving similar issues more efficiently.
Thank you.