Skip to main content

format: md

Auth / OAuth API

Endpoints para autenticação OAuth 2.0, gerenciamento de tokens, device flow e trusted devices. Implementação PROXY (pass-through para Anthropic API).


format: md

POST /v1/oauth/token

POST /v1/oauth/token

Obtém tokens de acesso via Authorization Code Grant ou Refresh Token.

Retry: 2 tentativas (backoff de 500ms, 1000ms)

Headers

HeaderValorObrigatório
Content-Typeapplication/jsonSim

Request Body (authorization_code)

{
"grant_type": "authorization_code",
"client_id": "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
"code": "auth_code_abc",
"code_verifier": "verifier_abc",
"redirect_uri": "https://claude.ai/oauth/callback"
}
CampoTipoDescrição
grant_typestring"authorization_code"
client_idstringUUID do cliente OAuth
codestringCódigo de autorização
code_verifierstringPKCE code verifier
redirect_uristringURI de redirecionamento registrada

Request Body (refresh_token)

{
"grant_type": "refresh_token",
"client_id": "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
"refresh_token": "rt_abc",
"scope": "openid profile"
}
CampoTipoDescrição
grant_typestring"refresh_token"
client_idstringUUID do cliente OAuth
refresh_tokenstringToken de refresh
scopestringEscopos solicitados (opcional)

Response

{
"access_token": "at_abc",
"refresh_token": "rt_abc",
"expires_in": 3600
}
CampoTipoDescrição
access_tokenstringToken de acesso JWT
refresh_tokenstringToken de refresh
expires_innumberTempo de expiração em segundos

Exemplo curl

curl -X POST https://api.anthropic.com/v1/oauth/token \
-H "Content-Type: application/json" \
-d '{
"grant_type": "authorization_code",
"client_id": "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
"code": "auth_code_abc",
"code_verifier": "verifier_abc",
"redirect_uri": "https://claude.ai/oauth/callback"
}'

Códigos de Erro

CódigoSignificado
400Bad request (grant inválido, parâmetros ausentes)
401Não autorizado (client_id inválido)
429Rate limit excedido

format: md

POST /v1/oauth//authorize

POST /v1/oauth//authorize

Inicia o fluxo de autorização OAuth para uma organização específica.

Headers

HeaderValorObrigatório
AuthorizationBearer <session_key>Sim

Parâmetros Path

ParâmetroTipoDescrição
org_uuidstringUUID da organização

Request Body

{
"response_type": "code",
"client_id": "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
"organization_uuid": "org_uuid",
"redirect_uri": "https://claude.ai/oauth/callback",
"scope": "openid profile",
"state": "state_abc",
"code_challenge": "challenge_abc",
"code_challenge_method": "S256"
}
CampoTipoDescrição
response_typestring"code"
client_idstringUUID do cliente OAuth
organization_uuidstringUUID da organização alvo
redirect_uristringURI de redirecionamento
scopestringEscopos solicitados
statestringEstado opaco para proteção CSRF
code_challengestringPKCE code challenge
code_challenge_methodstring"S256"

Response

{
"redirect_uri": "https://claude.ai/oauth/callback?code=auth_code_abc&state=state_abc"
}
CampoTipoDescrição
redirect_uristringURI completa com code + state como query params

Exemplo curl

curl -X POST https://api.anthropic.com/v1/oauth/org_abc/authorize \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $SESSION_KEY" \
-d '{
"response_type": "code",
"client_id": "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
"organization_uuid": "org_abc",
"redirect_uri": "https://claude.ai/oauth/callback",
"scope": "openid profile email",
"state": "state_abc",
"code_challenge": "challenge_abc",
"code_challenge_method": "S256"
}'

Códigos de Erro

CódigoSignificado
400Invalid request (parâmetros ausentes ou inválidos)
401Não autorizado (session key inválida)

format: md

POST /v1/oauth/device_authorization

POST /v1/oauth/device_authorization

Inicia o fluxo de autorização para dispositivos (device flow). Usado por clients sem navegador (ex: Claude Desktop, CLI).

Request Body

{
"client_id": "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
"scope": "openid profile"
}
CampoTipoDescrição
client_idstringUUID do cliente OAuth
scopestringEscopos solicitados (opcional)

Response

{
"device_code": "dc_abc",
"user_code": "ABC-123",
"verification_uri": "https://claude.com/device",
"expires_in": 900,
"interval": 5
}
CampoTipoDescrição
device_codestringCódigo do dispositivo para polling
user_codestringCódigo curto para o usuário digitar
verification_uristringURI para o usuário visitar
expires_innumberTempo de expiração em segundos (900s = 15min)
intervalnumberIntervalo mínimo entre polls em segundos

Exemplo curl

curl -X POST https://api.anthropic.com/v1/oauth/device_authorization \
-H "Content-Type: application/json" \
-d '{
"client_id": "9d1c250a-e61b-44d9-88ed-5944d1962f5e",
"scope": "openid profile"
}'

