Para agentes de IA: guia passo a passo de configuração — /docs/agents.md, índice da documentação — /llms.txt.

Erros e limites

Limites de requisições, timeouts e códigos de erro do gateway. Para cada resposta, explicamos quando ela ocorre e o que fazer: repetir a requisição ou corrigi-la.

Limites#

Os números vêm do campo limits da resposta GET /v1/capabilities: lá os valores estão sempre atualizados.

LimiteValorAo ultrapassar
Requisições por minuto por chave120, janela de 60 s a partir da primeira requisição429 rate_limit_exceeded e cabeçalho Retry-After; recusas 5xx do gateway não consomem cota
Requisições simultâneas da contalimitadasas excedentes esperam na fila; se não chegarem a tempo — 429 queue_timeout
Tamanho do corpo da requisição16 MiB413
Comprimento da respostapor modelo — tabela abaixoacima do teto do modelo — cortado até o teto, sem erro
Chaves filhasaté 50 por chave de gerenciamento, até 120 requisições por minuto para cada umapara aumentar os tetos — fale com o suporte

Comprimento da resposta por modelo#

Sem max_tokens, o gateway aplica um padrão: sem streaming, mais curto para a resposta caber nos timeouts; no streaming, o teto do modelo. max_completion_tokens é o mesmo campo.

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

Timeouts#

EtapaValorO que acontece
Espera por uma vaga na fila45 s429 queue_timeout com cabeçalho Retry-After: 1
Início da resposta da rede, streaming150 s504 upstream_timeout; é cobrada a estimativa de tokens de entrada
Início da resposta da rede, sem streaming150 s504 upstream_timeout; é cobrada a estimativa de tokens de entrada
Geração da resposta≈ 300 sa rede interrompe a geração: a resposta chega com finish_reason: length — continue com a próxima requisição
Pausa entre chunks do stream30 so stream é fechado: finish_reason: stop no chunk joingonka-stream-stalled
Sinal de atividade no stream15 scomentário : keep-alive — clientes SSE o ignoram
Abertura do stream30 saté esse momento a recusa chega como código de resposta; depois, como chunk joingonka-error
Resposta antecipada sem streaming90 so gateway retorna 200 e envia espaços a cada 15 s — o JSON continua válido; um erro posterior chega no corpo com o campo error, e o status permanece 200

O que é cobrado em caso de timeout

Uma requisição aceita pela rede não pode ser cancelada. Com 504 upstream_timeout cobra-se a estimativa dos tokens de entrada, os de saída não; uma nova tentativa gera uma nova cobrança. Um stream interrompido antes do usage final é cobrado da mesma forma. Para respostas longas, use stream: true.

Códigos de erro#

O corpo do erro é um objeto error com os campos message, type, code, param; nem todo erro traz todos os campos. Guie-se pelo status e por type, e confirme com code: o texto de message pode mudar. O formato Anthropic está na seção Formato de erros da Anthropic.

