OpenAI API 报错 400、401、403、404、429、500、503 怎么排查:按官方错误码页逐个看原因和解决办法

调用 OpenAI API 返回 400、401、403、404、429、500、503,各自什么意思?本文按官方 Error codes 页,每个状态码一节,写清官方给的原因和解决办法,并说明 404 在官方页面里的位置、429 的六种情形,附 Python 和 Node 的错误捕获写法。

NNathaniel bigo··原创首发·AI 辅助撰写
11 分钟读完
资料核对于 2026-11-05 · 依据官方文档与公开资料整理 其他 账号
本文根据 OpenAI 官方《Error codes》和《Rate limits》整理,资料核对于 2026-11-05。配图为本站整理的示意图,不是界面截图。本站(bigolab.com)不是 OpenAI 官方网站。API 是按用量计费的独立服务,与 ChatGPT 订阅分开计算,Key 的获取见 /guides/openai-api-key。

适用于谁

  • 调用 OpenAI API 时拿到一个状态码,不知道是代码问题、账号问题还是官方服务问题的开发者;
  • 想在程序里把不同错误分开处理的人;
  • 想先对号入座,再决定要不要读更长的排查文章的人。

结论先说

  1. 先看状态码,再看 error.code。 同样是 429,可能是请求太快,也可能是额度用完、触发了花费上限,处理方法完全不同。
  2. 4xx 多半要你自己改:参数、Key、组织、权限、额度。5xx 才是官方一侧的问题。
  3. 账单、花费、配额类错误重试没用,官方明确说要先更新额度或上限再发请求。
  4. 官方错误码页没有单独写 404。 404 对应的信息只在 Python 库错误类型 NotFoundError 里,本文第四节如实说明。
  5. 服务端错误(500、503):稍等重试,并看官方状态页。

OpenAI API 状态码对照:400、401、403、404、429、500/503 各自怎么办

图:本站根据 OpenAI 官方《Error codes》 整理的示意图

一、400:请求本身有问题

官方错误表里 400 有一条:Invalid service_tier argument。原因是你请求的(或自动解析出的)服务层级,该项目不允许使用。官方说明,错误里 error.param 是 service_tier,类型是 invalid_request_error;项目限制针对 default、flex、priority 这几个服务层级,fast 按 priority 计算;就算你没写 service_tier 或写了 auto,只要解析出来的层级不被允许,也会报这个错。解决办法:

  • 到项目设置和组织设置里看允许的服务层级,项目不能开启组织已禁用的层级;
  • 把 service_tier 设成项目允许的层级;
  • 如果你用的是 auto 或没写,就调整项目设置,让解析出的层级被允许。

其他 400 大多对应 Python 库里的 BadRequestError:请求格式不对或缺必需参数。官方的排查步骤是:

  • 仔细读错误信息,它会指出哪个参数无效或缺失、期望什么值或格式;
  • 对照 API 参考,核对参数名、类型、取值和格式;
  • 检查请求数据的编码、格式和大小:UTF-8、JSON,数据太大时压缩;
  • 用 Postman 或 curl 单独复现,排除自己代码里的问题。

二、401:认证失败

官方列了四种 401:

1)Invalid Authentication。 凭据无效。可能是用了已撤销的 Key;用了不属于该组织或项目的 Key;Key 没有调用该接口所需的权限。解决:检查请求头里的 Key 和组织是否正确,不确定就重新生成一个并替换。

2)Incorrect API key provided。 Key 不对。可能是有拼写错误或多了空格;用了别的组织或项目的 Key;Key 已被删除或停用;本地缓存了旧的已撤销的 Key。官方建议:清除浏览器缓存和 Cookie 后重试,检查请求头里的 Key,必要时重新生成,并遵循官方的 Key 安全使用最佳实践。Key 怎么申请和保管见 /guides/openai-api-key。

3)You must be a member of an organization to use the API。 你的账号不在任何组织里。可能是离开或被移出了原组织/项目,或组织被删除。解决:向官方申请新组织,或请组织所有者在团队页面邀请你,也可以让项目所有者把你加进项目。

4)IP not authorized。 请求的 IP 与项目或组织配置的 IP 白名单不符。解决:从正确的 IP 发送,或更新 IP 白名单设置。这一条是别人给你的组织设了白名单才会遇到。

三、403:国家、地区不支持

官方表里 403 只有一条:Country, region, or territory not supported,表示你访问 API 的国家、地区不在官方支持范围。官方的解决办法就是看支持国家和地区的页面。本站不提供也不建议任何绕过办法,请以官方 Supported countries 页面为准。

四、404:官方页面里的位置

官方《Error codes》的 API 错误表里没有单独的 404 条目。404 相关的信息只在同页的 Python 库错误类型里:NotFoundError,官方的原因是“请求的资源不存在”,解决办法是确认你使用了正确的资源标识符。

结合官方这句话,本站的排查思路(推断,不是官方逐条说明)是:看看请求路径里和参数里涉及的标识符,例如模型名、文件 ID、响应 ID、批次 ID 有没有写错、是不是已被删除,是不是用了别的项目里的资源。如果是通过 SDK 调用,抛出的是 NotFoundError。

