Advance your Data & AI career with 50 days of live learning, dataviz contests, hands-on challenges, study groups & certifications and more!
Get registeredJoin us at FabCon Atlanta from March 16 - 20, 2026, for the ultimate Fabric, Power BI, AI and SQL community-led event. Save $200 with code FABCOMM. Register now.
Hi,
I have been trying to import data using Trulinks Road Haulage Association, UK(RHA) APIs. Most of the API requests are POST while rest of them being GET. GET APIs have been straightforward while POST requests are posing problems. By Default, Web.Contents sends a GET request while a different approach is needed for POST.
How can I import data via POST request?
Thanks
Solved! Go to Solution.
Including Content in your request makes the Web.Contents perform a POST, for example:
Source = Json.Document(Web.Contents(url,[
Headers = [#"Content-Type"="application/json"],
Content = Text.ToBinary(body)
]
))
I don't know exactly what you need to provide in the request (e.g. API Auth,Headers) as I don' t know the API,but this should get you started. Post back if you need further assistance.
regards
Phil
Proud to be a Super User!
Thank alot, Philip.
Including Content in your request makes the Web.Contents perform a POST, for example:
Source = Json.Document(Web.Contents(url,[
Headers = [#"Content-Type"="application/json"],
Content = Text.ToBinary(body)
]
))
I don't know exactly what you need to provide in the request (e.g. API Auth,Headers) as I don' t know the API,but this should get you started. Post back if you need further assistance.
regards
Phil
Proud to be a Super User!
Hi @PhilipTreacy
I've got a similar issue, i can run all these in postman with no issues, but PQ causes no end of problems. this is what i have, but it throws errors DataSource.Error: Web.Contents failed to get contents from 'https://myapidomain.com/v0/auth/code' (500): Internal Server Error
and
Expression.Error: We cannot convert a value of type Binary to type Text. Details: Value=[Binary] Type=[Type]
let
apiBaseUrl = #"API URL",
apiEmail = #"API Email",
accessCode = #"Access Code",
AuthUrl = apiBaseUrl & "/auth/code",
RawBody = "{
""meta"": {},
""data"": {
""email"": """ & apiEmail & """,
""code"": """ & accessCode & """
}
}",
Response = Web.Contents(
AuthUrl,
[
Headers = [
#"Content-Type" = "application/json",
#"Accept" = "application/json",
#"Accept-Language" = "en",
#"User-Agent" = "PostmanRuntime/7.32.0" // mimic Postman
],
Content = Text.ToBinary(RawBody, TextEncoding.Utf8)
]
),
ResponseText = Text.FromBinary(Response, TextEncoding.Utf8),
Parsed = Json.Document(ResponseText),
AccessToken = Parsed[data][access_token]
in
AccessToken
Is there a way to cater for a PUT request ?
What if the API requires Windows Authentication?
Excel reports back that neither adding "contents" nor adding a method="POST" is allowed for anything but anonymous authentication. How do you post against an API behind Windows Authentication?
If you were building a C# application, it can easily use Windows Authentication to negotiate with the server, and you don't have to manually add the credentials either. It seems that post requests to Windows autorized APIs would be a very common use case in corporate environments, but I have not found a way to do so in Power Query.
@ziyabikram96 , refer if this can help
Suggested in https://community.powerbi.com/t5/Desktop/Pull-data-from-API-using-POST-method-in-Power-BI/td-p/57472...