Référence
Erreurs
Les erreurs arrivent au format OpenAI, avec un code stable sur lequel vous pouvez vous appuyer et un message écrit pour les personnes. Un appel refusé ou échoué ne coûte rien.
Vérifié le 26 octobre 2026
La forme
{
"error": {
"type": "rate_limit_error",
"code": "daily_cap",
"message": "This call needs up to $0.02 and the key has $0.01 left of its $2.00 daily cap, which resets at 00:00 UTC. …"
}
}Basez-vous sur code, pas sur message : les messages peuvent être reformulés, les codes restent. type suit celui d'OpenAI, pour que les SDK lèvent l'exception attendue.
Tous les codes
| Statut | Code | Quand | Solution |
|---|---|---|---|
| 401 | missing_key | Aucune clé n’a été envoyée. | Envoyez-la sous la forme Authorization: Bearer sk-nokeep-…. Créez-en une dans la console, ou essayez d’abord sk-nokeep-test. |
| 401 | invalid_key | La clé est erronée ou a été révoquée. | Recopiez la clé depuis l’endroit où vous l’avez gardée ; la console n’en montre que les quatre derniers caractères. Si elle est perdue, créez-en une nouvelle. |
| 403 | account_frozen | Les fonctions payantes sont suspendues sur le compte auquel appartient la clé. | Écrivez-nous depuis la page de contact. |
| 429 | rate_limited | La clé a envoyé plus de 120 requêtes en une minute (20 pour la clé de test, par adresse). | Attendez les secondes indiquées par Retry-After, puis réessayez. |
| 429 | daily_cap | L’appel pourrait dépasser le plafond quotidien de la clé. | Relevez le plafond dans la console, baissez max_tokens ou attendez 00:00 UTC (Retry-After indique combien de temps). |
| 402 | insufficient_credits | Les crédits achetés du compte ne suffisent pas pour cet appel. | Rechargez dès $5 dans la console, ou baissez max_tokens. Les crédits d’un forfait restent dans l’application. |
| 400 | invalid_json | Le corps n’est pas un objet JSON. | Envoyez Content-Type: application/json et un objet JSON. |
| 413 | too_large | La requête dépasse 12 Mo. | Envoyez les images sous forme de liens plutôt qu’en data URLs, ou envoyez-en moins à la fois. |
| 404 | model_not_found | L’id du modèle ne fait pas partie des nôtres. | GET /v1/models liste les ids. Vérifiez qu’il n’y a pas de faute de frappe ni de -uncensored manquant. |
| 400 | invalid_messages | messages est absent ou vide, trop long, contient un rôle inconnu, ou un message d’outil n’a pas de tool_call_id. | Envoyez de 1 à 2 000 messages, chacun avec le rôle system, developer, user, assistant ou tool. |
| 400 | unsupported_n | n est supérieur à 1. | Envoyez une requête par réponse souhaitée. |
| 400 | invalid_reasoning_effort | Le modèle n’accepte pas ce reasoning_effort. | DeepSeek accepte none, low, high ou max. GLM accepte low ou high. |
| 400 | unsupported_tool_choice | GLM a reçu une fonction nommée ou "required" comme tool_choice. | Envoyez auto ou none à GLM ; il choisit lui-même ses outils. DeepSeek accepte toutes les formes. |
| 400 | unsupported_input | Une partie du contenu est d’un type que le modèle ne sait pas lire. | Envoyez les images à DeepSeek ; GLM ne lit que du texte. |
| 400 | too_many_images | Plus de dix images dans une requête. | Envoyez-en dix au maximum. |
| 422 | hard_limit | La requête franchit l’une des limites strictes des conditions. | Rien n’a été facturé. Retirez le message de l’historique que vous renvoyez, sinon l’appel suivant s’arrêtera aussi. |
| 400 | rejected | Le modèle n’a pas pu accepter la requête telle qu’envoyée. | Comparez les paramètres à la liste du modèle dans Modèles. Rien n’a été facturé. |
| 503 | busy | Le modèle est occupé. | Réessayez après les secondes de Retry-After. Rien n’a été facturé. |
| 503 | model_unavailable | Le modèle est hors ligne de notre côté. | Utilisez l’autre modèle pour l’instant ; la page d’état indique quand il revient. |
| 502 | upstream_error | Le modèle a échoué avant d’écrire un mot. | Réessayez dans un instant. Rien n’a été facturé. |
| 404 | not_found | La route n’existe pas. | L’API sert GET /v1/models, GET /v1/models/{id}, GET /v1/status et POST /v1/chat/completions. |
| 404 | api_closed | L’API est désactivée. | Réessayez plus tard. |
| Dans un stream | Code | Quand | Solution |
|---|---|---|---|
| — | stream_cut | Le modèle s’est arrêté avant la fin, en plein stream. | Ce qu’il a écrit est facturé, rien de plus. Réessayez pour obtenir la suite, ou reprenez à partir de ce qui est arrivé. |
Lesquelles relancer
- Relancez
429 rate_limited,503 busyet502 upstream_error, après les secondes indiquées parRetry-Afterlorsqu'il y en a. - Ne relancez pas les
400,401,402,404ni422: la même requête reçoit la même réponse. - Un
429 daily_capattend 00:00 UTC. Augmentez plutôt le plafond.