Skip to content
Stand with Ukraine flag

HTTP API

Devices connect to ThingsBoard Edge over HTTP the same way they connect to ThingsBoard CE — only the host differs. Point your HTTP client to the Edge node’s IP address or hostname.

Default ports: 8080 (plain), 443 (HTTPS)

Authenticate with the device access token embedded in the request URL:

http://{EDGE_HOST}:8080/api/v1/{accessToken}/...

To find a device’s access token: go to Entities → Devices, open the device, click Copy access token on the Device details tab.

Terminal window
export ACCESS_TOKEN=your_device_token
export EDGE_HOST=your_edge_host_or_ip

Base URL: http://{EDGE_HOST}:8080/api/v1/{accessToken}

OperationMethodPath
Publish telemetryPOST/telemetry
Publish client-side attributesPOST/attributes
Get attributesGET/attributes?clientKeys=…&sharedKeys=…
Subscribe to shared attribute updates (long-poll)GET/attributes/updates?timeout={ms}
Subscribe to RPC commands (long-poll)GET/rpc?timeout={ms}
Respond to server-side RPCPOST/rpc/{requestId}
Send client-side RPCPOST/rpc
Claim devicePOST/claim
Provision new devicePOSThttp://{EDGE_HOST}:8080/api/v1/provision
Get firmware infoGET/firmware?title={title}&version={ver}
Terminal window
curl -v -X POST \
"http://$EDGE_HOST:8080/api/v1/$ACCESS_TOKEN/telemetry" \
-H "Content-Type: application/json" \
-d '{"temperature": 25, "humidity": 60}'

Telemetry and attribute payloads accept a flat JSON object or a timestamped array:

{"temperature": 25, "humidity": 60}
[
{"ts": 1730000000000, "values": {"temperature": 25}},
{"ts": 1730000060000, "values": {"temperature": 26}}
]