Pour les agents IA : guide de configuration étape par étape — /docs/agents.md, index de la documentation — /llms.txt.

Erreurs et limites

Limites de requêtes, délais d'attente et codes d'erreur de la passerelle. Pour chaque réponse, nous indiquons quand elle survient et quoi faire : relancer la requête ou la corriger.

Limites#

Les chiffres proviennent du champ limits de la réponse GET /v1/capabilities : les valeurs y sont toujours à jour.

LimiteValeurEn cas de dépassement
Requêtes par minute par clé120, fenêtre de 60 s à partir de la première requête429 rate_limit_exceeded et en-tête Retry-After ; les refus 5xx de la passerelle ne consomment pas le quota
Requêtes simultanées du comptelimitéesles requêtes excédentaires attendent en file ; si elles n'aboutissent pas — 429 queue_timeout
Taille du corps de la requête16 MiB413
Longueur de la réponsepar modèle — tableau ci-dessousau-delà du plafond du modèle — réduit au plafond, sans erreur
Clés enfantsjusqu'à 50 par clé de gestion, jusqu'à 120 requêtes par minute chacuneaugmenter les plafonds — via le support

Longueur de réponse par modèle#

Sans max_tokens, la passerelle applique une valeur par défaut : sans streaming — plus courte, pour que la réponse tienne dans les timeouts ; en streaming — le plafond du modèle. max_completion_tokens — même champ.

modelPlafondSans streamingEn streaming
MiniMaxAI/MiniMax-M2.7819215008192
deepseek-ai/DeepSeek-V4-Flash-073132768150032768
zai-org/GLM-5.3-Flash819230008192

Timeouts#

ÉtapeValeurCe qui se passe
Attente d'une place dans la file45 s429 queue_timeout avec en-tête Retry-After: 1
Début de la réponse du réseau, streaming150 s504 upstream_timeout ; une estimation des tokens d'entrée est débitée
Début de la réponse du réseau, sans streaming150 s504 upstream_timeout ; une estimation des tokens d'entrée est débitée
Génération de la réponse≈ 300 sle réseau interrompt la génération : la réponse arrive avec finish_reason: length — poursuivez avec la requête suivante
Pause entre les chunks du stream30 sle flux se ferme : finish_reason: stop dans le chunk joingonka-stream-stalled
Signal d'activité dans le stream15 scommentaire : keep-alive — les clients SSE l'ignorent
Ouverture du flux30 savant ce moment, le refus arrive avec un code de réponse ; après — via le chunk joingonka-error
Réponse anticipée sans streaming90 sla passerelle renvoie 200 et envoie des espaces toutes les 15 s — le JSON reste valide ; une erreur après cela arrive dans le corps avec le champ error, le statut reste 200

Ce qui est débité en cas de timeout

Une requête acceptée par le réseau ne peut pas être annulée. Avec 504 upstream_timeout, l'estimation des tokens d'entrée est débitée, celle des tokens de sortie non ; une nouvelle tentative entraîne un nouveau débit. Un stream interrompu avant le usage final est facturé de la même manière. Pour les réponses longues, utilisez stream: true.

Codes d'erreur#

Le corps de l'erreur est un objet error avec les champs message, type, code, param ; certains champs ne sont pas présents sur toutes les erreurs. Fiez-vous au statut et au type, vérifiez via code : le texte message peut changer. Le format Anthropic est décrit dans la section Format des erreurs Anthropic.

