API调用报错怎么办?常见错误码原因与解决办法速查
API调用报错怎么办?常见错误码原因与解决办法速查
在使用 8848AI API 或其他兼容 OpenAI 格式的接口时,偶尔会看到 400、401、429、500、503 这类错误。它们不一定代表账号坏了,也不一定代表平台不可用。大多数情况下,只要看懂错误码和错误信息,就能快速判断是参数问题、余额问题、限流问题,还是上游模型暂时没容量。
这篇文章整理一份常见 API 报错速查表,方便开发者和普通用户自查,也方便客服快速定位问题。
先看三个关键信息
遇到报错时,不要只看“失败”两个字,优先看这三项:
1. HTTP 状态码:比如 400、401、429、503。
2. error.message:最直接的人话说明。
3. error.code / reason / details:通常能定位到具体原因,比如余额不足、模型不存在、容量耗尽。
例如:
{
"error": {
"code": 503,
"message": "No capacity available for model gemini-3.1-pro-high on the server",
"status": "UNAVAILABLE",
"details": [
{
"reason": "MODEL_CAPACITY_EXHAUSTED",
"metadata": {
"model": "gemini-3.1-pro-high"
}
},
{
"retryDelay": "41s"
}
]
}
}
这类错误的重点不是“接口坏了”,而是“这个模型当前没容量,建议 41 秒后重试”。
常见错误码速查表
| 错误码 | 常见含义 | 常见原因 | 处理办法 | |---|---|---|---| | 400 | 请求参数错误 | JSON 格式错、字段名错、模型参数不支持、上下文过长 | 检查请求体、模型名、messages 格式、max_tokens 和上下文长度 | | 401 | 认证失败 | API Key 错误、Key 没填、Key 被重置 | 检查 Authorization Header,重新复制 Key | | 402 | 余额不足 | 账户额度耗尽、套餐到期 | 充值或更换有额度的 Key | | 403 | 无权限 | 模型未授权、渠道不允许、账号权限不足 | 换模型,或联系平台确认权限 | | 404 | 资源不存在 | 模型名写错、上游项目/资源不存在、接口路径错 | 检查模型名、base_url、接口路径 | | 408 | 请求超时 | 网络慢、模型响应太久、任务太大 | 减少输入长度,稍后重试,增加客户端超时时间 | | 409 | 状态冲突 | 并发请求冲突、重复任务、服务端状态未刷新 | 等几秒重试,避免重复提交 | | 413 | 请求体过大 | 输入文本、图片、文件太大 | 压缩内容,拆分请求,减少上下文 | | 422 | 参数可解析但不合法 | 字段类型不对、数组为空、参数范围超限 | 按接口文档修正参数类型和值 | | 429 | 请求过快/限流 | RPM、TPM、并发数超限 | 降低并发,增加重试间隔,换更高额度通道 | | 500 | 服务端内部错误 | 上游模型异常、临时 bug、服务重启 | 稍后重试;若持续出现,联系客服 | | 502 | 网关错误 | 上游不可达、反代失败、模型服务挂了 | 重试;若多次出现,联系客服排查上游 | | 503 | 服务暂不可用 | 模型容量耗尽、节点拥堵、维护中 | 按 retryDelay 等待后重试,或切换备用模型 | | 504 | 网关超时 | 上游生成太慢、长文本任务超时 | 缩短输入、减少输出长度、拆分任务 |400 Bad Request:请求写错了
400 是最常见的开发阶段错误,通常不是平台故障,而是请求格式或参数不符合要求。
常见原因:
- JSON 格式不合法,比如少了逗号或引号。
messages不是数组,或者缺少role/content。- 模型名写错,比如多了空格、大小写不一致。
- 使用了当前模型不支持的参数。
- 输入内容太长,超过模型上下文限制。
- 图片、工具调用、response_format 等高级参数格式不对。
解决办法:
1. 先用最小请求测试:只保留 model 和一条简单 messages。
2. 确认 Content-Type: application/json。
3. 确认 Authorization: Bearer sk-xxxx 格式正确。
4. 删除不确定的高级参数,再逐项加回去。
5. 如果提示上下文过长,就删减历史消息或拆分任务。
最小请求示例:
curl https://你的接口地址/v1/chat/completions \
-H "Authorization: Bearer sk-你的Key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4.1-mini",
"messages": [
{"role": "user", "content": "你好"}
]
}'
401 Unauthorized:Key 没通过认证
401 基本就是认证问题。
常见原因:
- API Key 没填。
- Key 复制少了字符。
- Header 写成了
Token,而不是Bearer。 - Key 已被删除、重置或禁用。
- base_url 填错,导致 Key 发到了错误的平台。
正确格式:
Authorization: Bearer sk-xxxxxxxx
解决办法:
1. 重新复制完整 Key,不要带多余空格。
2. 检查软件里的 API 地址是否填对。
3. 如果是第三方客户端,确认它支持 OpenAI 兼容格式。
4. 仍然失败,就在后台新建一个 Key 再试。
402 Payment Required:余额不足
402 通常代表账户额度不足、套餐过期,或者当前 Key 没有可用额度。
解决办法很直接:
- 到控制台查看余额。
- 充值或兑换额度。
- 换一个有余额的 Key。
- 如果刚充值仍提示 402,等 1-2 分钟再试,可能是缓存未刷新。
403 Forbidden:有 Key,但没权限
403 和 401 不一样。401 是“不认识你”,403 是“认识你,但你不能用这个资源”。
常见原因:
- 当前模型未对账号开放。
- 当前渠道不支持这个模型。
- Key 被限制了模型范围。
- 组织、项目或安全策略禁止访问。
解决办法:
1. 换成平台明确支持的模型名。
2. 检查 Key 是否有限定模型权限。
3. 如果是企业/团队账户,确认管理员是否开启该模型。
4. 联系客服确认模型是否开放。
404 Not Found:模型、路径或上游资源不存在
404 常见于三种情况:
第一,模型名写错。
比如平台支持的是:
gemini-3.1-pro-high
但请求里写成:
gemini-3.1-pro-hight
就可能返回 404 或模型不存在。
第二,接口路径写错。
OpenAI 兼容接口一般是:
/v1/chat/completions
如果 base_url 已经包含 /v1,客户端里又自动拼了一次 /v1,就可能变成错误路径。
第三,上游资源不存在。
某些模型背后依赖上游项目、账号或资源。如果上游返回类似 Resource not found、project not found,说明不是你的聊天内容问题,而是上游资源绑定异常,需要平台侧处理。
解决办法:
- 检查模型名是否完全一致。
- 检查 base_url 是否重复带
/v1。 - 换一个模型测试。
- 如果多个模型正常,只有某个模型 404,优先联系平台客服。
429 Too Many Requests:请求太快或 Token 太多
429 是限流,不一定是“请求次数太多”,也可能是“Token 消耗太快”。
常见限制包括:
- RPM:每分钟请求数。
- TPM:每分钟 Token 数。
- 并发数:同时进行的请求数量。
- 单 Key 限制或单模型限制。
典型表现:
- 小问题连续问很多次触发 RPM。
- 长文档、代码库、大上下文触发 TPM。
- 批量脚本并发太高触发并发限制。
解决办法:
1. 降低并发,比如从 20 并发降到 3-5。
2. 在脚本里加指数退避:先等 2 秒,再等 5 秒、10 秒、30 秒。
3. 长文本任务拆分处理。
4. 避免把完整历史对话无限塞回去。
5. 如果业务量确实大,升级额度或增加可用渠道。
简单重试逻辑:
import time
for i in range(5):
try:
# call_api()
break
except RateLimitError:
time.sleep(min(2 ** i, 30))
500 Internal Server Error:服务端内部异常
500 说明服务端或上游模型内部出错。用户侧能做的有限。
常见原因:
- 上游模型临时异常。
- 某个请求触发了模型服务 bug。
- 服务正在重启或更新。
- 请求内容格式边界情况导致上游报错。
解决办法:
1. 先原样重试一次。
2. 如果仍失败,删减输入内容再试。
3. 换一个同类模型测试。
4. 如果多个模型都 500,联系平台客服。
502 Bad Gateway:网关或上游连接失败
502 通常是中转层连不上上游,或者上游返回了不完整响应。
常见原因:
- 上游服务短暂不可达。
- 反向代理或网关异常。
- 上游连接被重置。
- 某个渠道挂了。
解决办法:
- 稍后重试。
- 换模型或换渠道。
- 如果是平台用户,直接把错误截图发给客服,客服可以看具体渠道日志。
503 Service Unavailable:模型没容量或暂时不可用
503 很常见,尤其是热门模型、高性能模型、高峰时段。
典型例子:
{
"error": {
"code": 503,
"message": "No capacity available for model gemini-3.1-pro-high on the server",
"status": "UNAVAILABLE",
"details": [
{
"reason": "MODEL_CAPACITY_EXHAUSTED",
"metadata": {
"model": "gemini-3.1-pro-high"
}
},
{
"retryDelay": "41s"
}
]
}
}
这个错误的意思是:
- 你的请求格式通常没问题。
- Key 通常也没问题。
- 只是当前模型所在的服务器没有可用容量。
- 服务端建议等待 41 秒后再试。
解决办法:
1. 按 retryDelay 等待后重试。
2. 在代码里捕获 503,自动 sleep 40-60 秒。
3. 高峰期改用轻量模型,例如从 Pro/High 降到 Flash。
4. 对实时性要求高的业务,配置备用模型或备用渠道。
推荐策略:
首选模型失败 → 等待 retryDelay → 再试一次 → 仍失败 → 自动降级到备用模型
例如:
gemini-3.1-pro-high → gemini-3.1-flash → gpt-4.1-mini
504 Gateway Timeout:生成太久超时
504 一般说明请求已经发出去了,但上游太久没返回。
常见场景:
- 输入太长。
- 要求输出太长。
- 让模型处理复杂代码、长文档、长表格。
- 流式输出被客户端或代理层中断。
解决办法:
1. 缩短输入。
2. 降低 max_tokens。
3. 把任务拆成多轮,比如先总结,再分析,再生成结果。
4. 客户端超时时间设长一点。
5. 开启 stream 流式输出,避免长时间无响应。
图片、语音、文件类接口的特殊错误
多模态接口还可能遇到一些特殊问题。
图片 URL 无法访问
如果传入的是图片链接,模型服务器必须能访问这个链接。内网地址、本地地址、需要登录的地址通常无法读取。
解决办法:
- 使用公网可访问图片。
- 或先上传文件,再把平台返回的地址传给模型。
图片过大或格式不支持
常见表现是 400、413 或模型解析失败。
解决办法:
- 图片压缩到合理大小。
- 使用 jpg、png、webp 等常见格式。
- 不要一次传太多图片。
音频或文件超时
长音频、大 PDF、大文档容易超时。
解决办法:
- 先切分文件。
- 每段单独识别或总结。
- 最后再汇总结果。
客服排查时建议用户提供什么
为了快速定位问题,建议用户提供以下信息:
1. 错误截图或完整错误 JSON。
2. 使用的软件名称,例如 Cherry Studio、ChatBox、Open WebUI、代码脚本等。
3. API 地址是否为平台提供的地址。
4. 使用的模型名。
5. 大概请求内容类型:普通聊天、长文档、图片、代码、批量脚本。
6. 错误是偶发还是每次必现。
不建议用户直接公开 API Key。如果必须排查 Key,只需要提供 Key 的前后几位,或者由客服在后台查看。
最实用的处理顺序
遇到 API 报错,可以按这个顺序处理:
1. 看错误码:先判断是参数、认证、余额、限流还是上游问题。
2. 用最小请求测试:只发一句“你好”。
3. 换模型测试:确认是单模型问题还是全局问题。
4. 等一会儿重试:429、503、504 很多都是临时问题。
5. 减少上下文:长文档、大代码、大图片先拆分。
6. 联系平台客服:持续 500、502、503,或同一模型持续 404,交给平台侧查日志。
一句话总结
400 多半是请求写错,401 是 Key 问题,402 是余额问题,403 是权限问题,404 是模型/路径/上游资源不存在,429 是请求太快或 Token 太多,500/502/503/504 多半是服务端或上游临时问题。
看懂错误码,再配合错误信息里的 message、reason、retryDelay,大部分问题都能很快定位。