Para agentes de IA: guía paso a paso de configuración — /docs/agents.md, índice de documentación — /llms.txt.
Errores y límites
Límites de solicitudes, tiempos de espera y códigos de error de la pasarela. Para cada respuesta se indica cuándo se produce y qué hacer: repetir la solicitud o corregirla.
Límites#
Los números provienen del campo limits de la respuesta GET /v1/capabilities: ahí siempre están los valores actuales.
| Límite | Valor | Al superarlo |
|---|---|---|
| Solicitudes por minuto por clave | 120, ventana de 60 s desde la primera solicitud | 429 rate_limit_exceeded y cabecera Retry-After; los rechazos 5xx de la pasarela no consumen cuota |
| Solicitudes simultáneas de la cuenta | limitadas | las sobrantes esperan en cola; si no llegan a tiempo, 429 queue_timeout |
| Tamaño del cuerpo de la solicitud | 16 MiB | 413 |
| Longitud de la respuesta | por modelo: tabla abajo | si supera el techo del modelo, se recorta hasta el techo, sin error |
| Claves hijas | hasta 50 por clave de gestión, hasta 120 solicitudes por minuto para cada una | para subir los techos, contacta con soporte |
Longitud de respuesta por modelo#
Sin max_tokens, la pasarela aplica un valor por defecto: sin streaming, más corto para que la respuesta quepa en los timeouts; en streaming, el techo del modelo. max_completion_tokens es el mismo campo.
model | Techo | Sin 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#
| Etapa | Valor | Qué ocurre |
|---|---|---|
| Espera de un lugar en la cola | 45 s | 429 queue_timeout con cabecera Retry-After: 1 |
| Inicio de la respuesta de la red, streaming | 150 s | 504 upstream_timeout; se cobra la estimación de tokens de entrada |
| Inicio de la respuesta de la red, sin streaming | 150 s | 504 upstream_timeout; se cobra la estimación de tokens de entrada |
| Generación de la respuesta | ≈ 300 s | la red corta la generación: la respuesta llega con finish_reason: length; continúa con la siguiente solicitud |
| Pausa entre chunks del stream | 30 s | el stream se cierra: finish_reason: stop en el chunk joingonka-stream-stalled |
| Señal de actividad en el stream | 15 s | comentario : keep-alive: los clientes SSE lo ignoran |
| Apertura del stream | 30 s | hasta ese momento el rechazo llega como código de respuesta; después, como chunk joingonka-error |
| Respuesta temprana sin streaming | 90 s | la pasarela devuelve 200 y envía espacios cada 15 s; el JSON sigue siendo válido; un error posterior llega en el cuerpo con el campo error y el estado sigue siendo 200 |
Qué se cobra al agotarse el tiempo
Una solicitud aceptada por la red no se puede cancelar. Con 504 upstream_timeout se cobra la estimación de tokens de entrada, los de salida no; un reintento genera un nuevo cobro. Un stream interrumpido antes del usage final se cobra igual. Para respuestas largas, usa stream: true.
Códigos de error#
El cuerpo del error es un objeto error con los campos message, type, code, param; no todos los errores incluyen todos los campos. Guíate por el estado y type, y confirma con code: el texto de message puede cambiar. El formato de Anthropic está en la sección Formato de errores de Anthropic.
{
"error": {
"message": "Model is currently overloaded in the Gonka network",
"type": "rate_limit_exceeded",
"code": "upstream_rate_limited"
}
}| Respuesta | Cuándo | Qué hacer |
|---|---|---|
400 invalid_request_error | Cuerpo inválido: falta messages, el mensaje no es un objeto, el cuerpo no es JSON; modelo desconocido — con param: model y la lista de modelos disponibles en el texto | Corrige la solicitud según el texto del error |
400 invalid_request_error empty_content_after_normalization | El mensaje queda vacío tras la normalización — por ejemplo, solo contenía una imagen | Añade texto al mensaje |
400 invalid_request_error web_search_privacy_sanitization_not_supported | Los plugins web y privacy-sanitization en la misma solicitud | Deja solo uno de los dos |
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: referencia a una respuesta, conversación o elemento guardado; modo en segundo plano; requisito de herramienta integrada | Envía el historial completo en input |
400 api_error | La red rechazó los parámetros — por ejemplo, un valor de reasoning_effort fuera de su lista | Corrige el valor según el texto del error |
401 authentication_error | Clave no encontrada, revocada o con formato desconocido | Verifica la clave en la página gate.joingonka.ai/keys |
402 insufficient_funds | El saldo no alcanza para la estimación de la solicitud; el restante está en balance_ngonka | Recarga tu saldo: gate.joingonka.ai/billing |
402 insufficient_funds | Solicitud sin clave y no desde el sitio (is_demo: true) | Pasa una API key |
402 child_key_limit_exceeded | Se superó el límite de gasto de la clave — diario, mensual o total; los restantes están en daily_remaining, monthly_remaining, total_remaining | Sube el límite de la clave en la página gate.joingonka.ai/keys o espera el reinicio |
403 forbidden | Clave de gestión gm- en una solicitud al modelo; API key en una ruta exclusiva del panel | Para solicitudes usa la clave jg- o gc-; la gestión de la cuenta va en el panel |
404 invalid_request_error model_not_found | GET /v1/models/{model}: el modelo no está en el catálogo o está oculto temporalmente | Toma un id de GET /v1/models |
404 invalid_request_error not_found compact_not_supported | OpenAI Responses: /v1/responses/{id} y otras direcciones con estado, /v1/responses/compact | Guarda el historial de tu lado; para Codex CLI define tu propio id de proveedor |
404 invalid_request_error | Ruta desconocida | Verifica el método, la ruta y la dirección base |
413 invalid_request_error | El cuerpo de la solicitud supera el límite | Reduce la solicitud |
415 invalid_request_error | El cuerpo no es JSON según la cabecera: se necesita Content-Type: application/json | Envía Content-Type: application/json |
429 rate_limit_exceeded | Se superó el número de solicitudes por minuto por clave; en el cuerpo hay rate_limit con limit, remaining, reset | Espera los segundos indicados en Retry-After |
429 rate_limit_exceeded upstream_rate_limited | El modelo está sobrecargado en la red Gonka | Reintenta después de Retry-After o usa otro modelo — Modelos |
429 rate_limit_exceeded queue_timeout queue_full | Todos los cupos de la red están ocupados: la cola está llena o se agotó la espera | Reintenta después de Retry-After |
500 server_error | Error interno del gateway | Reintenta más tarde; si persiste, escribe al soporte e incluye x-request-id |
501 not_implemented | POST /v1/embeddings: no hay modelos de embeddings en la red | Usa otro servicio de embeddings |
502 api_error upstream_unauthorized | Un proveedor de la red rechazó las credenciales del gateway — tu clave está bien | Reintenta en un minuto |
502 api_error | Error de la red Gonka; code proviene de la red, si lo envió | Reintenta con una pausa o usa otro modelo |
503 model_unavailable model_outage model_initializing model_unstable model_not_served | El modelo no está disponible ahora según los sondeos de la red: fallo, arranque, inestabilidad o nadie lo atiende; rechazo inmediato, sin espera | Usa otro modelo — el texto del error te dirá cuál; la lista está en Modelos |
503 service_unavailable | No hay nodos disponibles | Reintenta más tarde |
504 timeout upstream_timeout | La red aceptó la solicitud pero no respondió a tiempo; se cobró la estimación de tokens de entrada | Para respuestas largas usa stream: true; un reintento genera un nuevo cobro |
Errores en un stream abierto#
Mientras el stream no está abierto, el rechazo llega con un código de respuesta normal — igual que sin streaming. Una vez abierto, el estado ya es 200 y el error llega así:
- Chat Completions — un chunk
joingonka-errorcon el campoerror, y luego un corte sin[DONE]. - Sin streaming tras una respuesta temprana — estado
200y cuerpo con el campoerror. - Anthropic Messages — evento
event: error, y luego el stream se cierra. - OpenAI Responses — evento
response.failed, la causa enresponse.error.code. - Legacy Completions —
data: {"error": …}, luego[DONE].
data: {"id":"joingonka-error","object":"chat.completion.chunk","model":"MiniMaxAI/MiniMax-M2.7","choices":[],"error":{"message":"Gonka network error","type":"api_error"}}Formato de errores de Anthropic#
POST /v1/messagesresponde con el envoltorio de Anthropic:{"type": "error", "error": {"type", "message"}}.- Los rechazos del gateway conservan el
typede la tabla de arriba (insufficient_funds,model_unavailabley otros); en este envoltorio no hay campocode— la causa está en el texto. - Errores de forma de la solicitud —
invalid_request_error: faltan mensajes omax_tokens, llamada a herramienta sin nombre, modelo desconocido. - Ruta desconocida —
not_found_error, cuerpo demasiado grande —request_too_large.
event: error
data: {"type":"error","error":{"type":"timeout","message":"Upstream timeout"}}Qué reintentar#
- Tras la pausa de
Retry-After:429 - Con pausa creciente — 1, 2, 4 s y así:
500,502,503 service_unavailable,504 - Con otro modelo:
503 model_unavailable - No reintentar sin cambios — corrige la solicitud, la clave o el saldo:
400,401,402,403,404,413,415,501
Cada reintento tras 504 genera un nuevo cobro de la estimación de entrada; para respuestas largas activa stream: true.
Si el error se repite, escribe al soporte e incluye x-request-id de las cabeceras de la respuesta.