Codigos de Erro
Codigos de Erro
Todos os erros da API devolvem um formato JSON consistente:
{
"error": "Not Found",
"message": "Resume not found",
"statusCode": 404
}Codigos de Estado HTTP
| Codigo | Nome | Descricao |
|---|---|---|
200 | OK | Pedido bem-sucedido |
201 | Created | Recurso criado com sucesso |
400 | Bad Request | Corpo ou parametros do pedido invalidos |
401 | Unauthorized | Chave API em falta ou invalida |
402 | Payment Required | Sem creditos restantes. Compre mais ou aguarde a renovacao mensal |
403 | Forbidden | Acao nao permitida (ex.: BYOK sem subscricao) |
404 | Not Found | Recurso nao existe |
413 | Payload Too Large | Upload de ficheiro excede o limite de 10MB |
422 | Unprocessable Entity | JSON valido mas semanticamente invalido (ex.: descricao de emprego demasiado curta) |
429 | Too Many Requests | Limite de pedidos excedido. Tente novamente apos o valor do cabecalho Retry-After |
500 | Internal Server Error | Algo correu mal do nosso lado |
Cenarios de Erro Comuns
Chave API em Falta
{
"error": "Unauthorized",
"message": "Missing x-api-key header",
"statusCode": 401
}Solucao: Adicione a sua chave API ao cabecalho x-api-key.
Chave API Invalida
{
"error": "Unauthorized",
"message": "Invalid API key",
"statusCode": 401
}Solucao: Verifique a sua chave em console.laddro.com. As chaves podem ter sido revogadas.
Sem Creditos
{
"error": "Payment Required",
"message": "No credits remaining. Purchase credits at console.laddro.com",
"statusCode": 402
}Solucao: Compre um pacote de creditos ou aguarde a renovacao do seu limite mensal gratuito.
BYOK Sem Subscricao Ativa
{
"error": "Forbidden",
"message": "BYOK requires an active recurring Laddro subscription",
"statusCode": 403
}Solucao: Subscreva em laddro.com com um plano recorrente.
Chave de Fornecedor Invalida
{
"error": "Unprocessable Entity",
"message": "API key validation failed for provider 'anthropic': invalid_api_key",
"statusCode": 422
}Solucao: Verifique a chave API do seu fornecedor. A API valida as chaves com uma chamada de teste antes de guardar.
Estrategia de Tentativas
Para erros 429 e 5xx, implemente backoff exponencial:
async function withRetry(fn: () => Promise<Response>, maxRetries = 3) {
for (let i = 0; i < maxRetries; i++) {
try {
const response = await fn()
if (response.status === 429) {
const retryAfter = parseInt(response.headers.get('Retry-After') || '1')
await new Promise(r => setTimeout(r, retryAfter * 1000))
continue
}
return response
} catch (error) {
if (i === maxRetries - 1) throw error
await new Promise(r => setTimeout(r, Math.pow(2, i) * 1000))
}
}
}