Docs / Erros

Erros

Todos os erros retornam JSON com campo error.

401

Unauthorized

API Key inválida, expirada ou ausente no header.

{
  "error": "unauthorized",
  "message": "API Key inválida ou ausente."
}

Verifique o header: Authorization: Bearer SUA_API_KEY

429

Rate Limit (IP)

Mais de 60 req/min ou 500 req/hora do mesmo IP.

{
  "error": "rate_limit_exceeded",
  "message": "Muitas requisições por minuto deste IP. Aguarde alguns segundos.",
  "retry_after_seconds": 60
}

Aguardar retry_after_seconds antes de tentar novamente.

429

Limite Diário (Free)

Plano Free atingiu 100 créditos por dia.

{
  "error": "daily_limit_exceeded",
  "message": "Limite diário de 100 créditos atingido no plano gratuito. Renova amanhã ou faça upgrade.",
  "credits_used": 100,
  "credits_limit": 100,
  "reset_at": "2026-05-11T00:00:00Z",
  "upgrade_url": "https://naluai.dev/precos",
  "hint": "Plano Starter: 15.000 créditos/mês sem limite diário. R$ 29/mês."
}
429

Créditos Esgotados

Limite mensal do plano atingido.

{
  "error": "credits_exhausted",
  "message": "Seus créditos do mês acabaram. Seu plano (Free) permite 3.000 créditos/mês.",
  "credits_used": 3000,
  "credits_limit": 3000,
  "reset_at": "2026-06-01T00:00:00Z",
  "upgrade_url": "https://naluai.dev/precos",
  "hint": "Upgrade para Starter por apenas R$ 0,0058 por validação."
}
503

Service Unavailable

O motor de IA está temporariamente indisponível. O header Retry-After: 30 indica quando tentar.

# Headers na resposta:
Retry-After: 30

# Estratégia recomendada:
- Tentar novamente após 30 segundos
- Máximo 3 tentativas com backoff exponencial
- Após 3 falhas: retornar erro para o usuário
200

obtained: false (não é erro)

HTTP 200 com obtained: false significa que o dado não foi encontrado na resposta do usuário. Não é um erro — use suggestion_to_agent para perguntar novamente.

{
  "obtained": false,
  "extracted_value": null,
  "certain": false,
  "confidence": "low",
  "suggestion_to_agent": "Desculpe, não consegui identificar seu CPF. Pode digitar apenas os números? Ex: 111.444.777-35"
}

Estratégia de retry recomendada

Código Retry? Como
401NãoCorrigir API Key
429 rateSimAguardar retry_after_seconds
429 creditsNãoFazer upgrade ou aguardar reset mensal
503SimBackoff: 30s, 60s, 120s