JSON
{
  "error": {
    "message": "Model is currently overloaded in the Gonka network",
    "type": "rate_limit_exceeded",
    "code": "upstream_rate_limited"
  }
}
RespostaQuandoO que fazer
400 invalid_request_errorCorpo inválido: falta messages, a mensagem não é um objeto, o corpo não é JSON; modelo desconhecido — com param: model e a lista de modelos disponíveis no textoCorrija a requisição conforme o texto do erro
400 invalid_request_error empty_content_after_normalizationA mensagem fica vazia após a normalização — por exemplo, continha apenas uma imagemAdicione texto à mensagem
400 invalid_request_error web_search_privacy_sanitization_not_supportedOs plugins web e privacy-sanitization na mesma requisiçãoDeixe apenas um deles
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: referência a uma resposta, conversa ou item salvo; modo em segundo plano; exigência de ferramenta integradaEnvie o histórico completo em input
400 api_errorA rede rejeitou os parâmetros — por exemplo, um valor de reasoning_effort fora da lista delaCorrija o valor conforme o texto do erro
401 authentication_errorChave não encontrada, revogada ou com formato desconhecidoVerifique a chave na página gate.joingonka.ai/keys
402 insufficient_fundsO saldo não cobre a estimativa da requisição; o restante está em balance_ngonkaRecarregue o saldo: gate.joingonka.ai/billing
402 insufficient_fundsRequisição sem chave e que não veio do site (is_demo: true)Passe uma API key
402 child_key_limit_exceededLimite de gastos da chave excedido — diário, mensal ou total; os restantes estão em daily_remaining, monthly_remaining, total_remainingAumente o limite da chave na página gate.joingonka.ai/keys ou aguarde o reset
403 forbiddenChave de gestão gm- em uma requisição ao modelo; API key em uma rota exclusiva do painelPara requisições use a chave jg- ou gc-; a gestão da conta fica no painel
404 invalid_request_error model_not_foundGET /v1/models/{model}: o modelo não está no catálogo ou está oculto temporariamentePegue um id de GET /v1/models
404 invalid_request_error not_found compact_not_supportedOpenAI Responses: /v1/responses/{id} e outros endereços com estado, /v1/responses/compactGuarde o histórico do seu lado; para o Codex CLI defina seu próprio id de provedor
404 invalid_request_errorCaminho desconhecidoVerifique o método, o caminho e o endereço base
413 invalid_request_errorO corpo da requisição ultrapassa o limiteReduza a requisição
415 invalid_request_errorO corpo não é JSON segundo o cabeçalho: é preciso Content-Type: application/jsonEnvie Content-Type: application/json
429 rate_limit_exceededNúmero de requisições por minuto por chave excedido; no corpo há rate_limit com limit, remaining, resetEspere os segundos indicados em Retry-After
429 rate_limit_exceeded upstream_rate_limitedO modelo está sobrecarregado na rede GonkaTente de novo após Retry-After ou use outro modelo — Modelos
429 rate_limit_exceeded queue_timeout queue_fullTodas as vagas da rede estão ocupadas: a fila está cheia ou a espera expirouTente de novo após Retry-After
500 server_errorErro interno do gatewayTente de novo mais tarde; se persistir, escreva ao suporte e inclua x-request-id
501 not_implementedPOST /v1/embeddings: não há modelos de embeddings na redeUse outro serviço de embeddings
502 api_error upstream_unauthorizedUm provedor da rede rejeitou as credenciais do gateway — sua chave está okTente de novo em um minuto
502 api_errorErro da rede Gonka; code vem da rede, se ela o enviouTente de novo com uma pausa ou use outro modelo
503 model_unavailable model_outage model_initializing model_unstable model_not_servedO modelo está indisponível agora conforme os testes da rede: falha, inicialização, instabilidade ou ninguém o está atendendo; recusa imediata, sem esperaUse outro modelo — o texto do erro indica qual; a lista está em Modelos
503 service_unavailableNão há nós disponíveisTente de novo mais tarde
504 timeout upstream_timeoutA rede aceitou a requisição, mas não respondeu a tempo; a estimativa dos tokens de entrada foi cobradaPara respostas longas use stream: true; uma nova tentativa gera nova cobrança

Erros em um stream aberto#

Enquanto o stream não está aberto, a recusa chega com um código de resposta normal — como sem streaming. Depois de aberto, o status já é 200 e o erro chega assim:

  • Chat Completions — um chunk joingonka-error com o campo error, e depois um corte sem [DONE].
  • Sem streaming após uma resposta antecipada — status 200 e corpo com o campo error.
  • Anthropic Messages — evento event: error, e depois o stream se fecha.
  • OpenAI Responses — evento response.failed, causa em response.error.code.
  • Legacy Completions — data: {"error": …}, depois [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 erros da Anthropic#

  • POST /v1/messages responde com o envelope da Anthropic: {"type": "error", "error": {"type", "message"}}.
  • As recusas do gateway mantêm o type da tabela acima (insufficient_funds, model_unavailable e outros); neste envelope não há campo code — a causa está no texto.
  • Erros de forma da requisição — invalid_request_error: faltam mensagens ou max_tokens, chamada de ferramenta sem nome, modelo desconhecido.
  • Caminho desconhecido — not_found_error, corpo grande demais — request_too_large.
SSE
event: error
data: {"type":"error","error":{"type":"timeout","message":"Upstream timeout"}}

O que repetir#

  • Após a pausa de Retry-After: 429
  • Com pausa crescente — 1, 2, 4 s e assim por diante: 500, 502, 503 service_unavailable, 504
  • Com outro modelo: 503 model_unavailable
  • Não repetir sem mudanças — corrija a requisição, a chave ou o saldo: 400, 401, 402, 403, 404, 413, 415, 501

Cada nova tentativa após 504 gera nova cobrança da estimativa de entrada; para respostas longas ative stream: true.

Se o erro se repetir, escreva ao suporte e inclua x-request-id dos cabeçalhos da resposta.