ModelRouterModelRouter
⚠️合规提示:本项目仅用于合法授权的 API 网关、内部管理和私有化部署场景。请遵守上游服务条款、平台规则、监管要求和内容安全要求。

错误排查

按状态码和错误码定位问题:原因、处理办法,以及不报错但结果异常的情况。

错误响应格式

出错时接口返回 JSON,错误信息在 error 字段里:

{
  "error": {
    "message": "No available channel for model gpt-5 under group default (distributor) (request id: 20260927155100934812128...)",
    "type": "new_api_error",
    "code": "model_not_found"
  }
}
字段说明
message具体原因,末尾的 request id 用于反馈问题时定位这次请求
typenew_api_error 表示由本站网关拦截;upstream_error 等表示来自上游模型服务
code错误码,部分错误为空字符串,这时以状态码和 message 为准

使用 Anthropic 格式(/v1/messages)时,密钥、模型等校验错误同样是上面的格式;上游模型服务返回的错误可能按 Anthropic 格式返回。

对照表

400:请求内容有误

典型 message / code原因处理
Model name not specified请求体里没有 model 字段补上模型 ID
invalid JSON request body请求体不是合法 JSON检查引号、逗号、括号;用 JSON 工具校验
field messages is required(invalid_request)缺少接口必填字段对照 创建对话 补齐必填字段
其他参数相关报错模型不支持某个参数或取值先用最小请求跑通,再逐个加参数定位

401:密钥无效

典型 message原因处理
Invalid token以下任意一种:密钥填错或不完整、没带密钥、密钥已删除、已禁用、已过期、密钥额度已用完到控制台 API 密钥 页面逐项检查:状态是否启用、有效期、剩余额度
注意
401 不只代表"密钥填错"。密钥过期或额度用完也返回同样的 Invalid token。确认密钥没填错后,请到控制台检查它的状态、有效期和额度。

请求头格式为 Authorization: Bearer YOUR_API_KEY。Anthropic 格式接口也可以用 x-api-key: YOUR_API_KEY。

403:没有权限或余额不足

典型 message / code原因处理
insufficient_user_quota账户余额不足到 余额与充值 充值
pre_consume_token_quota_failed密钥剩余额度不够这次请求预扣提高密钥额度或改为无限额度
该令牌无权访问模型 xxx密钥设置了可用模型范围,不包含这个模型在密钥设置中加入该模型,或换用其他密钥
该令牌无权访问任何模型密钥的可用模型范围为空编辑密钥,重新选择可用模型
您的 IP 不在令牌允许访问的列表中(access_denied)密钥设置了 IP 白名单把当前出口 IP 加入白名单,或清空白名单
无权访问 xxx 分组 / 分组 xxx 已被弃用密钥所选分组不可用编辑密钥,换一个可用分组

404:地址错误

典型 message原因处理
Invalid URL (POST /v1/v1/chat/completions)地址重复拼了 /v1SDK 的 Base URL 填 https://modelrouter.club/v1,不要再手动加 /v1
Invalid URL (POST /chat/completions)地址漏写了 /v1SDK 的 Base URL 改为 https://modelrouter.club/v1
Invalid URL (POST /v1)工具要求填完整接口地址,却只填了 Base URL改为 https://modelrouter.club/v1/chat/completions

429:请求太频繁

典型 message原因处理
您已达到请求数限制:N 分钟内最多请求 M 次触发本站的请求频率限制降低并发,等待后重试
您已达到总请求数限制……包括失败次数失败请求也计入次数,通常是程序在反复重试一个错误请求先修正请求本身,不要无限重试
来自上游的限流提示上游模型服务繁忙指数退避重试,或换同系列的其他模型

5xx:服务端或上游异常

状态码 / code原因处理
503 model_not_found模型 ID 不存在,或当前没有可用线路。模型 ID 末尾多了空格也会报这个错从 模型列表 复制精确 ID;ID 确认无误仍报错时稍后重试
500 convert_request_failed该模型不支持当前使用的接口格式换用该模型支持的接口,例如改用 /v1/chat/completions
500 / 502 / 504 do_request_failed、bad_response_status_code 等上游模型服务异常或超时稍后重试;持续出现请带 request id 反馈

不报错但结果异常

现象原因处理
返回 200 但 content 为空,finish_reason 为 length推理模型先输出思考过程,max_tokens 太小时额度被思考用完,正文还没开始调大 max_tokens,或读取 reasoning_content 查看思考内容

工具里显示的报错

编程工具有时会把服务端错误换成自己的提示语:

工具提示实际含义
CodexWe're currently experiencing high demand服务端返回了 500,常见原因是所选模型不支持 Responses 接口,见 Codex 教程

遇到看不懂的提示时,可以在 使用日志 里找到这次请求,查看原始错误。

该不该重试

状态码是否重试
400、401、403、404不要重试,先修正请求、密钥或配置。重复发送同一个错误请求还可能触发 429
429可以重试,降低并发,按 1 秒、2 秒、4 秒逐步延长间隔
5xx可以有限次重试(建议不超过 3 次);持续失败请反馈

每次成功的请求都会单独计费。程序自动重试时请设置上限,避免请求其实已成功却被重复发送。

反馈问题

请提供发生时间、模型 ID、接口路径、错误正文中的 request id,以及脱敏后的错误信息。不要发送完整密钥、Authorization 请求头或包含个人信息的对话内容。