Códigos de Erro

CódigoSignificado
400Bad request (client_id ausente)
429Rate limit excedido

format: md

GET /api/oauth/profile

GET /api/oauth/profile

Recupera o perfil OAuth da organização associada ao token.

Timeout: 3s

Headers

HeaderValorObrigatório
AuthorizationBearer <access_token>Sim

Response

{
"organization": {
"organization_type": "claude_pro",
"rate_limit_tier": "default"
}
}
CampoTipoDescrição
organization.organization_typestringTipo do plano: "claude_max", "claude_pro", "claude_enterprise", "claude_team"
organization.rate_limit_tierstringTier de rate limit: "default"

Exemplo curl

curl https://api.anthropic.com/api/oauth/profile \
-H "Authorization: Bearer $ACCESS_TOKEN"

Códigos de Erro

CódigoSignificado
401Não autorizado (token inválido/expirado)
403Proibido (sem permissão)
429Rate limit excedido

format: md

POST /api/oauth/claude_cli/create_api_key

POST /api/oauth/claude_cli/create_api_key

Cria uma nova API key para uso no Claude Code CLI.

Headers

HeaderValorObrigatório
AuthorizationBearer <access_token>Sim

Request Body

Nenhum body necessário.

Response

<api_key_string>

Resposta em texto plano contendo a API key gerada.

Exemplo curl

curl -X POST https://api.anthropic.com/api/oauth/claude_cli/create_api_key \
-H "Authorization: Bearer $ACCESS_TOKEN"

Códigos de Erro

CódigoSignificado
401Não autorizado
429Rate limit excedido
500Erro interno do servidor

format: md

GET /api/oauth/claude_cli/roles

GET /api/oauth/claude_cli/roles

Lista as roles disponíveis para o Claude Code CLI.

Headers

HeaderValorObrigatório
AuthorizationBearer <access_token>Sim

Exemplo curl

curl https://api.anthropic.com/api/oauth/claude_cli/roles \
-H "Authorization: Bearer $ACCESS_TOKEN"

Códigos de Erro

CódigoSignificado
401Não autorizado
429Rate limit excedido

format: md

GET /.well-known/oauth-authorization-server

GET /.well-known/oauth-authorization-server

OIDC Discovery endpoint. Retorna metadados do servidor de autorização OAuth 2.0 / OpenID Connect.

Headers

Nenhum header específico necessário.

Response

{
"issuer": "https://api.anthropic.com",
"authorization_endpoint": "https://api.anthropic.com/v1/oauth/authorize",
"token_endpoint": "https://api.anthropic.com/v1/oauth/token",
"device_authorization_endpoint": "https://api.anthropic.com/v1/oauth/device_authorization",
"jwks_uri": "https://api.anthropic.com/.well-known/jwks.json",
"response_types_supported": ["code"],
"grant_types_supported": ["authorization_code", "refresh_token", "urn:ietf:params:oauth:grant-type:device_code"],
"code_challenge_methods_supported": ["S256"],
"token_endpoint_auth_methods_supported": ["none"],
"scopes_supported": ["openid", "profile", "email", "anthropic_api"],
"claims_supported": ["sub", "iss", "aud", "exp", "iat"]
}

Exemplo curl

curl https://api.anthropic.com/.well-known/oauth-authorization-server

Códigos de Erro

CódigoSignificado
404Well-known não configurado

format: md

POST /api/auth/trusted_devices

POST /api/auth/trusted_devices

Registra um dispositivo confiável para autenticação sem fricção (ex: Claude Desktop).

Headers

HeaderValorObrigatório
AuthorizationBearer <access_token>Sim

Request Body

{
"display_name": "Claude Desktop on MacBook Pro"
}
CampoTipoDescrição
display_namestringNome amigável do dispositivo

Response

<trusted_device_token>

Resposta em texto plano contendo o token do dispositivo confiável.

Exemplo curl

curl -X POST https://api.anthropic.com/api/auth/trusted_devices \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $ACCESS_TOKEN" \
-d '{
"display_name": "Claude Desktop on MacBook Pro"
}'

Códigos de Erro

CódigoSignificado
400Bad request (display_name ausente)
401Não autorizado
429Rate limit excedido

format: md

Mapa de Implementação

EndpointLiteLLMOrigem
POST /v1/oauth/tokenPROXYAnthropic API
POST /v1/oauth/&#123;org&#125;/authorizePROXYAnthropic API
POST /v1/oauth/device_authorizationPROXYAnthropic API
GET /api/oauth/profilePROXYAnthropic API
POST /api/oauth/claude_cli/create_api_keyPROXYAnthropic API
GET /api/oauth/claude_cli/rolesPROXYAnthropic API
GET /.well-known/oauth-authorization-serverPROXYAnthropic API
POST /api/auth/trusted_devicesPROXYAnthropic API