Direct API authorization requires the corresponding Trackly app and external API rollout. Registration preview generation also requires the jobs worker rollout so it recognizes direct API grants. This guide describes the implemented connection contract, not confirmation that it is enabled for your account. Confirm availability with support.
https://app.tracklysms.com; discover its endpoints through https://app.tracklysms.com/.well-known/oauth-authorization-server. Public clients use S256 PKCE and token_endpoint_auth_method: "none".
Connect the client
- Register the client at
POST https://app.tracklysms.com/oauth/registerwith JSON containingclient_name, your exactredirect_uris,grant_types: ["authorization_code", "refresh_token"],response_types: ["code"], andtoken_endpoint_auth_method: "none". Store the returnedclient_id. Use only redirect URIs your client controls. - Generate a fresh private PKCE verifier and its S256 challenge, plus an unpredictable
state. Open/oauth/authorizein the owner’s browser withresponse_type=code,client_id,redirect_uri,code_challenge,code_challenge_method=S256,state,resource=https://api.tracklysms.com/api, andscope=trackly.registration. Addtrackly.agentonly if approved SMS capability is also needed; registration permission does not authorize sending. - Validate the callback state and issuer before accepting the code. Exchange it at
/oauth/tokenusing form encoding and exactlygrant_type=authorization_code,client_id,code,redirect_uri,code_verifier, and the sameresource. - Store the access and refresh tokens in private client credential storage. Send the access token as
Authorization: Bearer …to the API. Never put tokens, verifiers, or provider credentials in chat, logs, source control, or tool arguments.
expires_in. Grants last at most 7 days and can end sooner through revocation or changed account authority.
trackly.registration permits account/setup reads and the four registration preparation operations. Requests remain bound to the consenting account, grant, and dedicated credential. An existing SMS-only connection needs fresh consent for registration. Owner publication, optional Entri provider consent, and final paid registration submission remain separate human decisions.
Refresh and disconnect
Send form-encodedgrant_type=refresh_token, client_id, refresh_token, and the exact original resource to /oauth/token. Refresh tokens rotate and are single-use: replace both stored tokens together. Do not add scopes or switch audiences during refresh. After an uncertain refresh outcome, do not repeatedly replay the old refresh token; reconnect if the client cannot recover its stored replacement.
Disconnect through /oauth/revoke with form-encoded client_id and token. A public client does not supply a client secret. Revocation or expired authority requires a new owner-approved connection.
Call registration directly
The following assumes your client has stored the bearer privately inTRACKLY_API_ACCESS_TOKEN; never paste its value into a conversation. Keep the operation key stable when recovering the same creation.
https://mcp.tracklysms.com/mcp. Tokens issued for that audience cannot be sent directly to the API; Trackly’s MCP adapter uses its separate exchange path, whose API tokens remain limited to 60 seconds. Direct REST clients use the API resource above and need no adapter exchange secret.