Plateforme
Erreurs
Les erreurs sont renvoyées en JSON au format de l’endpoint appelé, avec un message lisible et, sur les endpoints au format OpenAI, un code stable pour les programmes.
Le format
{ "error": { "message": "This API key can't use `gpt-6-astra`. It's limited to gpt-6-sol. Change that at https://zurelay.com/app/keys.", "type": "permission_error", "param": "model", "code": "model_not_allowed" }}Sur /v1/messages, les mêmes erreurs sont renvoyées au format Anthropic, sans code : utilisez le statut HTTP et error.type : { "type": "error", "error": { "type": "...", "message": "..." } }. Chaque réponse de chat, d’image ou de vidéo, qu’il y ait une erreur ou non, contient un en-tête x-request-id.
Codes
Nouvelles tentatives
- Réessayez en cas de
429et503, en attendant le nombre de secondes indiqué par l’en-têteretry-after(ou en augmentant le délai de façon exponentielle), sauf si la réponse indiquex-should-retry: false. - Ne renvoyez pas les requêtes ayant produit d’autres erreurs
4xxsans les modifier : elles échoueront de la même façon. - Les requêtes qui échouent sont gratuites : réessayer ne coûte donc rien tant qu’aucune ne réussit. Un flux interrompu est facturé pour le contenu transmis, et les rares erreurs
503avecx-should-retry: falsesont facturées pour leur entrée (voir Facturation). - Les SDK officiels d’OpenAI et d’Anthropic réessaient déjà automatiquement en cas d’erreurs appropriées.
Erreurs en cours de streaming
Les erreurs renvoyées par un modèle au sujet de votre requête (un paramètre non pris en charge, un prompt trop long) sont transmises avec le message et le code du modèle, sous forme d’erreur 400 ou 422.
Erreurs en cours de streaming
Une fois le flux démarré, une erreur ne peut plus être renvoyée sous forme de statut HTTP. Vous recevez à la place un dernier événement d’erreur (au format de l’endpoint), puis le flux se termine. L’entrée et la sortie reçue avant l’erreur vous sont facturées, rien après. C’est rare : la plupart des problèmes sont détectés et font l’objet d’une nouvelle tentative avant le premier token.
Le même type d’événement met fin à un flux dont le solde ou le budget de la clé s’épuise en cours de route, avec insufficient_quota, key_budget_exceeded ou key_daily_budget_exceeded. Une requête sans streaming dont le budget s’épuise en cours de route renvoie le contenu déjà généré, tronqué comme une réponse ayant atteint max_tokens (finish_reason: "length", ou stop_reason: "max_tokens" sur /v1/messages), avec un en-tête x-zurelay-stopped indiquant le code.
Une question ou un élément manquant ? Contactez notre équipe d’assistance et nous vous répondrons par e-mail, généralement en moins d’une minute.