OrbitSenderDocs
ReferenceParceiro

Emitir/renovar tokens (token)

POST
/api/oauth/token

Endpoint server-to-server (sem sessão de usuário). Autentica o client: apps confidential enviam client_secret; apps public usam apenas client_id + PKCE. Suporta dois grants:

  • authorization_code — troca o code (uso único, TTL 60s) recebido no redirect_uri por um par de tokens. Envie o code_verifier do PKCE.
  • refresh_token — rotação rotativa: cada uso invalida o refresh anterior e emite um novo par. Reapresentar um refresh já usado revoga toda a família de tokens (detecção de reuse).

O access_token é opaco (prefixo orb_at_), válido por ~1h, e vai no header Authorization: Bearer das chamadas /api/external/*.

Request Body

application/x-www-form-urlencoded

TypeScript Definitions

Use the request body type in TypeScript.

Response Body

application/json

application/json

application/json

application/json

curl -X POST "https://example.com/api/oauth/token" \  -H "Content-Type: application/x-www-form-urlencoded" \  -d 'grant_type=authorization_code&client_id=cli_abc123&code_verifier=dBjftJeZ4CVP...&code=orb_ac_...&redirect_uri=https%3A%2F%2Fparceiro.com%2Foauth%2Fcallback'
{  "success": true,  "access_token": "orb_at_9f8e7d6c5b4a...",  "token_type": "Bearer",  "expires_in": 3600,  "refresh_token": "orb_rt_1a2b3c4d5e6f...",  "scope": "statistics:read campaigns:read"}
{  "success": false,  "error": "invalid_grant",  "message": "Código inválido, expirado ou já usado."}
{  "success": false,  "error": "invalid_client",  "message": "client_secret inválido."}
{  "success": false,  "error": "Too Many Requests",  "code": "rate_limited",  "message": "Muitas requisições. Tente novamente em instantes."}