client_id and client_secret, and the API returns a signed bearer JWT that you attach to every subsequent request. Tokens are short-lived — cache the token in memory server-side and proactively refresh it before it expires rather than waiting for a 401 response.
Endpoint
Authorization header is required for this endpoint. Authentication is performed via the request body credentials.
Request body
Your public API client identifier. Find this in Dashboard → Security → API Client. Safe to log, but keep it paired with your
client_secret.Your secret API key. Treat this like a password — never expose it in client-side code, logs, or source control. Rotate it immediately from the dashboard if it is ever compromised.
Request example
Responses
200 — Authentication successful
The response envelope wraps adata object containing the bearer token and its metadata.
401 — Invalid credentials
Returned when theclient_id or client_secret does not match a valid API client.
429 — Rate limited / account locked
Returned after too many consecutive failed authentication attempts. The account is temporarily locked to prevent brute-force attacks.429 — wait before reattempting.
Token caching
Cache the returnedaccess_token in your server’s memory or a secure store. Use expires_in (in seconds) to calculate the expiry time and schedule a refresh before the token lapses. Generating a new token on every request is unnecessary and will eventually trigger rate limiting.