五、429:先看 error.code

429 在官方表里有六条,最重要的是区分 error.code:

429 错误的几种 error.code:额度用完、请求过快、slow_down、组织/项目花费上限、用量上限

图:本站根据 OpenAI 官方《Error codes》 整理的示意图

  • credit_balance_exhausted:组织的预付额度用完了。官方的办法是到账单设置里添加额度;
  • Rate limit reached for requests:请求太快。放慢节奏,有 Retry-After 就至少等那么久;没有就用带随机抖动的指数退避,并限制重试次数;
  • slow_down(类型 rate_limit_error):请求速度涨得太快,哪怕没超过每分钟请求数和 token 数也会触发。降速后逐步提高;
  • organization_spend_limit_exceeded:组织触发了你设置的月度花费上限,调高或取消,否则等到月度上限重置;
  • project_spend_limit_exceeded:同理,是项目级的花费上限,其他项目可以继续用;
  • organization_usage_limit_exceeded:触发了 OpenAI 分配给组织的月度用量上限,这个与你自己设的花费上限是两回事,可以申请更高的批准用量或联系支持。

官方特别说明:账单相关错误请检查 error.code,因为 error.type 仍可能是 insufficient_quota;重试账单、花费或配额类错误不会恢复访问。

"Rate limit reached for requests" 的常见原因,官方列了:循环或脚本发请求太频繁;和别人共用 Key;免费账号限额低;达到了项目设定的限额。限额按组织算而不是按用户算,团队里别人的用量也会占用。层级与限额见 /guides/openai-api-usage-tiers-rate-limits,具体排查见 /guides/openai-api-429-error。

六、500 和 503:官方一侧

500:服务器处理请求时出错。 官方说原因在它们的服务器。办法:稍等片刻再重试,持续出现就联系官方,并查看官方状态页(status.openai.com)。Python 库对应 InternalServerError,官方的步骤是先等几秒重试,再看状态页有没有进行中的事故或维护。

503:模型暂时过载。 类型 service_unavailable_error,code 是 server_is_overloaded,表示请求的模型暂时没有足够容量处理请求。有 Retry-After 就等那么久再试,没有就拉长重试间隔;持续出现就看状态页。

提醒:Python、TypeScript 等 SDK 里,429 对应 RateLimitError,503 对应 InternalServerError,处理限速和过载时两者都要处理,并检查 error.code。

七、在代码里分开处理

官方的 Node 示例(保存为 .mjs):

javascript
import OpenAI from "openai";

const client = new OpenAI();

try {
  const response = await client.responses.create({
    model: "gpt-6-astra", // 以官方模型页当天为准
    input: "Hello world",
  });
  console.log(response.output_text);
} catch (error) {
  if (error instanceof OpenAI.APIConnectionError) {
    console.error("连不上 OpenAI API:", error.message);
  } else if (error instanceof OpenAI.RateLimitError) {
    console.error("请求超过限额:", error.message);
  } else if (error instanceof OpenAI.APIError) {
    console.error("API 返回错误:", error.status, error.message);
  } else {
    throw error;
  }
}

Python 版:

python
import openai
from openai import OpenAI

client = OpenAI()

try:
    response = client.responses.create(model="gpt-6-astra", input="Hello world")
except openai.APIConnectionError as e:
    print("连不上 OpenAI API:", e)
except openai.RateLimitError as e:
    print("请求超过限额:", e)
except openai.APIError as e:
    print("API 返回错误:", e)
else:
    print(response.output_text)

注意 APIError 要放在最后,因为前面两个是它的子类。官方还说明 APIConnectionError 是网络层面的问题,可能是网络设置、代理配置、SSL 证书或防火墙规则;APITimeoutError 是请求耗时太长被服务器断开,等几秒重试。

八、问题一直不好:联系官方时要带什么

官方在 Persistent errors 一节说,持续出错时联系官方支持,并提供:使用的模型;错误信息和 code;发送的请求数据和请求头;请求的时间戳和时区;其他有助于诊断的细节。注意别把 Key 本身发给任何人。

常见问题

Q:同一个请求有时 200 有时 429?

先看是不是 slow_down,或者是批量并发。有关批处理的独立限额,见 /guides/openai-api-batch。

Q:400 说模型不存在?

官方错误码页没有单独写这种情况。按本文第四节的思路核对模型名,并以官方模型页为准。

Q:账单页面看不到额度?

账单和价格见 /guides/openai-api-pricing-billing,价格以官方价格页当天为准。

参考资料

  • OpenAI 官方:Error codes — https://developers.openai.com/api/docs/guides/error-codes
  • OpenAI 官方:Rate limits — https://developers.openai.com/api/docs/guides/rate-limits

