Erreurs et limites de débit
Ce que signifie chaque code de statut et comment y remédier.
Le format d'erreur
Les erreurs reviennent sous forme de JSON au format d'erreur OpenAI. Le message indique ce qui s'est passé, code est un identifiant stable lisible par machine, et un id de requête est ajouté à chaque message :
{
"error": {
"message": "Model \"gpt-5.5-typo\" is not offered here. Check the model name for typos, or switch to a model from our supported list. (request id: 20260705...)",
"type": "new_api_error",
"code": "model_not_found"
}
}Incluez toujours l'id de requête lorsque vous contactez le support ou ouvrez un ticket Discord. Il nous permet de retrouver votre requête exacte dans les journaux.
Les codes de statut en un coup d'œil
Les codes de statut que vous rencontrerez réellement :
| Code | Signification | Que faire |
|---|---|---|
400 | Requête invalide : valeurs de paramètres incorrectes (par exemple max_tokens en dessous du minimum du modèle) ou prompt bloqué par la modération de contenu. | Corrigez la requête. La réessayer sans changement échouera de nouveau. |
401 | Problème de clé : clé d'API manquante, invalide, expirée ou désactivée. | Vérifiez l'en-tête Authorization et votre clé sur la page Jetons. |
402 | La limite de dépense propre à cette clé est épuisée. | Augmentez la limite de la clé ou créez une nouvelle clé. |
403 | Accès refusé : solde du compte vide, modèle non autorisé pour cette clé, ou votre IP ne figure pas sur la liste d'autorisation de la clé. | Rechargez, ou vérifiez les restrictions de modèle et d'IP de la clé. |
413 | Requête trop volumineuse pour le plafond de l'essai gratuit de ce modèle. | Raccourcissez le prompt ou passez au modèle payant. |
429 | Une limite de débit s'est déclenchée (voir les types ci-dessous). | Attendez les secondes de Retry-After, puis réessayez ou changez de modèle. |
500 | Quelque chose a échoué de notre côté ou chez le fournisseur upstream. | Réessayez après une courte attente ; des 500 persistants méritent un signalement. |
503 | Tous les fournisseurs du modèle sont occupés, ou le nom du modèle n'existe pas. | Lisez le message : l'occupation se résout en quelques minutes, une faute de frappe non. |
503 : occupé ou modèle inconnu
Deux situations très différentes partagent le statut 503. La première est une congestion temporaire :
HTTP/1.1 503 Service Unavailable
{
"error": {
"message": "All providers for model \"kimi-k2.6:free\" are busy right now (they hit their rate limit). This is not a spelling error. Please try again in a little while, or switch to another model. (request id: 20260705...)",
"type": "new_api_error",
"code": "get_channel_failed"
}
}Le code get_channel_failed (tous les fournisseurs occupés) signifie que tous les fournisseurs gratuits de ce modèle sont momentanément limités en débit. Cela se rétablit tout seul en quelques minutes : réessayez ou changez de modèle. Le code model_not_found (non proposé ici) signifie que le nom du modèle lui-même ne se résout pas, et réessayer n'aidera jamais. Vérifiez les fautes de frappe ou recherchez le nom actuel dans le catalogue.
Traitez le 503 avec get_channel_failed comme une nouvelle tentative ou un repli, et le 503 avec model_not_found comme une erreur bloquante dans votre client.
Les types de limites de débit
Un 429 peut provenir de plusieurs couches :
- Notre plafond de modèles gratuits : 1 requête par minute par modèle gratuit par utilisateur. Un plafond d'équité pour que les pools partagés survivent aux heures de pointe.
- Limites du fournisseur upstream : le fournisseur derrière un modèle gratuit a atteint son propre plafond ("temporarily rate-limited upstream", c'est-à-dire temporairement limité en amont).
- Budgets quotidiens de jetons sur certains pools gratuits ; ils se réinitialisent à minuit UTC.
- Plafonds de jetons par minute qui se déclenchent sur de très gros prompts.
- Une limite de concurrence par utilisateur lorsque trop de requêtes s'exécutent en parallèle.
Les modèles payants n'ont aucune limite de débit imposée par UnoRouter.
La limite des modèles gratuits en détail
Lorsque notre plafond de 1 par minute se déclenche, vous obtenez des en-têtes standard de limite de débit, pour que les clients puissent temporiser avec précision :
HTTP/1.1 429 Too Many Requests
Retry-After: 38
X-RateLimit-Limit: 1
X-RateLimit-Remaining: 0
X-RateLimit-Reset: 1783198478Retry-After est dynamique : les secondes réellement restantes dans votre fenêtre, et non un 60 fixe. Le message d'erreur nomme aussi le jumeau payant du modèle, qui n'a aucune limite.
Plafonds de taille de l'essai
Certains modèles habituellement payants sont proposés gratuitement avec un plafond de taille de requête. Les prompts trop volumineux reçoivent un 413 avec un message comme : Request body too large for gpt-4.1 model. Max size: 8000 tokens.
Le plafond ne s'applique qu'à la route d'essai gratuit ; le modèle payant accepte les prompts de pleine longueur.
Conseils sur les nouvelles tentatives
Respectez Retry-After sur les 429. Réessayez le 503 get_channel_failed après une courte attente, ou repliez-vous sur un autre modèle. Ne réessayez pas les erreurs de classe 400, elles sont déterministes.
Les requêtes échouées et refusées ne sont pas facturées : toute préautorisation sur votre solde est remboursée lorsque la requête échoue.