Codes d'erreur
Codes d'erreur
Toutes les erreurs API retournent un format JSON coherent :
{
"error": "Not Found",
"message": "Resume not found",
"statusCode": 404
}Codes de statut HTTP
| Code | Nom | Description |
|---|---|---|
200 | OK | Requete reussie |
201 | Created | Ressource creee avec succes |
400 | Bad Request | Corps de requete ou parametres invalides |
401 | Unauthorized | Cle API manquante ou invalide |
402 | Payment Required | Plus de credits disponibles. Achetez-en ou attendez la reinitialisation mensuelle |
403 | Forbidden | Action non autorisee (ex. BYOK sans abonnement) |
404 | Not Found | La ressource n'existe pas |
413 | Payload Too Large | Le fichier telecharge depasse la limite de 10 Mo |
422 | Unprocessable Entity | JSON valide mais semantiquement invalide (ex. description de poste trop courte) |
429 | Too Many Requests | Rate limit depasse. Reessayez apres la valeur du header Retry-After |
500 | Internal Server Error | Quelque chose a mal tourne de notre cote |
Scenarios d'erreur courants
Cle API manquante
{ "error": "Unauthorized", "message": "Missing x-api-key header", "statusCode": 401 }Solution : Ajoutez votre cle API au header x-api-key.
Cle API invalide
{ "error": "Unauthorized", "message": "Invalid API key", "statusCode": 401 }Solution : Verifiez votre cle sur console.laddro.com. Les cles ont peut-etre ete revoquees.
Plus de credits
{ "error": "Payment Required", "message": "No credits remaining. Purchase credits at console.laddro.com", "statusCode": 402 }Solution : Achetez un pack de credits ou attendez la reinitialisation du forfait gratuit.
BYOK sans abonnement actif
{ "error": "Forbidden", "message": "BYOK requires an active recurring Laddro subscription", "statusCode": 403 }Solution : Abonnez-vous sur laddro.com avec un plan recurrent.
Cle de fournisseur invalide
{ "error": "Unprocessable Entity", "message": "API key validation failed for provider 'anthropic': invalid_api_key", "statusCode": 422 }Solution : Verifiez votre cle API du fournisseur. L'API valide les cles avec un appel de test avant de les enregistrer.
Strategie de reessai
Pour les erreurs 429 et 5xx, implementez un backoff exponentiel :
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))
}
}
}