Growth OS API

Erros

Um envelope só, sempre — code, message e request_id. Aqui está a lista completa de codes.

Toda resposta de erro da API — em qualquer rota, qualquer status — usa o mesmo formato. Nunca um HTML de erro, nunca um corpo vazio.

json
{
  "error": {
    "code": "forbidden_scope",
    "message": "Esta chave não tem o escopo contacts.write.",
    "request_id": "a1b2c3d4e5f6"
  }
}

code é estável — pode basear lógica em cima dele (retry, mensagem pro seu usuário). message é pra humano, em português, pode mudar de texto sem aviso.

Reportando um erro pra gente

Toda resposta — erro ou sucesso — já vem com o header x-request-id, e ele também aparece dentro do corpo do erro como request_id (o mesmo valor nos dois lugares). Se algo falhar de um jeito que não faz sentido, esse id é o que a gente precisa pra achar exatamente a chamada nos nossos registros — bem mais rápido que descrever "por volta de tal hora, chamando tal rota".

Codes por status

StatuscodeQuando
400validation_errorCorpo ou parâmetro fora do formato esperado.
401unauthorizedToken ausente, desconhecido, revogado, expirado, ou rotacionado (use o novo).
403forbidden_scopeA chave não tem o escopo que a rota exige — a mensagem nomeia qual.
403forbidden_ipA chave tem allowlist de IP e a chamada veio de fora dela.
403forbidden_platformplatform.read só funciona pra chave do workspace da Accelera.
404not_foundRecurso não existe (ou existe em outro workspace — nunca vaza isso).
409conflictEstado atual do recurso não permite a operação.
409idempotency_conflictMesma Idempotency-Key, corpo diferente — veja idempotência.
413payload_too_largeCorpo da escrita passou de 7,5 KB.
422unprocessablePassou na validação de formato, mas a ação não pôde ser concluída.
429rate_limitedEstourou o limite (veja limites de uso) — respeite o Retry-After.
500internal_errorBug nosso. Tente de novo; se persistir, é rastreado automaticamente do nosso lado.