Skip to main content
cancel
Showing results for 
Search instead for 
Did you mean: 

Enhance your career with this limited time 50% discount on Fabric and Power BI exams. Ends August 31st. Request your voucher.

Reply
Anonymous
Not applicable

Rest API Authentication API-Key

Hey guys, 

 

so I'm new into power bi and the power query m language and never worked with that.

Basically I'm trying to connect a rest api with my power bi.

In order to get the data, I'll have to perform a POST call with a api key to obtain a beaerer token.

 

My approach was to use the advanced editor with the web.contents function. But I always get the error "(404) Not found"

Could u guys take a look at my function?

 

let

GetJson = Web.Contents("URL", [Headers=[#"Content-Type"="application/json", #"X-API-Key"="ABC"]])
in

GetJson

 

Ps: the endpoint works fine, I tried it on postman and got the bearer token.

I just cant obtain it on power bi.

2 ACCEPTED SOLUTIONS
lbendlin
Super User
Super User

If the API requires a POST call then you need to put the data in the body, not the header.  Consult the API documentation, and then use Json.FromValue() to binary encode the payload.

 

Like so:

let
    URL = "http://xxx/tstat",
    headers = [#"Content-Type"="application/json"],
    data = Json.FromValue([tmode = 2,t_cool = Setpoint,hold = 0]),
    web = Web.Contents(URL, [ Content = data, Headers = headers, ManualStatusHandling = {404, 400}]),
    result = Json.Document(web),
...

View solution in original post

you are missing the quotes around the key

 

data = Json.FromValue([apiKey = "123ABC"]),

View solution in original post

3 REPLIES 3
lbendlin
Super User
Super User

If the API requires a POST call then you need to put the data in the body, not the header.  Consult the API documentation, and then use Json.FromValue() to binary encode the payload.

 

Like so:

let
    URL = "http://xxx/tstat",
    headers = [#"Content-Type"="application/json"],
    data = Json.FromValue([tmode = 2,t_cool = Setpoint,hold = 0]),
    web = Web.Contents(URL, [ Content = data, Headers = headers, ManualStatusHandling = {404, 400}]),
    result = Json.Document(web),
...
Anonymous
Not applicable

Hi Ibendlin,

 

do you mean that I have to put my apikey into the Json.FromValue function?

 

let
URL = "URL",
headers = [#"Content-Type"="application/json"],
data = Json.FromValue([apiKey = 123ABC]),
web = Web.Contents(URL,[ Content = data,Headers = headers, ManualStatusHandling = {404, 400}]),
result = Json.Document(web)
in
result

It gives ma an error, my api key is mixture of letters and numbers. 

 

my API documentation says: 

 

HTTP Method

POST

Query

A json object contaaining only the "apiKey" field inside.

 

body: {

apiKey: "xxxxx"

}

you are missing the quotes around the key

 

data = Json.FromValue([apiKey = "123ABC"]),

Helpful resources

Announcements
July 2025 community update carousel

Fabric Community Update - July 2025

Find out what's new and trending in the Fabric community.

July PBI25 Carousel

Power BI Monthly Update - July 2025

Check out the July 2025 Power BI update to learn about new features.