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ímiteValorAl superarlo
Solicitudes por minuto por clave120, ventana de 60 s desde la primera solicitud429 rate_limit_exceeded y cabecera Retry-After; los rechazos 5xx de la pasarela no consumen cuota
Solicitudes simultáneas de la cuentalimitadaslas sobrantes esperan en cola; si no llegan a tiempo, 429 queue_timeout
Tamaño del cuerpo de la solicitud16 MiB413
Longitud de la respuestapor modelo: tabla abajosi supera el techo del modelo, se recorta hasta el techo, sin error
Claves hijashasta 50 por clave de gestión, hasta 120 solicitudes por minuto para cada unapara 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.

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

Timeouts#

EtapaValorQué ocurre
Espera de un lugar en la cola45 s429 queue_timeout con cabecera Retry-After: 1
Inicio de la respuesta de la red, streaming150 s504 upstream_timeout; se cobra la estimación de tokens de entrada
Inicio de la respuesta de la red, sin streaming150 s504 upstream_timeout; se cobra la estimación de tokens de entrada
Generación de la respuesta≈ 300 sla red corta la generación: la respuesta llega con finish_reason: length; continúa con la siguiente solicitud
Pausa entre chunks del stream30 sel stream se cierra: finish_reason: stop en el chunk joingonka-stream-stalled
Señal de actividad en el stream15 scomentario : keep-alive: los clientes SSE lo ignoran
Apertura del stream30 shasta ese momento el rechazo llega como código de respuesta; después, como chunk joingonka-error
Respuesta temprana sin streaming90 sla 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.

JSON
{
  "error": {
    "message": "Model is currently overloaded in the Gonka network",
    "type": "rate_limit_exceeded",
    "code": "upstream_rate_limited"
  }
}
RespuestaCuándoQué hacer
400 invalid_request_errorCuerpo 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 textoCorrige la solicitud según el texto del error
400 invalid_request_error empty_content_after_normalizationEl mensaje queda vacío tras la normalización — por ejemplo, solo contenía una imagenAñade texto al mensaje
400 invalid_request_error web_search_privacy_sanitization_not_supportedLos plugins web y privacy-sanitization en la misma solicitudDeja 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_supportedOpenAI Responses: referencia a una respuesta, conversación o elemento guardado; modo en segundo plano; requisito de herramienta integradaEnvía el historial completo en input
400 api_errorLa red rechazó los parámetros — por ejemplo, un valor de reasoning_effort fuera de su listaCorrige el valor según el texto del error
401 authentication_errorClave no encontrada, revocada o con formato desconocidoVerifica la clave en la página gate.joingonka.ai/keys
402 insufficient_fundsEl saldo no alcanza para la estimación de la solicitud; el restante está en balance_ngonkaRecarga tu saldo: gate.joingonka.ai/billing
402 insufficient_fundsSolicitud sin clave y no desde el sitio (is_demo: true)Pasa una API key
402 child_key_limit_exceededSe superó el límite de gasto de la clave — diario, mensual o total; los restantes están en daily_remaining, monthly_remaining, total_remainingSube el límite de la clave en la página gate.joingonka.ai/keys o espera el reinicio
403 forbiddenClave de gestión gm- en una solicitud al modelo; API key en una ruta exclusiva del panelPara solicitudes usa la clave jg- o gc-; la gestión de la cuenta va en el panel
404 invalid_request_error model_not_foundGET /v1/models/{model}: el modelo no está en el catálogo o está oculto temporalmenteToma un id de GET /v1/models
404 invalid_request_error not_found compact_not_supportedOpenAI Responses: /v1/responses/{id} y otras direcciones con estado, /v1/responses/compactGuarda el historial de tu lado; para Codex CLI define tu propio id de proveedor
404 invalid_request_errorRuta desconocidaVerifica el método, la ruta y la dirección base
413 invalid_request_errorEl cuerpo de la solicitud supera el límiteReduce la solicitud
415 invalid_request_errorEl cuerpo no es JSON según la cabecera: se necesita Content-Type: application/jsonEnvía Content-Type: application/json
429 rate_limit_exceededSe superó el número de solicitudes por minuto por clave; en el cuerpo hay rate_limit con limit, remaining, resetEspera los segundos indicados en Retry-After
429 rate_limit_exceeded upstream_rate_limitedEl modelo está sobrecargado en la red GonkaReintenta después de Retry-After o usa otro modelo — Modelos
429 rate_limit_exceeded queue_timeout queue_fullTodos los cupos de la red están ocupados: la cola está llena o se agotó la esperaReintenta después de Retry-After
500 server_errorError interno del gatewayReintenta más tarde; si persiste, escribe al soporte e incluye x-request-id
501 not_implementedPOST /v1/embeddings: no hay modelos de embeddings en la redUsa otro servicio de embeddings
502 api_error upstream_unauthorizedUn proveedor de la red rechazó las credenciales del gateway — tu clave está bienReintenta en un minuto
502 api_errorError 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_servedEl modelo no está disponible ahora según los sondeos de la red: fallo, arranque, inestabilidad o nadie lo atiende; rechazo inmediato, sin esperaUsa otro modelo — el texto del error te dirá cuál; la lista está en Modelos
503 service_unavailableNo hay nodos disponiblesReintenta más tarde
504 timeout upstream_timeoutLa red aceptó la solicitud pero no respondió a tiempo; se cobró la estimación de tokens de entradaPara 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-error con el campo error, y luego un corte sin [DONE].
  • Sin streaming tras una respuesta temprana — estado 200 y cuerpo con el campo error.
  • Anthropic Messages — evento event: error, y luego el stream se cierra.
  • OpenAI Responses — evento response.failed, la causa en response.error.code.
  • Legacy Completions — data: {"error": …}, luego [DONE].
SSE
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/messages responde con el envoltorio de Anthropic: {"type": "error", "error": {"type", "message"}}.
  • Los rechazos del gateway conservan el type de la tabla de arriba (insufficient_funds, model_unavailable y otros); en este envoltorio no hay campo code — la causa está en el texto.
  • Errores de forma de la solicitud — invalid_request_error: faltan mensajes o max_tokens, llamada a herramienta sin nombre, modelo desconocido.
  • Ruta desconocida — not_found_error, cuerpo demasiado grande — request_too_large.
SSE
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.