Enveloppe d’erreur
La plupart des réponses d’erreur utilisent cette forme JSON compatible OpenAI :type est une catégorie large, code est un identifiant spécifique.
Certains échecs de chemin rapide (notamment les 429 au niveau espace
de travail) ne retournent qu’un code de statut HTTP avec les en-têtes
pertinents et aucun corps JSON.
Codes de statut HTTP
| Statut | Signification | Cause typique |
|---|---|---|
400 | Mauvaise requête | Paramètres invalides, champs requis manquants, violation de schéma |
401 | Non autorisé | Clé API manquante ou invalide |
403 | Interdit | Quota insuffisant, ou la clé ne peut appeler ce modèle |
404 | Non trouvé | Le modèle ou l’endpoint n’existe pas |
429 | Trop de requêtes | Limite de taux atteinte — voir Limites de taux. La réponse inclut toujours un en-tête Retry-After. |
500 | Erreur interne | Bug côté OrcaRouter |
502 | Erreur amont | Tous les fournisseurs amont ont échoué (incluant toute chaîne de fallback) |
503 | Service indisponible | Le modèle demandé est temporairement indisponible en amont |
Types d’erreur que vous pouvez voir dans error.type
error.type | D’où il vient |
|---|---|
orcarouter_api_error | Échecs côté passerelle (auth, quota, taux, interne) |
upstream_error | Le fournisseur amont a retourné une erreur ou expiré |
openai_error | Erreur amont compatible OpenAI préservée mot pour mot |
claude_error | Erreur amont Anthropic préservée mot pour mot |
gemini_error | Erreur amont Gemini préservée mot pour mot |
Codes d’erreur que vous pouvez voir dans error.code
Ce sont des codes émis par la passerelle pour les échecs qui
proviennent d’OrcaRouter (pas de l’amont) :
error.code | HTTP | Signification |
|---|---|---|
insufficient_user_quota | 403 | Crédit du compte épuisé. Rechargez. |
model_not_found | 503 | Ce modèle n’est pas disponible pour votre compte. |
model_price_error | 400 | Le prix de ce modèle n’est pas configuré. Contactez le support. |
api_not_implemented | 400 | Endpoint ou opération non pris en charge pour le modèle choisi. |
bad_request_body | 400 | Le corps de la requête n’a pas pu être analysé. |
prompt_blocked | 400 | La politique de sécurité du fournisseur a bloqué le prompt avant génération. |
sensitive_words_detected | 400 | Le filtre de contenu sensible a rejeté le prompt. |
error.code (spécifique) et revenez à
error.type (catégorie large).
Erreurs de streaming
Les erreurs pendant une réponse streamée ne peuvent pas utiliser de codes de statut HTTP (le statut a été envoyé à l’ouverture du flux). Le format dépend de l’endpoint :/v1/chat/completions et /v1/responses (compatible OpenAI)
L’erreur arrive comme un morceau data: {...} en bande :
data: comme JSON ; s’il a un champ error,
traitez le flux comme échoué.
/v1/messages (compatible Anthropic)
Anthropic utilise des événements nommés SSE. Un échec de flux arrive
comme :
event: message_stop (ou est coupé) après
l’événement d’erreur.
Erreurs de fallback
Quandextra_body.models est défini et que tous les modèles de la
chaîne échouent, vous obtenez un 502 avec les détails de la
dernière erreur amont. Les en-têtes de réponse
X-Orca-Fallback-Level et X-Orca-Fallback-Model indiquent quel
fallback était essayé quand la chaîne a été épuisée. Voir
En-têtes de réponse.