Gestion des erreurs
/api/v1/chat/completions et /api/v1/models renvoient les erreurs au format
OpenAI :
{
"error": {
"message": "Insufficient credits (balance: 0.00). Buy more credits or wait for your next billing cycle.",
"type": "invalid_request_error",
"code": "insufficient_credits",
"param": null
}
}
/api/v1/messages et /api/v1/messages/count_tokens renvoient le format
Anthropic :
{
"type": "error",
"error": {
"type": "authentication_error",
"message": "Invalid API key. Create one in your TokRouter settings."
}
}
Codes HTTP
| HTTP | code (OpenAI) | type (Anthropic) | Cause |
|---|---|---|---|
| 400 | invalid_request | invalid_request_error | Corps JSON invalide, ou model/messages manquant |
| 400 | message_too_long | invalid_request_error | Message trop long pour la version gratuite |
| 401 | invalid_api_key | authentication_error | Clé API absente, invalide ou révoquée |
| 402 | insufficient_credits | — | Solde de crédits épuisé (≤ 0) |
| 403 | subscription_required | — | Modèle réservé aux abonnés ou détenteurs de crédits |
| 404 | model_not_found | not_found_error | Identifiant de modèle inconnu ou non activé |
| 429 | rate_limit_exceeded | rate_limit_error | Limite de débit par clé API dépassée |
| 429 | daily_limit_reached | invalid_request_error | Limite quotidienne de la version gratuite atteinte |
| 502 | upstream_auth_error | api_error | Erreur de configuration côté serveur TokRouter (pas votre clé) |
| selon le fournisseur | upstream_error | api_error | Le fournisseur du modèle a renvoyé une erreur ; le code HTTP transmis est le sien |
Ce qui ne change jamais
- Une erreur ne débite jamais vos crédits : la facturation n'a lieu qu'après une réponse réussie contenant l'usage exact (voir Crédits et facturation).
- Une erreur 401/403 provenant du fournisseur de modèles (mauvaise
configuration côté TokRouter) ne vous est jamais présentée comme un
problème avec votre clé API : elle renvoie systématiquement
502avec le codeupstream_auth_error/api_error. - Il n'existe pas encore de bascule automatique vers un autre modèle en cas d'erreur fournisseur : la requête échoue avec le code ci-dessus.
Limite de débit
Chaque réponse (succès ou erreur) inclut les en-têtes X-RateLimit-Limit,
X-RateLimit-Remaining et X-RateLimit-Reset. Une erreur 429 ajoute aussi
Retry-After (secondes avant la prochaine fenêtre).