博客

OpenAI / Codex 报 model_not_found(404):原因和解决办法

一句话答案

返回 404、"code": "model_not_found",提示 The model `<id>` does not exist or you do not have access to it.,意思是:你调用的接口不会用这个模型 ID 给你的 Key 提供服务。不管是这个 ID 根本不存在,还是存在但你没有权限,OpenAI 返回的都是同一句话,所以两种情况都要查:

  1. ID 写对了吗? 用同一个 Key 调 GET /v1/models,看列表里有没有这个 ID。
  2. 模型还在提供吗? 已退役的模型过了停用日期就不能再调了。
  3. 你的项目能用它吗? 项目可以限制自己的 Key 能调哪些模型。
  4. 请求发到你以为的地方了吗? 把网关的模型名发给了 OpenAI,或者把 OpenAI 的模型 ID 发给了一个没有这个模型的网关,都会报这个错。

如果是用 ChatGPT 账号登录的 Codex,模型必须在你的套餐和工作区里可用。运行 /model,从列表里选一个。

报错长什么样

API 报错,下面这条是 Aider-AI/aider#2030 里经 LiteLLM 抛出的:

text
Error code: 404 - {'error': {'message': 'The model `gpt-4o-2024-08-06` does not exist or you do not have access to it.', 'type': 'invalid_request_error', 'param': None, 'code': 'model_not_found'}}

用 ChatGPT 账号登录的 Codex,见 openai/codex#43344(2026 年 9 月,有删节):

text
unexpected status 404 Not Found: The model `gpt-5.5` does not exist or you do not have access to it., url: https://chatgpt.com/backend-api/codex/responses, ...

网关配置没生效的应用,见 lihor-hub/news-dashboard#552。auto 是只有他们网关才认识的模型名:

text
Error code: 404 - The model `auto` does not exist or you do not have access to it. (model_not_found)

OpenAI Python SDK 遇到这个 404 会抛 NotFoundError。

为什么会这样

原因 怎么判断 怎么改
ID 拼错,或者填的是显示名而不是 API ID GET /v1/models 里没有这个 ID 从列表里原样复制 id
模型已退役 OpenAI 弃用页面 上它的停用日期已过 换成页面推荐的替代模型
项目限制了可用模型 项目设置了模型白名单或黑名单 请管理员放开这个模型,或换用其他项目的 Key
Key 属于别的组织或项目 换一个 Key,同一个 ID 就能用 用能调这个模型的组织和项目下的 Key
请求发错了地址 报错里的 URL 或你的 Base URL 设置不是你预期的 改好 Base URL,并使用目标接口列出的 ID
Codex:模型不在你的 ChatGPT 套餐或工作区里 URL 是 chatgpt.com/backend-api/codex/... 用 /model 换一个模型

模型 ID。 List models 接口 会列出当前可用的模型,以及请求里要填的准确 id。ChatGPT 里或某个工具菜单里显示的名字,不一定就是 API ID。

模型退役。 模型停用后就不能再访问了。即将停用的日期列在弃用页面上;如果已经公布了停用日期,List models 的返回里也会带 shutdown_date 字段。比如 OpenAI 在 2026 年 10 月 14 日宣布,gpt-4o-2024-08-06、gpt-4o-2024-11-20、gpt-4o-mini-2024-07-18、gpt-4.1-2025-04-14、gpt-4.1-mini-2025-04-14 将于 2027 年 1 月 14 日从 API 下线,推荐的替代模型都是 gpt-6-luna。

项目模型权限。 组织管理员可以给项目设置模型白名单(只允许列出的模型)或黑名单(禁用列出的模型),见 项目管控文档。这个项目下的 Key 用不了规则之外的模型。

发错地址。 在 news-dashboard#552 里,网关的 Base URL 和 Key 存在了另一组变量名下,后端读的变量是空的。应用于是退回了 OpenAI 默认地址,还带上了只有网关才有的模型名 auto。反过来也一样:网关只提供它自己列出的模型 ID,和 OpenAI 的不一定相同。

怎么解决

  1. 列出你的 Key 能用的模型。 用和报错请求相同的 Key、相同的 Base URL:
bash
curl https://api.openai.com/v1/models \
  -H "Authorization: Bearer $OPENAI_API_KEY"

或者用 Python:

python
from openai import OpenAI

