Free AI API and chat, one OpenAI-compati

OpenAI API 400 invalid model 怎么解决?

更新于 2026-11-01 · onomeo.cyou

简答:OpenAI API 返回 400 invalid model,最常见原因是 model 值不是当前接口可用的准确 ID,或请求发到了错误的 Base URL。先调用 <code>GET /v1/models</code> 查看当前 API Key 可见的模型,再把返回的 <code>id</code> 原样用于最小请求;如果仍失败,再检查项目权限、端点和请求体。本文为第三方 AI API 接入指南,不代表任何平台官方。

定义:400 invalid model 是模型请求参数未被当前 API 请求正确接受的提示,具体原因必须结合响应体中的 error.message、error.code 和 error.param 判断。

先做这三步:确认模型 ID,再发送最小请求

不要先更换 SDK、重复重试或盲目修改多个参数。按下面顺序排查,通常可以先判断问题是在模型名称、API 地址,还是项目权限。

  1. 列出当前 Key 可见的模型:向当前服务的模型列表接口发送请求。OpenAI 直连时,官方接口路径是 GET /v1/models,响应中的 data[].id 才是可以继续核对的模型标识。OpenAI List models API
  2. 复制准确的 ID:不要把 ChatGPT 界面名称、第三方网关的模型别名、旧教程中的模型名或带有其他平台前缀的字符串直接放进 model。模型 ID 区分大小写和字符格式,示例值必须以当前列表结果为准。
  3. 只保留最小参数:先去掉工具、流式输出、结构化输出、温度和复杂消息,使用当前模型支持的最小文本请求。成功后再逐项加回业务参数。
第一轮排查对照表
检查项应核对什么发现异常时怎么做
model是否来自当前 Key 可见的模型列表复制返回的 id,不要凭记忆填写
Base URL是否与 Key 所属平台匹配直连接口不要把第三方模型名发到 OpenAI 端点
项目与权限Key 所属 Project 是否能访问该模型换用同一项目可见的模型,或查看控制台权限
请求体端点要求的字段是否正确先恢复到最小请求,再逐项增加参数
响应体error.message、error.code、error.param按服务端实际提示归因,不只看 400

用 /v1/models 验证当前 API Key 能看到什么

模型目录会变化,旧文章中的模型名不能自动视为当前可用。官方模型列表接口会返回模型的 id、创建时间、所有者以及可能存在的 shutdown_date 等字段,因此适合用于排查硬编码模型名是否仍然有效。

OpenAI 直连的脱敏检查命令可以写成:curl https://api.openai.com/v1/models -H "Authorization: Bearer $OPENAI_API_KEY"。不要把完整 Key 写进文章、截图、日志或命令历史;如果使用兼容接口,应把域名替换为该服务当前文档提供的 Base URL,并从同一服务获取模型列表。

如果列表请求本身返回 401,先处理 Key 或认证问题;如果返回 403,重点查看项目、组织、区域或访问权限;如果列表成功但目标模型不在 data 中,不要继续猜测模型名,应改用列表中实际可见的模型,或者核对当前 Key 所属项目。

需要注意:invalid model、invalid model ID、model_not_found 和 model_not_allowed 并不是所有平台都采用完全相同的错误分类。OpenAI 官方建议查看错误消息和具体参数;不同兼容网关可能把模型不存在、模型不可用和权限问题映射为不同的 HTTP 状态码。OpenAI API 错误码说明

常见模型名错误:为什么看起来正确仍会失败

Responses API 和 Chat Completions 怎么分别修复

当前新项目可以优先核对 Responses API;Chat Completions 仍然支持,但两者的请求字段和响应读取方式不同。官方迁移文档说明,Responses 使用 /v1/responses、input 和 output_text,Chat Completions 使用 /v1/chat/completions、messages 和 choices[0].message.content。OpenAI Responses API 迁移说明

Responses API 的最小 curl 示例:curl https://api.openai.com/v1/responses -H "Authorization: Bearer $OPENAI_API_KEY" -H "Content-Type: application/json" -d '{"model":"$MODEL_ID","input":"Say hello"}'。这里的 $MODEL_ID 是示例占位符,发送前必须替换为当前模型列表中实际返回的 ID;Shell 单引号下变量不会展开时,请改用安全的 JSON 生成方式或直接填入已核验的模型 ID。

Python SDK 示例:from openai import OpenAI; client = OpenAI(); response = client.responses.create(model="MODEL_ID_FROM_MODELS", input="Say hello"); print(response.output_text)。示例中的模型值不是固定推荐值,需先完成模型列表核验。官方 Python 文档还说明,非成功 HTTP 响应会抛出对应的状态异常,失败请求的请求 ID 应在捕获异常时记录。OpenAI Python API Reference

