Codigos de error
Codigos de error
Todos los errores de la API devuelven un formato JSON consistente:
{
"error": "Not Found",
"message": "Resume not found",
"statusCode": 404
}Codigos de estado HTTP
| Codigo | Nombre | Descripcion |
|---|---|---|
200 | OK | Solicitud exitosa |
201 | Created | Recurso creado exitosamente |
400 | Bad Request | Cuerpo de solicitud o parametros invalidos |
401 | Unauthorized | Clave API faltante o invalida |
402 | Payment Required | Sin creditos disponibles. Compra mas o espera al reinicio mensual |
403 | Forbidden | Accion no permitida (ej. BYOK sin suscripcion) |
404 | Not Found | El recurso no existe |
413 | Payload Too Large | La subida de archivo excede el limite de 10 MB |
422 | Unprocessable Entity | JSON valido pero semanticamente invalido (ej. descripcion de empleo muy corta) |
429 | Too Many Requests | Rate limit excedido. Reintenta despues del valor del header Retry-After |
500 | Internal Server Error | Algo fallo de nuestro lado |
Escenarios de error comunes
Clave API faltante
{
"error": "Unauthorized",
"message": "Missing x-api-key header",
"statusCode": 401
}Solucion: Agrega tu clave API al header x-api-key.
Clave API invalida
{
"error": "Unauthorized",
"message": "Invalid API key",
"statusCode": 401
}Solucion: Verifica tu clave en console.laddro.com. Las claves pueden haber sido revocadas.
Sin creditos
{
"error": "Payment Required",
"message": "No credits remaining. Purchase credits at console.laddro.com",
"statusCode": 402
}Solucion: Compra un paquete de creditos o espera al reinicio del plan gratuito.
BYOK sin suscripcion activa
{
"error": "Forbidden",
"message": "BYOK requires an active recurring Laddro subscription",
"statusCode": 403
}Solucion: Suscribete en laddro.com con un plan recurrente.
Clave de proveedor invalida
{
"error": "Unprocessable Entity",
"message": "API key validation failed for provider 'anthropic': invalid_api_key",
"statusCode": 422
}Solucion: Verifica tu clave API del proveedor. La API valida las claves con una llamada de prueba antes de guardarlas.
Estrategia de reintentos
Para errores 429 y 5xx, implementa 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))
}
}
}