Skip to content
Linra Omni Developer Docs

Issue partner token

Exchange a client ID and secret for an access token.

Authentication

POST/api/v1/auth/token

The credential-exchange door. Anonymous — no bearer token is required (you don’t have one yet). Rate-limited independently of every other route (see the Rate limits guide). Returns a JWT (audience partner-api) valid for 5 minutes; see the Authentication guide for the recommended caching pattern.

Body parameters

clientIdstringRequired
clientSecretstring (password)Required
onBehalfOfstring (uuid)

Optional — delegate the issued token’s identity to a descendant partner (materialized-path-checked). Rare; most integrations omit this.

Response

accessTokenstring
tokenTypestring
expiresIninteger

Seconds until expiry — always 300 (5 minutes) today.

Other responses

401Invalid client ID/secret, or an inactive partner.
403Delegation (onBehalfOf) target is invalid or not a descendant of the caller.
404No API route matches this path (NOT_FOUND_ROUTE). A missing resource on a real route returns that service’s own NOT_FOUND_* code instead.
415The request body is not sent as application/json (UNSUPPORTED_MEDIA_TYPE).
429Too many requests — see the Rate limits guide. Retry after the Retry-After header (seconds).
502A dependent service returned an invalid response (BAD_GATEWAY). Retry with backoff.
503The service is temporarily unavailable (SERVICE_UNAVAILABLE). Retry with backoff.
504A dependent service did not respond in time (GATEWAY_TIMEOUT). Retry with backoff.
curl --request POST \
--url https://api-omni.linra.net/api/v1/auth/token \
--header 'Content-Type: application/json' \
--data '{
"clientId": "string",
"clientSecret": "string",
"onBehalfOf": "5b1e3a1c-9d2e-4f3a-8b1c-9f0a2e3d4c5b"
}'

Response

{
"state": "SUCCESS",
"payload": {
"accessToken": "string",
"tokenType": "Bearer",
"expiresIn": 300
},
"details": null
}