Nathaniel 的更多内容

  1. 01

    Claude Code 在 Windows 上的常见坑:Git Bash 还是 PowerShell、路径反斜杠、假报错、WSL 怎么选

    Windows 上用 Claude Code,装好之后最容易踩的是:用哪个 shell、路径写法不一致、grep 没匹配就报错、钩子没生效、WSL 和原生怎么选。本文逐条按官方文档整理原因和处理办法,附三段提示词和一张对照表。

    Claude0
  2. 02

    Claude Code Hooks 实战「提交前自动跑测试」:PreToolUse 拦住 git commit,测试不过就退出码 2,附 Windows 注意点

    只写一个完整例子:让 Claude Code 每次要执行 git commit 之前,先自动跑项目测试,没通过就拦下并把输出交给它修。本文按官方 Hooks 文档给出脚本、settings.json 配置、测试方法、排错和 Windows 的两处坑。

    Claude0
  3. 03

    Claude Code 自定义斜杠命令与 Skill 实战:从零写一个「生成更新日志」的 /release-notes,含传参、预执行命令和调试

    概念看过了,还是不知道从哪下手?本文按 Claude Code 官方「Extend Claude with skills」写一个完整可用的例子:用 /release-notes 根据 git 记录生成更新日志,覆盖目录、frontmatter、传参、预执行命令、预授权和调试。

    Claude0
  4. 04

    Claude Code 部署网站:先写 Dockerfile 和 compose 在本机跑通,再按清单上云服务器,别让它直接改线上

    想让 Claude Code 帮你把网站部署到云服务器。本文只写通用做法,按 Docker 官方文档讲:让它写 Dockerfile、.dockerignore 和 compose,在本机跑通,端口和数据卷怎么设,再给出上线清单,并说明为什么不要让它直接动线上机器。

    Claude0
  5. 05

    Claude Code 写爬虫与数据清洗:先查 robots.txt 和网站条款,控制频率,原始数据留一份再清洗

    想让 Claude Code 写爬虫抓数据再清洗。本文先讲合规:robots.txt 不是授权也不是安全措施、网站条款要自己读;再讲怎么用 Python 标准库检查规则、小样本先试、保存原始数据,以及用 pandas 清洗,附四段提示词。

    Claude0
  6. 06

    Claude Code 写 Chrome 扩展:按 Manifest V3 起步,加载未打包的扩展,改了哪些文件要重新加载

    想让 Claude Code 帮你写一个 Chrome 扩展。本文按 Chrome 官方扩展文档讲:manifest.json 的最小写法、在 chrome://extensions 加载未打包的扩展、哪些改动要刷新、怎么看控制台和报错,再给四段提示词,以及权限要尽量少。

    Claude0

同产品的其他教程

  1. 01

    OpenAI API 的 token 怎么算、怎么估算费用:input_tokens 计数接口、tiktoken 和隐藏的输出 token

    发请求前想知道会用多少 token?官方有 Responses 的 input_tokens 计数接口,能把文字、图片、文件、工具定义一起算准;本地 tiktoken 只适合纯文本。本文给 Python 和 Node 示例,讲输出 token 为什么可能比看到的多,以及怎么估算费用。

    ChatGPT0
  2. 02

    OpenAI API Node.js / TypeScript 快速上手:npm install openai、example.mjs 第一个请求,到流式、函数调用、联网搜索

    用 Node.js 调 OpenAI API:设置 OPENAI_API_KEY 环境变量,npm install openai,新建 example.mjs,用 client.responses.create 发出第一个请求。并列出图片、文件、流式、函数调用、联网搜索和错误捕获的 Node 写法。

    ChatGPT0
  3. 03

    OpenAI API 用量层级(usage tiers)与速率限制怎么提升:Free、Build、Launch、Grow 和后台 Limits 页

    OpenAI API 的限速不是固定的:官方按累计购买额度把组织分成 Free、Build、Launch、Grow 四个层级,达到门槛自动升级。本文讲 RPM、TPM 等指标、怎么在后台查自己的限额、响应头怎么读、花费上限和限速的区别,以及怎么让限额变得够用。

    ChatGPT0
  4. 04

    OpenAI Realtime API 是什么:语音到语音会话、WebRTC 与 WebSocket、临时密钥和事件机制

    Realtime API 让模型直接处理音频,做可以随时打断的语音助手。本文按官方文档讲它是什么、什么时候用、浏览器接入的流程、session 与事件、可用声音、60 分钟会话上限、安全标识,以及它和转写、文字转语音的分工。

    ChatGPT0
  5. 05

    OpenAI 图像生成 API 怎么用:gpt-image 系列、images.generate 与 Responses 工具、尺寸质量和遮罩编辑

    用 OpenAI API 生成或编辑图片,有 Image API 和 Responses 里的 image_generation 工具两条路。本文按官方文档给 Python 和 Node 示例,讲 gpt-image 模型选择、尺寸质量格式参数、遮罩编辑、被拦截时的错误处理,以及需要组织验证的提醒。

    ChatGPT0
  6. 06

    OpenAI API 语音转文字和文字转语音怎么调:gpt-transcribe 转写、25 MB 限制,以及多个语音模型的停服日期

    用 OpenAI API 把录音转成文字,官方现在推荐 gpt-transcribe;文字转语音的 speech 接口则已被官方标为弃用。本文给 Python 和 Node 示例,讲格式、25 MB 限制、prompt 与 keywords,并写明官方公布的停服日期。

    ChatGPT0

0 条评论

登录 后参与评论

还没有评论,来抢沙发~