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 foundproject 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 多半是服务端或上游临时问题。

看懂错误码,再配合错误信息里的 messagereasonretryDelay,大部分问题都能很快定位。

本文由8848AI原创,转载请注明出处。