client = OpenAI()
ids = sorted(m.id for m in client.models.list())
print(len(ids), "models")
print("gpt-6-luna" in ids)
  1. 列表里没有这个 ID: 改正拼写,或者换一个列表里有的模型。如果是以前用过的模型,去弃用页面查一下。
  2. 列表里有,请求却还是失败: 对比应用里实际用的 Key 和 Base URL,和你刚才测试用的是不是同一套。Python SDK 会读取 OPENAI_BASE_URL、OPENAI_PROJECT_ID 这类环境变量,它们可能让应用连到别的地址或别的项目。
  3. 是项目限制导致的: 请组织管理员给这个项目放开该模型,或者换用允许它的项目下的 Key。

在 Codex 里遇到

  • 用 ChatGPT 账号登录。 报错 URL 以 https://chatgpt.com/backend-api/codex/ 开头。按 Codex 斜杠命令文档 的说法,/model 选择器只显示你的账号和工作区能用的模型。运行 /model 选一个列表里的模型,再运行 /status 确认。
  • 配置里写死了模型。 检查 ~/.codex/config.toml 以及你用的 profile 里的 model = "..."。如果写的是你账号用不了的模型,改成 /model 列表里有的。
  • 很多人同时报错。 2026 年 9 月,几天之内有大量用户报告 gpt-5.5 出现这个 404(#43344、#43755、#44098)。#43344 里有用户确认同一账号下 gpt-6-astra 仍然正常,#44098 的提问者后来也说恢复了。如果某个模型所有人同时报错,先换模型、看 issue 进展,不用急着改自己的配置。
  • 用了自定义 provider。 哪些模型 ID 存在由 provider 决定,用它模型列表里的 ID。

一个 Key 调多家模型

TeamoRouter 是一个 API 网关,一个 Key 可以调 GPT、Claude、Gemini、DeepSeek。它兼容 OpenAI 接口(/v1/chat/completions 和 /v1/responses),GET /v1/models 会列出你的 Key 能用的模型 ID,写进代码之前可以先查一下。没有订阅,按用量付费。

  1. 在 TeamoRouter 控制台 创建 API Key,Key 以 sk-teamo- 开头。
  2. 充值,最低 $5。 充值弹窗支持银行卡;也可以点 「USDT支付」,用 USDT、USDC 或 ETH,从任意交易所 App 转账——收银台会按金额显示可用网络(BEP20 从 $5 起就能用)。步骤见 用 USDT 充值。
  3. 列出模型 ID:
bash
curl https://api.teamorouter.com/v1/models \
  -H "Authorization: Bearer sk-teamo-..."
  1. 用 OpenAI SDK 调其中一个:
python
from openai import OpenAI

client = OpenAI(
    api_key="sk-teamo-...",
    base_url="https://api.teamorouter.com/v1",
)

resp = client.responses.create(model="gpt-6-sol", input="Hello")
print(resp.output_text)

Codex 的话,在 ~/.codex/config.toml 里加一个 provider,model 填列表里的 ID:

toml
model_provider = "teamorouter"
model = "gpt-6-sol"

[model_providers.teamorouter]
name = "TeamoRouter"
base_url = "https://api.teamorouter.com/v1"
env_key = "OPENAI_API_KEY"
wire_api = "responses"

把 OPENAI_API_KEY 设成你的 TeamoRouter Key,然后在同一个终端里启动 codex。Windows 的命令见 安装与配置 Codex。Claude 模型用同一个 Key 走 Anthropic 协议(/v1/messages),见 API 接入指南。

常见问题

为什么提示里写的是「or you do not have access to it」? 不管 ID 不存在,还是你的 Key 没权限,OpenAI 返回的都是这一句。所以最快的办法就是用同一个 Key 调 GET /v1/models 看一眼。

换个新 Key 能解决吗? 只有新 Key 属于能用这个模型的组织和项目时才行。同一个项目下新建的 Key,模型权限是一样的。

这是 401 的问题吗? 不是。Incorrect API key provided 这类 401 是 Key 被拒了;404 model_not_found 是 Key 通过了,但模型不可用。

昨天还能用,今天怎么不行了? 查一下这个模型在弃用页面上的情况,问问项目的模型设置有没有改过;如果是 Codex,看看别人是不是也在报同一个模型。

延伸阅读

准备好接入了吗?登录控制台 · 购买额度 · 创建 API Key,三步即可开始。