Documentation Index
Fetch the complete documentation index at: https://docs-attestly.code4source.com/llms.txt
Use this file to discover all available pages before exploring further.
Erros retornam um body JSON com um code estável:
{
"title": "Quota Exceeded",
"status": 429,
"code": "QUOTA_EXCEEDED",
"detail": "Monthly quota exceeded.",
"limit": 10000,
"used": 10000,
"period_started_at": "2026-04-15T00:00:00Z",
"period_ends_at": "2026-05-15T00:00:00Z"
}
Faça match pelo code — não pelo title ou detail, que são para
humanos e podem ser reescritos.
Autenticação & acesso
| Status | Code | Quando |
|---|
| 401 | AUTHENTICATION_ERROR | API key ausente, malformada ou revogada. |
| 401 | TOKEN_EXPIRED | API key expirou. Solicite uma nova. |
| 402 | SUBSCRIPTION_INACTIVE | Subscription não está mais ativa. |
| 429 | QUOTA_EXCEEDED | Teto mensal atingido para o período de billing atual. |
| 429 | RATE_LIMIT_EXCEEDED | Muitas requests em uma janela curta. |
Respostas 429 carregam headers Retry-After e X-RateLimit-*,
mais campos limit, used, period_started_at, period_ends_at
para QUOTA_EXCEEDED. Veja Quotas.
Validação
| Status | Code | Quando |
|---|
| 422 | (validação de request) | JSON malformado, tipos errados, campos obrigatórios faltando. |
| 422 | PROGRAM_VALIDATION_ERROR | Estrutura do ruleset inválida (depth, refs, limites). |
| 422 | UNKNOWN_SOURCE | Ruleset referencia source que você não pode acessar. |
Catálogo
| Status | Code | Quando |
|---|
| 404 | RULESET_NOT_FOUND | ruleset_id não resolve. |
| 409 | RULESET_ALREADY_EXISTS | (name, version) já está em uso. |
Idempotência
| Status | Code | Quando |
|---|
| 422 | IDEMPOTENCY_KEY_INVALID | Header Idempotency-Key malformado. |
| 422 | IDEMPOTENCY_KEY_CONFLICT | Mesma chave, body diferente. |
| 429 | IDEMPOTENCY_KEY_EXHAUSTED | Muitas requests concorrentes com a mesma chave. |
| 410 | IDEMPOTENCY_REPLAY_EXPIRED | A janela de replay para essa chave expirou. |
Servidor (5xx)
| Status | Code | Quando |
|---|
| 500 | INTERNAL_ERROR | Erro inesperado do servidor. |
| 503 | (indisponível) | Problema transiente de infraestrutura. |
Respostas 5xx são repetíveis. Use exponential backoff com jitter; se
persistir, contate support@attestly.io.
Falhas parciais (200)
Falha de source ou check não derruba a request inteira. A resposta é
200 mas verdict.status = "degraded" e o check afetado carrega
status: "failed" com mensagem em error. Veja
Verdicts.