Autenticação
Emite access token (OAuth 2.0 client_credentials)
POST
/oauth/token
- Sem token: credenciais no corpo
- Limite 10/min por IP
Credenciais no corpo (JSON ou formulário); HTTP Basic do cliente não é aceito. Credencial inexistente, segredo errado e integração revogada respondem o mesmo 401. A resposta tem Cache-Control: no-store.
Corpo da requisição
grant_type
string
obrigatório
client_id
string
obrigatório
Identificador público (cli_...).
client_secret
string
obrigatório
Segredo (cs_...), exibido só na criação/troca.
scope
string (anulável)
Escopos separados por espaço, contidos nos da integração. Ausente/vazio = todos os escopos da integração. Escopo desconhecido → 422 FIELD_ENUM_INVALID.
Respostas
200 Token emitido (válido por 1 hora; não há refresh token).
access_token
string
obrigatório
Token opaco (cat_...).
token_type
string
obrigatório
expires_in
integer
obrigatório
Validade em segundos (3600).
scope
string
obrigatório
Escopos concedidos, separados por espaço.
401
Credenciais inválidas ou integração revogada. Códigos possíveis: AUTH_CREDENTIALS_INVALID.
type
string
obrigatório
https://cuidaro.com.br/errors/{slug} — ainda não é endereço navegável.
title
string
obrigatório
Título curto e estável por código (inglês).
status
integer
obrigatório
detail
string
obrigatório
Texto para pessoas, em pt-BR. Pode mudar; não use para lógica.
instance
string
obrigatório
Caminho da requisição (ex.: /api/v1/me).
code
string
obrigatório
Catálogo estável de códigos de erro (App\Enums\ApiErrorCode). Código publicado nunca é renomeado nem removido; códigos novos podem surgir — trate valor desconhecido como erro genérico do status HTTP. O status, o título e o type de cada código estão em x-cuidaro-error-catalog.
metric
string
Só em PLAN_QUOTA_EXCEEDED: métrica do plano atingida.
limit
integer (anulável)
Só em PLAN_QUOTA_EXCEEDED: limite do plano.
existing_resource_id
integer
Só em RESOURCE_ALREADY_EXISTS: id do recurso que já existe.
expected_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: total da OS.
received_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: valor recebido em settlement.amount.
service_order_status
string
Só no RESOURCE_STATE_CONFLICT do faturamento: status público atual da OS.
403
Escopo pedido fora do liberado à integração, ou empresa sem acesso. Códigos possíveis: AUTH_SCOPE_INSUFFICIENT, AUTH_TENANT_SUSPENDED, AUTH_TENANT_PLAN_WITHOUT_API.
type
string
obrigatório
https://cuidaro.com.br/errors/{slug} — ainda não é endereço navegável.
title
string
obrigatório
Título curto e estável por código (inglês).
status
integer
obrigatório
detail
string
obrigatório
Texto para pessoas, em pt-BR. Pode mudar; não use para lógica.
instance
string
obrigatório
Caminho da requisição (ex.: /api/v1/me).
code
string
obrigatório
Catálogo estável de códigos de erro (App\Enums\ApiErrorCode). Código publicado nunca é renomeado nem removido; códigos novos podem surgir — trate valor desconhecido como erro genérico do status HTTP. O status, o título e o type de cada código estão em x-cuidaro-error-catalog.
metric
string
Só em PLAN_QUOTA_EXCEEDED: métrica do plano atingida.
limit
integer (anulável)
Só em PLAN_QUOTA_EXCEEDED: limite do plano.
existing_resource_id
integer
Só em RESOURCE_ALREADY_EXISTS: id do recurso que já existe.
expected_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: total da OS.
received_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: valor recebido em settlement.amount.
service_order_status
string
Só no RESOURCE_STATE_CONFLICT do faturamento: status público atual da OS.
413
Corpo acima de 512 KB. Códigos possíveis: PAYLOAD_TOO_LARGE.
type
string
obrigatório
https://cuidaro.com.br/errors/{slug} — ainda não é endereço navegável.
title
string
obrigatório
Título curto e estável por código (inglês).
status
integer
obrigatório
detail
string
obrigatório
Texto para pessoas, em pt-BR. Pode mudar; não use para lógica.
instance
string
obrigatório
Caminho da requisição (ex.: /api/v1/me).
code
string
obrigatório
Catálogo estável de códigos de erro (App\Enums\ApiErrorCode). Código publicado nunca é renomeado nem removido; códigos novos podem surgir — trate valor desconhecido como erro genérico do status HTTP. O status, o título e o type de cada código estão em x-cuidaro-error-catalog.
metric
string
Só em PLAN_QUOTA_EXCEEDED: métrica do plano atingida.
limit
integer (anulável)
Só em PLAN_QUOTA_EXCEEDED: limite do plano.
existing_resource_id
integer
Só em RESOURCE_ALREADY_EXISTS: id do recurso que já existe.
expected_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: total da OS.
received_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: valor recebido em settlement.amount.
service_order_status
string
Só no RESOURCE_STATE_CONFLICT do faturamento: status público atual da OS.
422
Dados inválidos — detalhes em errors/error_codes.
type
string
obrigatório
https://cuidaro.com.br/errors/{slug} — ainda não é endereço navegável.
title
string
obrigatório
Título curto e estável por código (inglês).
status
integer
obrigatório
detail
string
obrigatório
Texto para pessoas, em pt-BR. Pode mudar; não use para lógica.
instance
string
obrigatório
Caminho da requisição (ex.: /api/v1/me).
code
string
obrigatório
Catálogo estável de códigos de erro (App\Enums\ApiErrorCode). Código publicado nunca é renomeado nem removido; códigos novos podem surgir — trate valor desconhecido como erro genérico do status HTTP. O status, o título e o type de cada código estão em x-cuidaro-error-catalog.
metric
string
Só em PLAN_QUOTA_EXCEEDED: métrica do plano atingida.
limit
integer (anulável)
Só em PLAN_QUOTA_EXCEEDED: limite do plano.
existing_resource_id
integer
Só em RESOURCE_ALREADY_EXISTS: id do recurso que já existe.
expected_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: total da OS.
received_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: valor recebido em settlement.amount.
service_order_status
string
Só no RESOURCE_STATE_CONFLICT do faturamento: status público atual da OS.
errors
object
Mensagens por campo (pt-BR).
error_codes
object
Códigos estáveis por campo: FIELD_REQUIRED, FIELD_TYPE_INVALID, FIELD_MAX_LENGTH, FIELD_ENUM_INVALID, FIELD_INVALID, WEBHOOK_URL_NOT_ALLOWED.
429
Mais de 10 emissões por minuto do mesmo IP. Código: RATE_LIMIT_EXCEEDED.
type
string
obrigatório
https://cuidaro.com.br/errors/{slug} — ainda não é endereço navegável.
title
string
obrigatório
Título curto e estável por código (inglês).
status
integer
obrigatório
detail
string
obrigatório
Texto para pessoas, em pt-BR. Pode mudar; não use para lógica.
instance
string
obrigatório
Caminho da requisição (ex.: /api/v1/me).
code
string
obrigatório
Catálogo estável de códigos de erro (App\Enums\ApiErrorCode). Código publicado nunca é renomeado nem removido; códigos novos podem surgir — trate valor desconhecido como erro genérico do status HTTP. O status, o título e o type de cada código estão em x-cuidaro-error-catalog.
metric
string
Só em PLAN_QUOTA_EXCEEDED: métrica do plano atingida.
limit
integer (anulável)
Só em PLAN_QUOTA_EXCEEDED: limite do plano.
existing_resource_id
integer
Só em RESOURCE_ALREADY_EXISTS: id do recurso que já existe.
expected_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: total da OS.
received_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: valor recebido em settlement.amount.
service_order_status
string
Só no RESOURCE_STATE_CONFLICT do faturamento: status público atual da OS.
500
Erro interno, sem mensagem interna nem stack trace. Códigos possíveis: INTERNAL_ERROR.
type
string
obrigatório
https://cuidaro.com.br/errors/{slug} — ainda não é endereço navegável.
title
string
obrigatório
Título curto e estável por código (inglês).
status
integer
obrigatório
detail
string
obrigatório
Texto para pessoas, em pt-BR. Pode mudar; não use para lógica.
instance
string
obrigatório
Caminho da requisição (ex.: /api/v1/me).
code
string
obrigatório
Catálogo estável de códigos de erro (App\Enums\ApiErrorCode). Código publicado nunca é renomeado nem removido; códigos novos podem surgir — trate valor desconhecido como erro genérico do status HTTP. O status, o título e o type de cada código estão em x-cuidaro-error-catalog.
metric
string
Só em PLAN_QUOTA_EXCEEDED: métrica do plano atingida.
limit
integer (anulável)
Só em PLAN_QUOTA_EXCEEDED: limite do plano.
existing_resource_id
integer
Só em RESOURCE_ALREADY_EXISTS: id do recurso que já existe.
expected_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: total da OS.
received_amount
string
Só em SETTLEMENT_AMOUNT_MISMATCH: valor recebido em settlement.amount.
service_order_status
string
Só no RESOURCE_STATE_CONFLICT do faturamento: status público atual da OS.