Skip to content
Try for free

ThingsBoard Cloud

Choose your data region

Your data stays in the region you choose, for residency and compliance. No credit card required.

Rather run it yourself? Install on your own servers

Attributes

The HTTP Attributes API lets devices upload client-side attributes, request attribute values, and poll for shared attribute updates. For an explanation of attribute types, see Attributes.

See Getting Connected for authentication and connection details.

Upload client-side attributes with a POST request:

POST http(s)://THINGSBOARD_HOST/api/v1/$ACCESS_TOKEN/attributes
{"attribute1": "value1", "attribute2": true, "attribute3": 42.0}
Terminal window
curl -s -X POST -H "Content-Type: application/json" -d '{"attribute1":"value1","attribute2":true,"attribute3":42.0}' "http://$THINGSBOARD_HOST/api/v1/$ACCESS_TOKEN/attributes"

Request client-side and shared attribute values with a GET request:

GET http(s)://THINGSBOARD_HOST/api/v1/$ACCESS_TOKEN/attributes?clientKeys=attr1,attr2&sharedKeys=shared1,shared2
Query parameter Description
clientKeys Comma-separated list of client-side attribute keys to return
sharedKeys Comma-separated list of shared attribute keys to return
Terminal window
curl -s "http://$THINGSBOARD_HOST/api/v1/$ACCESS_TOKEN/attributes?clientKeys=attribute1,attribute2&sharedKeys=shared1,shared2"

Response:

{"client": {"attribute1": "value1", "attribute2": true}, "shared": {"shared1": "value2", "shared2": false}}

Poll for shared attribute changes with a long-lived GET request:

GET http(s)://THINGSBOARD_HOST/api/v1/$ACCESS_TOKEN/attributes/updates?timeout=20000
Terminal window
curl -s "http://$THINGSBOARD_HOST/api/v1/$ACCESS_TOKEN/attributes/updates?timeout=20000"

The request blocks until a shared attribute changes or the timeout elapses. The timeout parameter is in milliseconds. When an update occurs, ThingsBoard returns the changed attributes:

{"shared": {"firmware_version": "2.1.0"}}