Skip to main content
The External API uses JWT Bearer tokens (HS256 symmetric signing). All business routes expect:
There is no API-key-in-header pattern for data routes: you exchange the API key for a JWT using the token endpoint, then call /v2/api/* with the Bearer token.

How to obtain credentials

Credentials are not passed on every data request—only the JWT.

Token endpoint

API key login

POST /v2/api/authentication/token/api-key
  • Content-Type: application/x-www-form-urlencoded
  • Body field: apiKey (string)

Successful token response

JSON fields (see JwtTokenResponse):

Token expiry and refresh

  • Default token lifetime: ~24 hours (expires_in: 86399 seconds).
  • The actual lifetime may vary if the server’s JWT:TokenExpiryTime setting is configured (minimum 5 minutes).
  • There is no refresh endpoint — when a token expires, re-authenticate using POST /v2/api/authentication/token/api-key.
  • Recommendation: Re-authenticate 5 minutes before the token expires rather than waiting for a 401 response. See Token caching strategy below.

Token caching strategy

Do not request a new token on every API call. Each token is valid for ~24 hours. Requesting tokens unnecessarily adds latency and risks hitting future rate limits.
Recommended approach:
  1. On startup, request a token and store it in memory with its expiry time (Date.now() + expires_in * 1000).
  2. Before each API call, check if the token expires within the next 5 minutes.
  3. If yes, re-authenticate and replace the cached token.
  4. If no, use the cached token.
Example (JavaScript):
Example (Python):

Token scoping

Every token is bound to a single company. The CompanyId claim in the JWT determines which resources the token can access. To check which companies and vehicles your token can access, call GET /v2/api/companies and POST /v2/api/vehicles/list after authenticating.

API key rotation

To rotate an API key without downtime:
  1. Create the new key in the Telemax dashboard (API Keys V2 section). Both keys are active simultaneously.
  2. Update your integration to use the new key and confirm tokens are being obtained successfully.
  3. Delete the old key in the dashboard. Existing tokens issued with the old key remain valid until they expire (up to 24 hours).
Deleting a key immediately invalidates future token requests with that key. Tokens already issued remain valid until their expires_in elapses.

Code examples