Pular para o conteúdo principal

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

StatusCodeQuando
401AUTHENTICATION_ERRORAPI key ausente, malformada ou revogada.
401TOKEN_EXPIREDAPI key expirou. Solicite uma nova.
402SUBSCRIPTION_INACTIVESubscription não está mais ativa.
429QUOTA_EXCEEDEDTeto mensal atingido para o período de billing atual.
429RATE_LIMIT_EXCEEDEDMuitas 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

StatusCodeQuando
422(validação de request)JSON malformado, tipos errados, campos obrigatórios faltando.
422PROGRAM_VALIDATION_ERROREstrutura do ruleset inválida (depth, refs, limites).
422UNKNOWN_SOURCERuleset referencia source que você não pode acessar.
StatusCodeQuando
404RULESET_NOT_FOUNDruleset_id não resolve.
409RULESET_ALREADY_EXISTS(name, version) já está em uso.

Idempotência

StatusCodeQuando
422IDEMPOTENCY_KEY_INVALIDHeader Idempotency-Key malformado.
422IDEMPOTENCY_KEY_CONFLICTMesma chave, body diferente.
429IDEMPOTENCY_KEY_EXHAUSTEDMuitas requests concorrentes com a mesma chave.
410IDEMPOTENCY_REPLAY_EXPIREDA janela de replay para essa chave expirou.

Servidor (5xx)

StatusCodeQuando
500INTERNAL_ERRORErro 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.