选型与接入

怎么查一个 API 端点支持哪些 Claude 模型:三条你自己就能跑的验证命令

判断一个 Anthropic 兼容端点到底支持哪些 Claude 模型,不用问客服、不用信宣传页。三条 curl 命令自己跑:/v1/models 列出真实模型清单、故意用错 key 分辨是不是原生协议、最小请求验证模型真的可用。附各命令的正确返回长什么样,以及五种常见报错的对照排查。

更新于 2026-09-02 · 约 2,147 字 · 阅读约 5 分钟

先给结论:判断一个端点支持哪些 Claude 模型,有三条你自己就能跑的命令—— GET /v1/models 列出真实模型清单、故意用一个错的 key 分辨它是原生 Anthropic 协议 还是 OpenAI 套壳、最小请求验证模型真的能调通。三条都不需要问客服,也不需要相信任何 宣传页。宣传页会写错、会过期、会夸大,机器返回的清单不会。

这篇把三条命令、各自的正确返回、以及怎么读懂返回值写清楚,最后给一张五种常见报错的 对照表。

为什么不能只看宣传页

新模型发布后,各家跟进速度差别很大:有的当天就有,有的要等一两周,有的宣传页写了 但实际调不通。宣传页通常是人工维护的,模型下线了也未必会及时删——它反映的是「我们 打算支持什么」,不是「此刻你的 key 能调什么」。

更麻烦的是模型 ID 的写法。同一个模型在不同平台上的 ID 可能带日期后缀、带区域 前缀、带版本号,抄错一个字符就是 404。官方文档里的写法不一定等于你手上这个端点的 写法,尤其是云平台代理的那些,通常会加自己的命名前缀。

所以正确的顺序是:先查清单,再照抄 ID,最后实跑一次。三步都很便宜,加起来不到 五分钟,能省掉后面几小时的排查。

第一条:GET /v1/models 列出真实清单

Anthropic 协议规定了一个只读的 Models 接口,绝大多数兼容端点都实现了它:

curl -s https://你的端点/v1/models \
  -H "x-api-key: 你的key" \
  -H "anthropic-version: 2023-06-01"

部分端点也接受 Authorization: Bearer <key> 这种写法。有些端点甚至不带 key 就能读, 因为模型清单本身不算敏感信息。

返回是一个 JSON 列表,每个模型对象包含三个关键字段:

字段 含义 怎么用
id 模型唯一标识 这就是你要填进配置里的字符串,一个字符都不能改
display_name 人类可读名称 用来确认这是不是你想要的那个模型
created_at 模型发布时间 判断这份清单是不是最新的

实测一个端点的返回(2026-09-02 跑的,未带 key 也能读):

$ curl -s https://flex-api.code2ai.codes/v1/models
{"data":[
  {"type":"model","id":"claude-fable-5-1","display_name":"Claude Fable 5.1"},
  {"type":"model","id":"claude-fable-5",  "display_name":"Claude Fable 5"},
  {"type":"model","id":"claude-opus-5",   "display_name":"Claude Opus 5"},
  {"type":"model","id":"claude-sonnet-5", "display_name":"Claude Sonnet 5"}
]}

怎么读这个返回

  • 列表里有你要的模型 ID → 这个端点跟进了,把 id 原样抄走
  • 列表比宣传页少 → 以列表为准,宣传页过期了
  • 返回 404 或者根本没这个接口 → 这个端点没实现 Models API,后面两条命令更要跑
  • 返回 200 但列表是空的 → 通常是 key 权限问题,不是端点问题

这条命令的价值在于它是自证的:你不需要信任任何人的说法,列表是机器返回的。

第二条:故意用错的 key,分辨协议类型

这条最容易被跳过,但它能提前发现一类很难排查的问题。

有些端点宣称「兼容 Claude Code」,实际是 OpenAI 协议外面加了一层转换。这种在简单 对话上看不出差别,但在长会话、工具调用、流式输出上容易出问题——而这三件事正是 Claude Code 每天都在做的。等你写到一半发现工具调用不稳定,排查成本就高了。

分辨方法是同时请求两条路径,看哪条存在:

# Anthropic 原生路径
curl -s -o /dev/null -w "%{http_code}\n" -X POST https://你的端点/v1/messages \
  -H "content-type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -H "x-api-key: 随便填一个错的" \
  -d '{"model":"claude-fable-5-1","max_tokens":16,"messages":[{"role":"user","content":"hi"}]}'

# OpenAI 路径
curl -s -o /dev/null -w "%{http_code}\n" -X POST https://你的端点/v1/chat/completions

判读表:

/v1/messages /v1/chat/completions 说明
401 404 原生 Anthropic 协议,这是最理想的结果
200 200 两套协议都在,多半是转换层。长会话和工具调用要重点测
404 200 根本不是 Anthropic 协议,Claude Code 直接用不了

