面向 AI 智能体:配置分步指南 — /docs/agents.md,文档索引 — /llms.txt。

错误与限制

网关的请求限制、超时和错误码。每个响应都会说明其触发条件以及应对方式:重试请求还是修正请求。

限制#

这些数值来自 GET /v1/capabilities 响应的 limits 字段:那里的值始终是最新的。

限制项数值超限时
每个密钥每分钟的请求数120,窗口为自首个请求起 60 秒429 rate_limit_exceeded 及 Retry-After 请求头;网关 5xx 失败不消耗配额
账户并发请求数有上限超出的请求排队等待;未等到则返回 429 queue_timeout
请求体大小16 MiB413
输出长度按模型——见下表超过模型上限——会被截断到上限,不报错
子密钥每个管理密钥最多 50 个,每个每分钟最多 120 次请求如需提高上限——请联系技术支持

各模型的输出长度#

未传 max_tokens 时,网关会套用默认值:非流式时取较小值,以便响应在超时前完成;流式时用模型上限。max_completion_tokens 是同一个字段。

model上限非流式流式
MiniMaxAI/MiniMax-M2.7819215008192
deepseek-ai/DeepSeek-V4-Flash-073132768150032768
zai-org/GLM-5.3-Flash819230008192

超时#

阶段数值会发生什么
等待队列空位45 秒429 queue_timeout 并带 Retry-After: 1 请求头
网络开始响应,流式150 秒504 upstream_timeout;会按输入 token 估算扣费
网络开始响应,非流式150 秒504 upstream_timeout;会按输入 token 估算扣费
生成响应≈ 300 秒网络中断生成:响应会带 finish_reason: length 返回——请用下一个请求继续
流式数据块之间的停顿30 秒流会关闭:joingonka-stream-stalled 数据块中的 finish_reason: stop
流中的保活信号15 秒: keep-alive 注释——SSE 客户端会忽略它
流的开启30 秒在此刻之前失败会以响应码返回,之后则以 joingonka-error 数据块返回
非流式响应的提前返回90 秒网关先返回 200,并每隔 15 秒 发送空格——JSON 保持有效;此后的错误会放在响应体 error 字段中返回,状态码仍为 200

超时时如何计费

网络一旦接受请求就无法撤销。在 504 upstream_timeout 时,会扣除输入 token 的预估费用,输出不扣;重试会再次扣费。在最终 usage 之前中断的流,计费方式相同。长回复请使用 stream: true。

错误码#

错误正文是一个 error 对象,包含 message, type, code, param;并非所有错误都有全部字段。请以状态码和 type 为准,并通过 code 确认细节:message 文本可能会变化。Anthropic 格式见 Anthropic 错误格式 部分。

