Bulk update 401. error unauthorized

Is bulk update API broken? Was working , day later not working...
Tried using bulk update and get
{"status":"401","error":{"error_code":"error_auth_required","message":"Authorization Required","details":"Please provide proper authentication details."}
with this payload:
{
"write_api_key": "WRITE_API_KEY",
"updates": [{
"created_at": "2018-01-30 10:26:2 -0500",
"field1": "1.0",
"field2": "2.0"
},
{
"created_at": "2018-02-02 11:27:27 -0500",
"field1": "1.1",
"field2": "2.2",
"status": "well done"
}
]
}
And I get
{"status":"401","error":{"error_code":"error_auth_required","message":"Authorization Required","details":"Please provide proper authentication details."}
Already tried
  • new channel
  • new key
  • validated key

Réponses (1)

Vinod
Vinod le 16 Oct 2020

0 votes

Nothing has changed on the ThingSpeak end that will cause that.
Have a look at the documentation for the bulk_update endpoint. We suspect the content-type header is not specified correctly. It needs to be 'application/json' since you are sending in JSON data.

5 commentaires

I've tried following the postman example and get the same errors. Single post updates work, just cant get past the bulk update errors. I've validated that I'm sending the correct header, here's some code from an ESP32 :
client.println("POST /channels/185687/bulk_update.json HTTP/1.1"); // Replace YOUR-CHANNEL-ID with your ThingSpeak channel ID
client.println("Host: api.thingspeak.com");
client.println("User-Agent: mw.doc.bulk-update (Arduino ESP32)");
client.println("Connection: close");
client.println("Content-Type: application/json");
client.println("Content-Length: " + buf.length());
client.println();
client.println(buf);
Mario Guthrie
Mario Guthrie le 16 Oct 2020
Modifié(e) : Mario Guthrie le 16 Oct 2020
BTW, I assume this works for the free tier :-)
Vinod
Vinod le 16 Oct 2020
Modifié(e) : Vinod le 16 Oct 2020
Here's my cURL request that works. You can see it on my public channel.
curl --request POST 'https://api.thingspeak.com/channels/936997/bulk_update.json' --header 'Content-Type: application/json' --data-raw '{"write_api_key": "MY_WRITE_API_KEY","updates": [{"created_at": "2020-10-17 10:26:2 -0500","field1": "1.0","field2": "2.0"},{"created_at": "2020-10-17 11:27:27 -0500","field1": "1.1","field2": "2.2","status": "well done"}]}'
Can you modify it for your channel and confirm it works?
If you don't have cURL on your machine, you can try it from here: https://reqbin.com/curl
Here's a link to my request on reqbin: https://reqbin.com/po2ag36d
Mario Guthrie
Mario Guthrie le 17 Oct 2020
Thanks Vinod -- The curl works. You should add that to the documentation.
I was able to get my code working and it appears to have had something to do with how I constructed the code , maybe newlines ? not sure yet but will isolate the issue as others may have same.
Thanks!
cog
cog le 12 Fév 2023
Mario, did you isolate what it was about the way you built the data?

Connectez-vous pour commenter.

Communautés

Plus de réponses dans  ThingSpeak Community

Catégories

En savoir plus sur Read Data from Channel dans Centre d'aide et File Exchange

Produits

Commenté :

cog
le 12 Fév 2023

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by