Skip to content
Stand with Ukraine flag

Getting Connected

ThingsBoard exposes an HTTP/HTTPS API for devices to publish telemetry, sync attributes, and exchange RPC commands. Any HTTP client — curl, an SDK library, or a language’s built-in HTTP stack — can connect without a specialized broker library.

ParameterValue
HostYour ThingsBoard hostname or IP
Port80 (HTTP) · 443 (HTTPS)
ProtocolHTTP/1.1
AuthenticationAccess token in the URL path

HTTP uses access token credentials. Include the token as a path segment in every request URL:

http(s)://THINGSBOARD_HOST/api/v1/$ACCESS_TOKEN/{resource}

Copy the access token from Entities → Devices → [device] → Copy Access Token. See Devices for how to manage device credentials.

Where {resource} defines the endpoint type for your request. The available resources are:

  • telemetry — for sending telemetry data;
  • attributes — for publishing or requesting client/shared attributes;
  • rpc — for sending or replying to RPC commands;
  • claiming — for initiating the device claiming process.

Most deployments terminate TLS at a load balancer or reverse proxy (HAProxy, nginx, AWS ALB). The platform receives plain HTTP traffic internally.

To enable HTTPS directly on the ThingsBoard server, set these environment variables:

Terminal window
SSL_ENABLED=true
SSL_CREDENTIALS_TYPE=PEM
SSL_PEM_CERT=server.pem
SSL_PEM_KEY=server_key.pem
SSL_PEM_KEY_PASSWORD=secret
VariableDescription
SSL_ENABLEDEnables or disables SSL support. Set to true to activate HTTPS.
SSL_CREDENTIALS_TYPECredential format: PEM for certificate files, or KEYSTORE for a Java keystore.
SSL_PEM_CERTPath to the server certificate file. The file may also include the private key.
SSL_PEM_KEYPath to the private key file. Optional if the private key is already included in the certificate file.
SSL_PEM_KEY_PASSWORDPassword for an encrypted private key. Optional if the key is not password-protected.

When connecting over HTTPS with a CA-signed certificate, clients need no special configuration — just use https:// as the URL scheme. For self-signed certificates, pass --cacert ca.pem to curl.

CodeMeaning
200 OKClient’s request has been successfully
400 Bad RequestInvalid URL, request parameters, or body
401 UnauthorizedInvalid or missing access token
404 Not FoundRequested resource does not exist
405 Method Not AllowedURL doesn’t support this request method

Examples throughout this section use curl, which is available by default on Linux, macOS, and Windows 10+. Verify with curl --version.