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.
| Limite | Valeur | En cas de dépassement |
|---|---|---|
| Requêtes par minute par clé | 120, fenêtre de 60 s à partir de la première requête | 429 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 compte | limitées | les requêtes excédentaires attendent en file ; si elles n'aboutissent pas — 429 queue_timeout |
| Taille du corps de la requête | 16 MiB | 413 |
| Longueur de la réponse | par modèle — tableau ci-dessous | au-delà du plafond du modèle — réduit au plafond, sans erreur |
| Clés enfants | jusqu'à 50 par clé de gestion, jusqu'à 120 requêtes par minute chacune | augmenter 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.
model | Plafond | Sans streaming | En streaming |
|---|---|---|---|
MiniMaxAI/MiniMax-M2.7 | 8192 | 1500 | 8192 |
deepseek-ai/DeepSeek-V4-Flash-0731 | 32768 | 1500 | 32768 |
zai-org/GLM-5.3-Flash | 8192 | 3000 | 8192 |
Timeouts#
| Étape | Valeur | Ce qui se passe |
|---|---|---|
| Attente d'une place dans la file | 45 s | 429 queue_timeout avec en-tête Retry-After: 1 |
| Début de la réponse du réseau, streaming | 150 s | 504 upstream_timeout ; une estimation des tokens d'entrée est débitée |
| Début de la réponse du réseau, sans streaming | 150 s | 504 upstream_timeout ; une estimation des tokens d'entrée est débitée |
| Génération de la réponse | ≈ 300 s | le 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 stream | 30 s | le flux se ferme : finish_reason: stop dans le chunk joingonka-stream-stalled |
| Signal d'activité dans le stream | 15 s | commentaire : keep-alive — les clients SSE l'ignorent |
| Ouverture du flux | 30 s | avant ce moment, le refus arrive avec un code de réponse ; après — via le chunk joingonka-error |
| Réponse anticipée sans streaming | 90 s | la 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.
{
"error": {
"message": "Model is currently overloaded in the Gonka network",
"type": "rate_limit_exceeded",
"code": "upstream_rate_limited"
}
}| Réponse | Quand | Que faire |
|---|---|---|
400 invalid_request_error | Corps 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 texte | Corrigez la requête en suivant le texte de l'erreur |
400 invalid_request_error empty_content_after_normalization | Message vide après normalisation — par exemple, il ne contenait qu'une image | Ajoutez du texte dans le message |
400 invalid_request_error web_search_privacy_sanitization_not_supported | Plugins web et privacy-sanitization dans une même requête | N'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_supported | OpenAI 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_error | Le réseau a rejeté les paramètres — par exemple, une valeur reasoning_effort hors de sa liste | Corrigez la valeur en suivant le texte de l'erreur |
401 authentication_error | Clé introuvable, révoquée ou de format inconnu | Vérifiez la clé sur la page gate.joingonka.ai/keys |
402 insufficient_funds | Solde insuffisant pour l'estimation de la requête ; le reste est dans balance_ngonka | Rechargez votre solde : gate.joingonka.ai/billing |
402 insufficient_funds | Requête sans clé ne provenant pas du site (is_demo: true) | Fournissez une clé API |
402 child_key_limit_exceeded | Limite de dépenses de la clé dépassée — journalière, mensuelle ou globale ; les restes sont dans daily_remaining, monthly_remaining, total_remaining | Augmentez la limite de la clé sur la page gate.joingonka.ai/keys ou attendez la réinitialisation |
403 forbidden | Clé d'administration gm- dans une requête vers le modèle ; clé API sur une route réservée à l'espace client | Pour les requêtes — clé jg- ou gc- ; la gestion du compte se fait dans l'espace client |
404 invalid_request_error model_not_found | GET /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_supported | OpenAI Responses : /v1/responses/{id} et autres adresses d'état, /v1/responses/compact | Conservez l'historique de votre côté ; pour Codex CLI, définissez votre propre id de fournisseur |
404 invalid_request_error | Chemin inconnu | Vérifiez la méthode, le chemin et l'adresse de base |
413 invalid_request_error | Corps de la requête au-delà de la limite | Réduisez la requête |
415 invalid_request_error | Corps non JSON d'après l'en-tête : Content-Type: application/json requis | Envoyez Content-Type: application/json |
429 rate_limit_exceeded | Nombre de requêtes par minute par clé dépassé ; dans le corps — rate_limit avec limit, remaining, reset | Attendez le nombre de secondes indiqué dans Retry-After |
429 rate_limit_exceeded upstream_rate_limited | Modèle surchargé sur le réseau Gonka | Réessayez après Retry-After ou prenez un autre modèle — Modèles |
429 rate_limit_exceeded queue_timeout queue_full | Toutes les places vers le réseau sont occupées : file pleine ou attente expirée | Réessayez après Retry-After |
500 server_error | Erreur interne de la passerelle | Réessayez plus tard ; si cela persiste, écrivez au support en joignant x-request-id |
501 not_implemented | POST /v1/embeddings : aucun modèle d'embeddings sur le réseau | Utilisez un autre service d'embeddings |
502 api_error upstream_unauthorized | Le fournisseur du réseau a rejeté les identifiants de la passerelle — votre clé est correcte | Réessayez dans une minute |
502 api_error | Erreur 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_served | Modèle actuellement indisponible d'après les sondes du réseau : panne, démarrage, instabilité ou personne ne le sert ; refus immédiat, sans attente | Prenez un autre modèle — le texte de l'erreur vous indiquera lequel ; la liste est dans Modèles |
503 service_unavailable | Aucun nœud disponible | Réessayez plus tard |
504 timeout upstream_timeout | Le 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ée | Pour 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-erroravec le champerror, puis coupure sans[DONE]. - Sans streaming après une réponse précoce — statut
200et corps avec le champerror. - Anthropic Messages — événement
event: error, puis le flux se ferme. - OpenAI Responses — événement
response.failed, la cause est dansresponse.error.code. - Legacy Completions —
data: {"error": …}, puis[DONE].
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/messagesrépond avec l'enveloppe Anthropic :{"type": "error", "error": {"type", "message"}}.- Les refus de la passerelle conservent le
typedu tableau ci-dessus (insufficient_funds,model_unavailableet autres) ; le champcoden'existe pas dans cette enveloppe — la cause est dans le texte. - Erreurs de forme de la requête —
invalid_request_error: messages oumax_tokensabsents, appel d'outil sans nom, modèle inconnu. - Chemin inconnu —
not_found_error, corps trop volumineux —request_too_large.
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.