JSON
{
  "error": {
    "message": "Model is currently overloaded in the Gonka network",
    "type": "rate_limit_exceeded",
    "code": "upstream_rate_limited"
  }
}
RéponseQuandQue faire
400 invalid_request_errorCorps invalide : messages absent, message qui n'est pas un objet, corps qui n'est pas du JSON ; modèle inconnu — avec param : model et la liste des modèles disponibles dans le texteCorrigez la requête en suivant le texte de l'erreur
400 invalid_request_error empty_content_after_normalizationMessage vide après normalisation — par exemple, il ne contenait qu'une imageAjoutez du texte dans le message
400 invalid_request_error web_search_privacy_sanitization_not_supportedPlugins web et privacy-sanitization dans une même requêteN'en gardez qu'un seul
400 invalid_request_error previous_response_id_not_supported conversation_not_supported item_reference_not_supported background_not_supported hosted_tool_choice_not_supportedOpenAI Responses : référence à une réponse, un dialogue ou un élément sauvegardé ; mode arrière-plan ; exigence d'un outil intégréEnvoyez l'historique complet dans input
400 api_errorLe réseau a rejeté les paramètres — par exemple, une valeur reasoning_effort hors de sa listeCorrigez la valeur en suivant le texte de l'erreur
401 authentication_errorClé introuvable, révoquée ou de format inconnuVérifiez la clé sur la page gate.joingonka.ai/keys
402 insufficient_fundsSolde insuffisant pour l'estimation de la requête ; le reste est dans balance_ngonkaRechargez votre solde : gate.joingonka.ai/billing
402 insufficient_fundsRequête sans clé ne provenant pas du site (is_demo: true)Fournissez une clé API
402 child_key_limit_exceededLimite de dépenses de la clé dépassée — journalière, mensuelle ou globale ; les restes sont dans daily_remaining, monthly_remaining, total_remainingAugmentez la limite de la clé sur la page gate.joingonka.ai/keys ou attendez la réinitialisation
403 forbiddenClé d'administration gm- dans une requête vers le modèle ; clé API sur une route réservée à l'espace clientPour les requêtes — clé jg- ou gc- ; la gestion du compte se fait dans l'espace client
404 invalid_request_error model_not_foundGET /v1/models/{model} : le modèle n'est pas dans le catalogue ou est temporairement masquéPrenez l'id dans GET /v1/models
404 invalid_request_error not_found compact_not_supportedOpenAI Responses : /v1/responses/{id} et autres adresses d'état, /v1/responses/compactConservez l'historique de votre côté ; pour Codex CLI, définissez votre propre id de fournisseur
404 invalid_request_errorChemin inconnuVérifiez la méthode, le chemin et l'adresse de base
413 invalid_request_errorCorps de la requête au-delà de la limiteRéduisez la requête
415 invalid_request_errorCorps non JSON d'après l'en-tête : Content-Type: application/json requisEnvoyez Content-Type: application/json
429 rate_limit_exceededNombre de requêtes par minute par clé dépassé ; dans le corps — rate_limit avec limit, remaining, resetAttendez le nombre de secondes indiqué dans Retry-After
429 rate_limit_exceeded upstream_rate_limitedModèle surchargé sur le réseau GonkaRéessayez après Retry-After ou prenez un autre modèle — Modèles
429 rate_limit_exceeded queue_timeout queue_fullToutes les places vers le réseau sont occupées : file pleine ou attente expiréeRéessayez après Retry-After
500 server_errorErreur interne de la passerelleRéessayez plus tard ; si cela persiste, écrivez au support en joignant x-request-id
501 not_implementedPOST /v1/embeddings : aucun modèle d'embeddings sur le réseauUtilisez un autre service d'embeddings
502 api_error upstream_unauthorizedLe fournisseur du réseau a rejeté les identifiants de la passerelle — votre clé est correcteRéessayez dans une minute
502 api_errorErreur du réseau Gonka ; code provient du réseau, s'il l'a envoyéRéessayez avec une pause ou prenez un autre modèle
503 model_unavailable model_outage model_initializing model_unstable model_not_servedModèle actuellement indisponible d'après les sondes du réseau : panne, démarrage, instabilité ou personne ne le sert ; refus immédiat, sans attentePrenez un autre modèle — le texte de l'erreur vous indiquera lequel ; la liste est dans Modèles
503 service_unavailableAucun nœud disponibleRéessayez plus tard
504 timeout upstream_timeoutLe réseau a accepté la requête mais n'a pas répondu à temps ; l'estimation des tokens d'entrée a été débitéePour les réponses longues — stream: true ; une nouvelle tentative entraîne un nouveau débit

Erreurs dans un flux ouvert#

Tant que le flux n'est pas ouvert, le refus arrive avec un code de réponse classique — comme sans streaming. Une fois ouvert, le statut est déjà 200, et l'erreur arrive ainsi :

  • Chat Completions — chunk joingonka-error avec le champ error, puis coupure sans [DONE].
  • Sans streaming après une réponse précoce — statut 200 et corps avec le champ error.
  • Anthropic Messages — événement event: error, puis le flux se ferme.
  • OpenAI Responses — événement response.failed, la cause est dans response.error.code.
  • Legacy Completions — data: {"error": …}, puis [DONE].
SSE
data: {"id":"joingonka-error","object":"chat.completion.chunk","model":"MiniMaxAI/MiniMax-M2.7","choices":[],"error":{"message":"Gonka network error","type":"api_error"}}

Format des erreurs Anthropic#

  • POST /v1/messages répond avec l'enveloppe Anthropic : {"type": "error", "error": {"type", "message"}}.
  • Les refus de la passerelle conservent le type du tableau ci-dessus (insufficient_funds, model_unavailable et autres) ; le champ code n'existe pas dans cette enveloppe — la cause est dans le texte.
  • Erreurs de forme de la requête — invalid_request_error : messages ou max_tokens absents, appel d'outil sans nom, modèle inconnu.
  • Chemin inconnu — not_found_error, corps trop volumineux — request_too_large.
SSE
event: error
data: {"type":"error","error":{"type":"timeout","message":"Upstream timeout"}}

Ce qu'il faut réessayer#

  • Après la pause indiquée dans Retry-After : 429
  • Avec une pause croissante — 1, 2, 4 s et ainsi de suite : 500, 502, 503 service_unavailable, 504
  • Avec un autre modèle : 503 model_unavailable
  • Ne pas réessayer sans modifications — corrigez la requête, la clé ou le solde : 400, 401, 402, 403, 404, 413, 415, 501

Chaque nouvelle tentative après 504 entraîne un nouveau débit de l'estimation d'entrée ; pour les réponses longues, activez stream: true.

Si l'erreur persiste, écrivez au support en joignant x-request-id des en-têtes de réponse.