JSON
{
  "error": {
    "message": "Model is currently overloaded in the Gonka network",
    "type": "rate_limit_exceeded",
    "code": "upstream_rate_limited"
  }
}
响应何时怎么办
400 invalid_request_error请求体无效:缺少 messages,消息不是对象,请求体不是 JSON;模型未知 — 并带有 param:model,正文中会列出可用模型根据错误文本修正请求
400 invalid_request_error empty_content_after_normalization消息在规范化后为空 — 例如,其中只有一张图片在消息中添加文本
400 invalid_request_error web_search_privacy_sanitization_not_supported同一个请求中同时使用 web 和 privacy-sanitization 插件只保留其中一个
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:引用已保存的回复、对话或条目;后台模式;要求使用内置工具在 input 中发送完整历史记录
400 api_error网络拒绝了参数 — 例如 reasoning_effort 值不在其列表中根据错误文本修正该值
401 authentication_error密钥未找到、已撤销或格式未知在 gate.joingonka.ai/keys 页面检查密钥
402 insufficient_funds余额不足以支付请求预估费用;剩余额度见 balance_ngonka充值余额:gate.joingonka.ai/billing
402 insufficient_funds请求没有密钥,且不是来自网站(is_demo: true)传入 API 密钥
402 child_key_limit_exceeded已超出密钥的支出限额 — 每日、每月或总额;剩余额度见 daily_remaining, monthly_remaining, total_remaining在 gate.joingonka.ai/keys 页面提高密钥限额,或等待重置
403 forbidden在模型请求中使用了管理密钥 gm-;在仅限控制台的路由上使用了 API 密钥请求请使用 jg- 或 gc- 密钥;账户管理请使用控制台
404 invalid_request_error model_not_foundGET /v1/models/{model}:目录中没有该模型,或该模型被暂时隐藏从 GET /v1/models 中获取 id
404 invalid_request_error not_found compact_not_supportedOpenAI Responses:/v1/responses/{id} 及其他状态地址,/v1/responses/compact在本地保存历史记录;对于 Codex CLI,设置你自己的提供商 id
404 invalid_request_error未知路径检查方法、路径和基础地址
413 invalid_request_error请求体超过限制缩短请求
415 invalid_request_error根据请求头,正文不是 JSON:需要 Content-Type: application/json发送 Content-Type: application/json
429 rate_limit_exceeded已超出每个密钥每分钟的请求数限制;正文中包含 rate_limit 和 limit, remaining, reset等待 Retry-After 中指定的秒数
429 rate_limit_exceeded upstream_rate_limitedGonka 网络上的模型过载在 Retry-After 后重试,或换用其他模型 — 模型
429 rate_limit_exceeded queue_timeout queue_full网络的所有位置都被占用:队列已满或等待超时在 Retry-After 后重试
500 server_error网关内部错误稍后重试;如果反复出现,请联系支持并提供 x-request-id
501 not_implementedPOST /v1/embeddings:网络上没有嵌入模型使用其他嵌入服务
502 api_error upstream_unauthorized网络提供商拒绝了网关的凭据 — 你的密钥没有问题一分钟后重试
502 api_errorGonka 网络错误;如果网络发送了 code,则来自网络暂停后重试,或换用其他模型
503 model_unavailable model_outage model_initializing model_unstable model_not_served根据网络探测,该模型当前不可用:崩溃、启动中、不稳定,或无人提供服务;会立即拒绝,无需等待换用其他模型 — 错误文本会提示用哪个;列表见 模型
503 service_unavailable没有可用节点稍后重试
504 timeout upstream_timeout网络已接受请求,但未及时响应;输入 token 的预估费用已扣除长回复请使用 stream: true;重试会再次扣费

已打开流中的错误#

在流打开之前,拒绝会以普通响应码返回 — 与不使用流式传输时相同。打开之后,状态码已经是 200,错误会这样传来:

  • Chat Completions — 一个带有 error 的 joingonka-error,然后断开且没有 [DONE]。
  • 非流式在提前响应之后 — 状态 200,正文包含 error。
  • Anthropic Messages — 一个 event: error,然后流关闭。
  • OpenAI Responses — 一个 response.failed,原因在 response.error.code 中。
  • Legacy Completions — data: {"error": …},然后 [DONE]。
SSE
data: {"id":"joingonka-error","object":"chat.completion.chunk","model":"MiniMaxAI/MiniMax-M2.7","choices":[],"error":{"message":"Gonka network error","type":"api_error"}}

Anthropic 错误格式#

  • POST /v1/messages 以 Anthropic 信封格式响应:{"type": "error", "error": {"type", "message"}}。
  • 网关拒绝会保留上表中的 type(insufficient_funds、model_unavailable 等);此信封中没有 code 字段 — 原因在文本中。
  • 请求格式错误 — invalid_request_error:缺少消息或 max_tokens,工具调用没有名称,模型未知。
  • 未知路径 — not_found_error,请求体过大 — request_too_large。
SSE
event: error
data: {"type":"error","error":{"type":"timeout","message":"Upstream timeout"}}

哪些情况可以重试#

  • 在 Retry-After 指定的暂停后:429
  • 采用递增暂停 — 1、2、4 秒,以此类推:500, 502, 503 service_unavailable, 504
  • 换用其他模型:503 model_unavailable
  • 不要在没有改动的情况下重试 — 修正请求、密钥或余额:400, 401, 402, 403, 404, 413, 415, 501

每次在 504 之后重试都会重新扣除输入预估费用;长回复请启用 stream: true。

如果错误反复出现,请联系支持,并附上响应头中的 x-request-id。