错误排查
401、额度不足、模型受限、无可用渠道、参数错误、接口与模型不匹配、429、超时的错误体和处理办法。
先看 HTTP 状态码和返回体里的 error.code / error.message。所有错误体的结构一致:
{
"error": {
"code": "...",
"message": "... (request id: 2026...)"
}
}示例中省略了 type(错误类型标识)字段,判断问题请以 error.code 和 error.message 为准。
message 末尾的 request id 请保留,联系我们反馈问题时附上它,也可以在 使用日志 中按请求 ID 定位那一次请求。
下文的错误体中 request id 已省略。
| 状态码 | 常见原因 | 跳转 |
|---|---|---|
| 401 | Key 无效、缺失、被删除 | 401 |
| 403 | 额度不足,或 Key 无权访问该模型 | 额度不足、模型被限制 |
503 model_not_found | 模型名错误,或没有该模型的可用渠道 | 模型不存在 |
4xx/5xx invalid_request | 请求体缺字段、参数错误 | 请求参数错误 |
| 4xx/5xx | 用错了接口,所选模型不支持该接口 | 接口与模型不匹配 |
| 5xx(上游) | 上游模型服务出错 | 上游错误 |
| 429 | 请求太频繁 | 429 |
| 超时 / 524 | 响应太慢 | 超时 |
401 Invalid token
{
"error": {
"code": "",
"message": "Invalid token"
}
}检查清单:
- Key 是否完整,以
sk-开头。 - 请求头是否是
Authorization: Bearer sk-...(Anthropic 格式也可以用x-api-key: sk-...)。 - 环境变量是否真的生效:
echo ${#MYAIEXP_API_KEY}看长度是否不为 0。 - Key 是否在 API 密钥 页被删除、禁用或已过期。
- Key 中是否混入了换行、空格等不可见字符;这种情况有时连 JSON 错误体都没有,直接返回一个空 body 的 400,重新复制 Key 即可。
- Base URL 是否正确:OpenAI 格式是
https://ai.myaiexp.com/v1,Anthropic 格式是https://ai.myaiexp.com。
额度不足
HTTP 403:
{
"error": {
"message": "token quota is not enough, token remain quota: $..., need quota: $...",
"param": "",
"code": "pre_consume_token_quota_failed"
}
}含义:这个 Key 的剩余额度(remain quota)小于本次预估需要的额度(need quota)。处理:
- 在 API 密钥 页给该 Key 调高额度,或改为无限额度。
- 若 Key 本身没问题,检查账户余额是否也用完,到 钱包 充值或使用兑换码。
- 预估额度和
max_tokens、输入长度有关,把max_tokens调小可以降低预估值。
模型被 Key 限制
HTTP 403:
{
"error": {
"code": "",
"message": "该令牌无权访问模型 your-model-id"
}
}这个 Key 开启了「模型限制」,且没有包含你请求的模型。编辑 Key,把该模型加入允许列表,或关闭模型限制。
模型不存在 / 无可用渠道
HTTP 503:
{
"error": {
"code": "model_not_found",
"message": "分组 default 下模型 your-model-id 无可用渠道(distributor)"
}
}注意这里不是 404。常见原因:
- 模型名拼错,或大小写不对(模型 ID 区分大小写)。
- 本站当前没有提供这个模型(以 模型广场 的线上列表为准)。
- 模型暂时没有可用的上游渠道。
处理:先用 GET /v1/models 看当前 Key 能用的模型,或查看 模型广场,复制准确的模型 ID 再试。
请求参数错误
缺少必填字段时的返回示例:
{
"error": {
"message": "field messages is required",
"param": "",
"code": "invalid_request"
}
}这类错误的 HTTP 状态码可能是 4xx 也可能是 5xx,以 error.code 和 message 为准,不要只看状态码。对照对应接口的必填字段检查:OpenAI 格式要 model 和 messages,Anthropic 格式还要 max_tokens,Responses 格式用 input 而不是 messages。
接口与模型不匹配
每个模型支持的接口不同:/v1/chat/completions 是 OpenAI 兼容的通用接口;/v1/messages 适用于支持 Claude 原生格式的模型;/v1/responses 适用于支持 Responses 接口的模型。具体可用模型和每个模型支持的接口以 模型广场 为准。
用某个接口调用不支持它的模型,会返回错误(具体状态码和信息取决于上游)。这说明所选模型不支持该接口:请到模型广场确认该模型支持的接口,然后换用对应的接口,或换一个支持当前接口的模型。常见场景:
- 在 Claude Code 里填了不支持 Claude 原生格式的模型:Claude Code 走
/v1/messages。 - 在 Codex CLI 里填了不支持 Responses 接口的模型:Codex CLI 走
/v1/responses。
上游错误
请求已经通过本站的鉴权,但上游模型服务返回了错误。这类错误和你的 Key、额度无关。
上游内部错误,HTTP 500:
{
"error": {
"message": "System error, please retry later.",
"code": "bad_response_status_code"
}
}处理办法:先确认该模型支持你调用的接口(见上一节);5xx 可以稍后重试,持续出现就换一个模型,并联系我们反馈,附上 request id。
429 限流
429 表示请求频率超过限制,可能来自本站,也可能来自上游模型厂商。处理办法:
- 读取响应头里的
Retry-After(如果有),按它等待。 - 使用指数退避重试:等 1 秒、2 秒、4 秒……并加随机抖动,最多重试 3 到 5 次。
- 降低并发,不要一次性发起大量请求。
- OpenAI / Anthropic 官方 SDK 已内置重试,可用
max_retries调整。
长期稳定被限流,请联系我们。
超时
大模型生成长文本可能需要几十秒甚至更久。非流式请求如果超过中间网络层(CDN、反向代理)的时间上限,会被断开,常见表现是 504 / 524 或客户端读超时。
处理:
- 优先改用 流式输出:数据持续返回,连接不会因空闲被断开。
- 调大客户端超时。Python:
OpenAI(timeout=120);Node:new OpenAI({ timeout: 120_000 })。 - 减少输出长度(调小
max_tokens),或换更快的模型。 - 思考类(推理)模型思考时间长,更适合用流式。
还没解决?
联系我们时,请提供:时间、请求的接口和模型名、Key 的名称(不要发送 Key 本身)、完整错误体里的 request id。
本服务仅供学习与研究用途。请遵守各模型提供方的使用政策。