Format de réponse d’erreur
Toutes les erreurs renvoient un format JSON cohérent avec des Agent-First hints facultatifs :message, type, code, param) sont toujours présents. Les champs d’indice (did_you_mean, suggestions, hint, retryable, retry_after, balance_usd, estimated_cost_usd) sont des extensions optionnelles pour l’auto-correction des agents IA. Voir le Agent-First API guide pour plus de détails.
Les endpoints compatibles OpenAI utilisent les types d’erreur stables du gateway de LemonData. Les endpoints compatibles Anthropic et Gemini utilisent leurs propres familles d’erreurs natives et formats de réponse.
Codes d’état HTTP
| Code | Description |
|---|---|
| 400 | Requête incorrecte - Paramètres invalides |
| 401 | Non autorisé - Clé API manquante ou invalide |
| 402 | Paiement requis - Solde insuffisant |
| 403 | Interdit - Accès refusé ou modèle non autorisé |
| 404 | Non trouvé - Modèle ou ressource introuvable |
| 413 | Charge utile trop volumineuse - Taille d’entrée ou de fichier dépassée |
| 429 | Trop de requêtes - Limite de débit dépassée |
| 500 | Erreur interne du serveur |
| 502 | Mauvaise passerelle - Erreur du fournisseur en amont |
| 503 | Service indisponible - Service temporairement indisponible |
| 504 | Délai d’attente de la passerelle - Requête expirée |
Types d’erreurs
Erreurs d’authentification (401)
| Type | Code | Description |
|---|---|---|
invalid_api_key | invalid_api_key | La clé API est manquante ou invalide |
expired_api_key | expired_api_key | La clé API a été révoquée |
Erreurs de paiement (402)
| Type | Code | Description |
|---|---|---|
insufficient_balance | insufficient_balance | Le solde du compte est trop faible (endpoints compatibles OpenAI) |
insufficient_balance_error | insufficient_balance | Le solde du compte est trop faible (endpoints compatibles Anthropic) |
quota_exceeded | quota_exceeded | Limite d’utilisation de la clé API atteinte |
Erreurs d’accès (403)
| Type | Code | Description |
|---|---|---|
access_denied | access_denied | Accès à la ressource refusé |
access_denied | model_not_allowed | Modèle non autorisé pour cette clé API |
Erreurs de validation (400)
| Type | Description |
|---|---|
invalid_request_error | Les paramètres de la requête sont invalides |
context_length_exceeded | Entrée trop longue pour le modèle |
model_not_found | Le modèle demandé n’est pas disponible dans le contrat public actuel |
model_not_found.
Erreurs de limitation de débit (429)
Lorsque vous dépassez les limites de débit :Retry-After et le champ retry_after indiquent tous deux le nombre exact de secondes à attendre avant de réessayer.
Charge utile trop volumineuse (413)
Lorsque la taille de l’entrée ou du fichier dépasse les limites :- Fichier image trop volumineux (max 20MB)
- Fichier audio trop volumineux (max 25MB)
- Le texte d’entrée dépasse la longueur de contexte du modèle
Erreurs en amont (502, 503)
| Type | Description |
|---|---|
upstream_error | Le fournisseur a renvoyé une erreur |
all_channels_failed | Aucun fournisseur disponible |
timeout_error | La requête a expiré |
Gestion des erreurs en Python
Gestion des erreurs en JavaScript
Bonnes pratiques
Implémenter un backoff exponentiel
Implémenter un backoff exponentiel
Lorsque vous êtes limité par le débit, attendez de plus en plus longtemps entre les réessais :
Définir des délais d'attente
Définir des délais d'attente
Définissez toujours des délais d’attente raisonnables pour éviter les requêtes bloquées :
Consigner les erreurs pour le débogage
Consigner les erreurs pour le débogage
Consignez la réponse d’erreur complète, y compris l’ID de la requête, pour le support :
Gérer les erreurs spécifiques au modèle
Gérer les erreurs spécifiques au modèle
Certains modèles ont des exigences spécifiques (par ex., nombre maximal de tokens, formats d’image).
Validez les entrées avant d’effectuer des requêtes.