Forum Discussion
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.
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), ...you are missing the quotes around the key
data = Json.FromValue([apiKey = "123ABC"]),
3 Replies
- lbendlinSuper 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), ...- AnonymousNot 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
resultIt 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"
}
- lbendlinSuper User
you are missing the quotes around the key
data = Json.FromValue([apiKey = "123ABC"]),