401 是好结果,不是坏结果——它说明端点认真校验了 key。真正该警惕的是用错误 key 也返回 200 的端点:那说明鉴权形同虚设。

顺带看一眼错误响应体。标准的 Anthropic 错误长这样:

{"type":"error","error":{"type":"authentication_error","message":"invalid api key"}}

字段结构对得上,说明不是随手糊的转换层。如果返回的是 {"error":{"message":...}} 这种 OpenAI 风格,或者干脆是一段 HTML 错误页,那就要谨慎了。

第三条:最小请求,验证模型真能调

清单里有、协议也对,最后还要确认这个模型在你的 key 权限下真的能调。花几分钱:

curl -s https://你的端点/v1/messages \
  -H "content-type: application/json" \
  -H "anthropic-version: 2023-06-01" \
  -H "x-api-key: $YOUR_KEY" \
  -d '{"model":"从清单里抄的ID","max_tokens":16,
       "messages":[{"role":"user","content":"只回复 OK"}]}'

⚠️ 一定要从第一条命令的返回里抄 ID,不要从文档或别人的博客里抄。这是 404 最 常见的来源,没有之一。

能返回内容,这条路就通了。

清单之外,还有三件事清单答不了

/v1/models 只回答「有没有」,不回答「好不好用」。以下三件事需要另外验:

上下文长度。清单里通常不带上下文窗口信息。想确认,就发一个刻意超长的请求看它 在哪一步报错——正常端点会返回明确的 context_length_exceeded 类错误,而不是超时 或者截断后照常返回。后者更危险,因为你不会察觉。

工具调用。Claude Code 严重依赖 tool use。测法是发一个带 tools 参数的最小请求, 看返回里有没有正常的 tool_use 块。转换层最容易在这里出问题。

流式输出。加 "stream": true,看返回是不是标准的 SSE 事件流 (message_start / content_block_delta / message_stop)。有些端点会先把完整 结果攒好再一次性吐出来,形式上是流式,体验上完全不是。

五种常见报错的对照排查

现象 最可能的原因
/v1/models 通,最小请求 404 模型 ID 抄错,或该模型对你的 key 未开放
/v1/models 通,最小请求 401 key 无效,或鉴权头格式不对(x-api-key 还是 Bearer
两条都 404 URL 拼错,最常见的是漏了 /v1 或者多加了一层 /v1
请求很久没响应然后超时 网络链路问题,不是端点问题,换个网络再试一次
清单里有模型但 display_name 对不上 端点做了模型映射,实际调用的可能不是你以为的模型

最后一行值得单独说:清单里的 iddisplay_name 应该是自洽的。如果一个端点 把 claude-opus-5 映射到别的模型,从返回里通常看不出来——这时候只能靠实际输出质量 判断,或者看它有没有公开说明映射关系。一个可操作的办法是准备三五道有标准答案的题, 在官方渠道和待测渠道各跑一遍对比推理质量。

常见问题

不带 key 能查模型清单吗?

看端点实现。有些端点允许匿名读取清单,因为模型列表不算敏感信息;有些要求带 key。 两种做法都合理。如果不带 key 就能读,那你在花钱之前就能确认它支不支持你要的模型, 对选型很方便。

官方 API 也需要这么查吗?

需要。Anthropic 官方的模型清单同样通过 GET /v1/models 提供,而且更近发布的模型 排在前面。用官方 SDK 的话,Python 是 client.models.list(),Go 是 client.Models.Get(),都会返回同样的 id / display_name / created_at 字段。

清单里有模型,是不是就代表所有功能都能用?

不代表。清单只说明「你的 key 有权限看到这个模型」,不保证工具调用、流式输出、超长 上下文这些能力都正常。所以第三条命令(最小请求)不能省,涉及工具调用的场景还要单独 测一次带 tools 参数的请求。

模型 ID 带日期后缀和不带,有什么区别?

带日期的是固定快照(比如 claude-opus-4-5-20251101),不带的通常是别名,会随厂商 更新指向新版本。生产环境建议用带日期的固定版本,避免模型静默升级导致行为变化; 测试环境用别名更省事,不用跟着改配置。

这些命令在 Windows 上怎么跑?

PowerShell 里的 curlInvoke-WebRequest 的别名,参数不兼容,直接跑会报错。 建议在 Git Bash 或 WSL 里跑;也可以把命令里的 curl 换成 curl.exe,强制调用 真正的 curl。

端点返回的清单和我在控制台看到的不一样,信哪个?

信 API 返回的。控制台页面可能有缓存,也可能展示的是「产品支持的全集」而不是「你这个 账号能调的子集」。API 返回的是当前 key 的实际权限,那才是调用时生效的东西。

多久应该重新查一次清单?

新模型发布后查一次,以及每次配置报 404 的时候查一次。平时不用频繁查——但如果你在 脚本里硬编码了模型 ID,建议加一条启动时的清单校验,模型下线时能第一时间发现, 而不是等线上报错。