AI API 调用报“模型不可用”?先别急着换模型,可能是 /chat/completions、/responses、/messages 用错了

很多人在配置 AI 工具、中转 API、OpenAI 兼容接口的时候,会碰到一个很烦的问题:

model unavailable
unsupported endpoint
invalid request body
not found
schema mismatch

看起来像是模型不能用,或者服务挂了。

但实际排查下来,经常不是模型问题,而是接口端点和请求格式没对上

尤其是下面这三个 endpoint,非常容易被混用:

/v1/chat/completions
/v1/responses
/v1/messages

它们名字都像“聊天接口”,但其实分别对应不同的 API 体系。

如果你把 A 体系的请求体发到 B 体系的 endpoint,就算模型真实存在,也可能报“模型不可用”。

这篇文章不讲太多概念,直接按排错思路讲:什么时候该用哪个端点,以及怎么判断自己填错了。


一句话判断

先给最重要的结论:

OpenAI 兼容工具:用 /v1/chat/completions
OpenAI Responses API:用 /v1/responses
Anthropic / Claude 原生工具:用 /v1/messages

如果你用的是普通 AI 客户端,比如各种聊天 UI、Cursor 类工具、FastGPT、LiteLLM、OpenAI SDK 兼容模式,一般优先考虑:

/v1/chat/completions

如果文档明确写了 Responses API,再考虑:

/v1/responses

如果工具明确是 Claude / Anthropic 原生 SDK,再考虑:

/v1/messages

为什么明明模型存在,却会提示不可用?

因为一次 API 请求不是只有模型名。

它至少包含三部分:

1. 模型名
2. endpoint
3. 请求体 schema

这三个必须匹配。

举个例子:

你选了一个 Claude 模型,但你的工具是 OpenAI-compatible 客户端。这个时候它可能应该走:

/v1/chat/completions

而不是:

/v1/messages

反过来,如果你的工具是 Anthropic 原生 SDK,代码里写的是 Claude Messages API 格式,那你把 endpoint 改成 /v1/chat/completions 也可能失败。

所以不要只看模型名。

更准确的判断方式是:

客户端类型 + endpoint + 请求格式

这三个要一致。


第一类:/v1/chat/completions

这是最常见的 OpenAI 兼容聊天接口。

典型请求格式:

{
  "model": "gpt-5.5",
  "messages": [
    {
      "role": "user",
      "content": "帮我解释一下 API endpoint 的区别"
    }
  ]
}

完整 curl 示例:

curl https://crazyrouter.com/v1/chat/completions \
  -H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "messages": [
      {"role": "user", "content": "帮我解释一下 API endpoint 的区别"}
    ]
  }'

它的特点是:

messages 数组
role 字段
content 字段

适合场景:

  • 工具支持 OpenAI-compatible API;
  • 配置里有 OPENAI_BASE_URL
  • 配置里有 base_url
  • 用 OpenAI SDK 的兼容模式;
  • 用 Chatbox、Cherry Studio、Cursor 类客户端;
  • 用 FastGPT、LiteLLM、各种 Web UI;
  • 通过一个 API 网关调用多个模型。

大多数人接中转站,默认应该先试这个。


第二类:/v1/responses

/v1/responses 是 OpenAI 新版 Responses API。

它不是 /chat/completions 的简单改名,而是一套新的响应结构。

典型请求格式:

{
  "model": "gpt-5.5",
  "input": "解释一下 Responses API 和 Chat Completions 的区别"
}

完整 curl 示例:

curl https://crazyrouter.com/v1/responses \
  -H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-5.5",
    "input": "解释一下 Responses API 和 Chat Completions 的区别"
  }'

它的特点是:

input 字段
response item
tools / reasoning / multimodal 等新版结构

适合场景:

  • 工具文档明确写 OpenAI Responses API;
  • 示例代码里用的是 input
  • 工具明确调用 /v1/responses
  • 需要新版工具调用、多模态、reasoning 输出;
  • 模型和服务端都支持 Responses API。

常见错误是:

{
  "model": "xxx",
  "messages": []
}

直接发到:

/v1/responses

这样就可能报请求体不合法。


第三类:/v1/messages

/v1/messages 是 Anthropic Claude 原生 Messages API 风格。

典型请求格式:

{
  "model": "claude-sonnet-4-6",
  "max_tokens": 1024,
  "system": "You are a helpful assistant.",
  "messages": [
    {
      "role": "user",
      "content": "解释一下 Claude Messages API"
    }
  ]
}

完整 curl 示例:

curl https://crazyrouter.com/v1/messages \
  -H "Authorization: Bearer $CRAZYROUTER_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "claude-sonnet-4-6",
    "max_tokens": 1024,
    "system": "You are a helpful assistant.",
    "messages": [
      {"role": "user", "content": "解释一下 Claude Messages API"}
    ]
  }'