JavaScript SDK 示例:import OpenAI from "openai"; const client = new OpenAI(); const response = await client.responses.create({ model: "MODEL_ID_FROM_MODELS", input: "Say hello" }); console.log(response.output_text);。如果你的程序仍使用 Chat Completions,请确认代码读取的是 completion.choices[0].message.content,不要把 Responses 的读取方式直接套到旧接口上。

如果最小请求成功,再按顺序恢复系统指令、历史消息、工具、结构化输出和流式参数。某些参数支持情况会随模型而不同,调用失败时应查看对应接口的参数说明,而不是仅仅替换模型名称。OpenAI Chat Completions API Reference

按响应体区分 invalid model、404 和权限问题

错误分支速查
现象优先检查处理方法
400,消息包含 invalid model 或无效参数model、端点、请求体字段和格式用模型列表核对 ID,再发送最小请求
404,提示资源或模型不存在最终 URL、路径、模型标识和服务类型确认没有重复或遗漏 /v1,并核对该接口的模型格式
403,提示禁止或无权限Project、组织、区域和模型访问权限查看控制台权限或改用当前项目可访问的模型
401,认证失败Key、Authorization 头和请求平台确认 Key 与 Base URL 属于同一服务,不要把 Key 写入日志
429,限流或额度问题请求频率、额度和响应头按官方提示处理限流或额度,不要把它误判成模型名错误

上表是排查顺序,不是对所有兼容平台错误码的固定定义。最终归因应以响应状态、响应体、响应头和服务端日志为准。400 参数错误在请求没有修改前通常不应重复重试;先改正模型或请求字段,再重新发送。

仍然失败时,记录哪些信息才方便定位

  1. 记录核验日期:2026 年 11 月 1 日,以及使用的服务、区域和接口类型。
  2. 记录脱敏后的最终 URL、HTTP 方法、模型字符串、端点名称和 SDK 版本;不要记录完整 API Key。
  3. 保存响应状态码、error.message、error.code、error.param、响应头中的请求 ID,以及发生时间和时区。
  4. 保留最小请求体,删除用户隐私、业务数据、Authorization 值和其他密钥。
  5. 将“官方规则”和“经验线索”分开:官方文档明确支持的字段可以直接核对;第三方兼容网关的模型映射、权限规则和错误码含义必须向该服务核实。

如果你使用的是路由或兼容服务,最有效的闭环是:先在该服务控制台复制 Base URL 和模型 ID,再用同一服务的模型列表或模型目录核验,最后发送一个不含业务数据的最小请求。不要把直连接口的模型名、路径和参数组合直接迁移过去。

常见问题

OpenAI API 400 invalid model 最常见的原因是什么?

最常见是 model 值拼写错误、使用了旧模型名、混入其他平台前缀,或把一个服务的模型名发送到了另一个服务的 Base URL。先用当前 Key 调用模型列表,再复制返回的 ID。

应该从哪里确认正确的 OpenAI API 模型名?

优先使用当前 Key 可访问的模型列表接口,读取响应中的 data[].id;同时参考官方模型目录确认模型状态。不要只根据聊天产品名称、旧教程或第三方平台下拉菜单填写。

invalid model 和 model_not_found 是同一个错误吗?

不能直接视为同一个错误。不同接口或兼容网关可能使用不同的错误码和 HTTP 状态,必须结合状态码、error.message、error.code、error.param 以及最终 URL 判断。

为什么 /v1/models 能成功,但调用模型仍返回 400?

可能是调用时使用了列表中不存在的另一个字符串、请求发往了不同 Base URL、模型与端点或参数不兼容,也可能是代码读取了错误的环境变量。请打印脱敏后的最终 URL 和 model,并重建最小请求。

遇到 400 invalid model 要不要自动重试?

如果请求参数没有改变,不建议盲目重试。400 通常需要先修正模型、端点或请求字段;只有确认参数已修复后,才重新发送请求。

第三方 OpenAI 兼容接口也能使用 /v1/models 吗?

是否支持、路径如何填写以及返回字段如何命名,要以该服务的文档为准。不要默认所有兼容接口都完全实现同一模型列表接口;先从对应服务控制台或文档复制 Base URL 和模型 ID。

相关阅读

参考资料

  1. OpenAI API 错误码说明
  2. OpenAI List models API
  3. OpenAI Models
  4. OpenAI 全部模型目录
  5. OpenAI Responses API 迁移说明
  6. OpenAI Chat Completions API Reference
  7. OpenAI Python API Reference