它的特点是:

顶层 system
max_tokens
Anthropic 风格 content block
Claude 原生 schema

适合场景:

  • 使用 Anthropic SDK;
  • 工具文档明确写 Claude Messages API;
  • 工具不是 OpenAI-compatible,而是 Claude-native;
  • 请求体里有顶层 system
  • 需要 Anthropic 原生工具调用或内容块格式。

注意一个重点:

Claude 模型 ≠ 一定要用 /v1/messages

如果你是在 OpenAI 兼容客户端里调用 Claude 模型,可能还是应该用:

/v1/chat/completions

Base URL 不要和 endpoint 混在一起

这个坑比 endpoint 本身还常见。

很多工具让你填的是:

Base URL
OPENAI_BASE_URL
base_url
OpenAI API Base

这种情况一般填:

https://crazyrouter.com/v1

不要填:

https://crazyrouter.com/v1/chat/completions

原因是 SDK 会自己拼 endpoint。

比如你填:

https://crazyrouter.com/v1

SDK 会请求:

https://crazyrouter.com/v1/chat/completions

如果你直接把完整 endpoint 填进去,有些 SDK 会拼成:

https://crazyrouter.com/v1/chat/completions/chat/completions

然后就开始报 404 或 endpoint not found。

判断规则:

字段叫 Base URL:填到 /v1
字段叫 Full Endpoint:按要求填完整路径

常见错误排查表

错误配置 常见报错 正确做法
Base URL 填成 https://crazyrouter.com 404 / route not found 改成 https://crazyrouter.com/v1
Base URL 填成 /v1/chat/completions 路径重复 Base URL 只填到 /v1
Chat 请求体发到 /v1/responses invalid request body 改用 /v1/chat/completions 或改成 input 格式
Claude 原生请求体发到 /v1/chat/completions schema mismatch 改用 /v1/messages 或转换格式
OpenAI SDK 调 /v1/messages 响应解析失败 OpenAI 兼容模式用 /v1/chat/completions
API endpoint 加了 UTM 鉴权/路由异常 UTM 只能加网页链接,不能加 API 地址

Crazyrouter 普通用户应该怎么填?

如果你只是使用普通 OpenAI 兼容客户端,推荐这样填:

API Key: 你的 Crazyrouter API Key
Base URL: https://crazyrouter.com/v1
Model: 从模型列表选择

如果你在国内/内地网络环境下 global 地址不稳定,可以使用:

Base URL: https://cn.crazyrouter.com/v1

注意,API 地址不要加 UTM 参数。

网页链接可以加 UTM,比如:

https://crazyrouter.com/models?utm_source=csdn&utm_medium=article&utm_campaign=api_endpoints_v2

但是 API 地址不要写成:

https://api-endpoint.example.invalid/v1?utm_source=csdn

出问题时按这个顺序排查

1. 先确认模型名

模型名必须完全一致,包括:

  • 大小写;
  • 横线;
  • 版本号;
  • 后缀。

不要自己猜模型名。

2. 再确认客户端类型

看工具文档或配置项。

如果它写的是:

OpenAI Base URL
OPENAI_BASE_URL
OpenAI-compatible

大概率是 OpenAI 兼容模式。

如果它写的是:

Anthropic API Key
Claude Messages API
/v1/messages

大概率是 Claude 原生模式。

3. 确认 endpoint

OpenAI 兼容:/v1/chat/completions
Responses API:/v1/responses
Claude 原生:/v1/messages

4. 确认请求体

Chat Completions:

{
  "model": "xxx",
  "messages": []
}

Responses:

{
  "model": "xxx",
  "input": "xxx"
}

Claude Messages:

{
  "model": "xxx",
  "max_tokens": 1024,
  "system": "xxx",
  "messages": []
}

5. 确认 Base URL

大多数工具里应该填:

https://crazyrouter.com/v1

而不是完整 endpoint。


最后总结

遇到“模型不可用”,不要第一时间就认定是模型挂了。

先检查这三个东西:

模型名
endpoint
请求 schema

最常用的判断方式:

OpenAI 兼容工具 → /v1/chat/completions
OpenAI Responses API → /v1/responses
Claude 原生工具 → /v1/messages

尤其要注意:

Claude 模型不一定走 /v1/messages
OpenAI 兼容客户端不应该乱填完整 endpoint
Base URL 通常只填到 /v1

很多调用失败,看起来像模型不可用,本质上只是端点和请求格式没匹配。

把这几个地方对齐,问题通常就能解决。


参考链接:

https://crazyrouter.com/zh/blog/chat-completions-vs-responses-vs-messages-api-zh?utm_source=csdn&utm_medium=article&utm_campaign=api_endpoints_v2

Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