AnyRouter · Universal AI Model Router

Claude Code 接入 OpenAI 兼容 API:AnyRouter 配置与排错

更新于 2026-11-01 · anyrouter.cfd

简答:可以接入,但不能把 OpenAI 的 /api/v1/chat/completions 地址直接当作 Claude Code 地址。AnyRouter 当前文档将 Claude Code 归到 Anthropic Messages 兼容路径:Base URL 使用 https://anyrouter.cfd/api,由 Claude Code 继续拼接 /v1/messages。最稳妥的顺序是先取得 API Key、从模型目录复制准确模型 ID,再用临时环境变量和最小请求验证。

定义:Claude Code 接入 OpenAI 兼容 API,实际要求网关同时提供 Claude Code 所需的 Anthropic Messages 兼容入口,而不是只有 OpenAI Chat Completions 或 Responses 接口。

先看结论:Claude Code 与 OpenAI 兼容接口怎么对应

本文是站内第三方接入指南,不代表目标服务的官网或官方支持。根据截至 2026-11-01 可核验的 AnyRouter 接入说明,它同时列出了 OpenAI Chat Completions、OpenAI Responses 与 Anthropic Messages 三类路径;但 Claude Code 应按 Anthropic Messages 方式配置,而不是直接填 OpenAI SDK 使用的完整 /api/v1 地址。AnyRouter agents.md

使用场景Base URL最终请求路径示例认证变量建议
OpenAI SDKhttps://anyrouter.cfd/api/v1/chat/completions、/responsesAuthorization: Bearer 或按网关说明配置
Claude Codehttps://anyrouter.cfd/api/v1/messages优先尝试 ANTHROPIC_AUTH_TOKEN
只有 OpenAI Chat Completions 的网关不能直接判断可用缺少 Anthropic Messages 转换时无法直接接入需要兼容层或改用支持 Anthropic 格式的路由

Claude Code 官方的网关接入文档要求配置网关 Base URL 与凭据,并说明 ANTHROPIC_AUTH_TOKEN 会发送为 Bearer Authorization,ANTHROPIC_API_KEY 会发送为 x-api-key。如果网关没有明确说明认证头,官方建议先用 ANTHROPIC_AUTH_TOKEN 验证。Claude Code 网关接入文档

最短三步:先用临时变量完成首次接入

  1. 准备 Key:从你当前使用的服务控制台取得 API Key。AnyRouter 当前接入说明将 Key 变量写作 ANYROUTER_API_KEY,但 Claude Code 读取的是 ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY,因此不要把变量名混用。
  2. 确认模型:先从模型目录或模型列表复制完整模型 ID,不要自行猜测。AnyRouter 文档说明模型 ID 需要使用目录中的准确值;本文不把某个动态模型名写成固定事实。
  3. 验证再启动:先执行最小 Messages 请求,确认状态码、响应结构和文本内容,再运行 claude 并用 /status 检查实际 Base URL 与认证来源。

安全提示:下面的 Key 和模型名都是变量。请先替换为你实际获取的值,不要把真实 Key 提交到 Git 仓库、截图或公开日志中。

macOS、Linux、WSL:Bash/Zsh 示例

export ANTHROPIC_BASE_URL="https://anyrouter.cfd/api"

export ANTHROPIC_AUTH_TOKEN="替换为你的 API Key"

export ANTHROPIC_MODEL="替换为模型目录中的准确 ID"

验证请求应显式使用已经设置的 ANTHROPIC_AUTH_TOKEN,避免出现“前面设置一个变量、后面 curl 使用另一个未定义变量”的复制错误:

curl -sS -w '\nHTTP %{http_code}\n' -X POST "$ANTHROPIC_BASE_URL/v1/messages" -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN" -H "anthropic-version: 2023-06-01" -H "content-type: application/json" -d '{"model":"'"$ANTHROPIC_MODEL"'","max_tokens":1,"messages":[{"role":"user","content":"."}]}'

Claude Code 官方给出的最小验证思路也是向 $ANTHROPIC_BASE_URL/v1/messages 发送一个极短请求;如果响应包含消息 ID 和 content 字段,说明地址和凭据基本可用。模型名错误但已返回模型相关错误,也能说明 URL 与认证已经走通。官方网关验证请求说明

Windows PowerShell 示例

$env:ANTHROPIC_BASE_URL = "https://anyrouter.cfd/api"

$env:ANTHROPIC_AUTH_TOKEN = "替换为你的 API Key"

$env:ANTHROPIC_MODEL = "替换为模型目录中的准确 ID"

Invoke-RestMethod -Method Post -Uri "$env:ANTHROPIC_BASE_URL/v1/messages" -Headers @{ "Authorization" = "Bearer $env:ANTHROPIC_AUTH_TOKEN"; "anthropic-version" = "2023-06-01" } -ContentType "application/json" -Body ('{"model":"' + $env:ANTHROPIC_MODEL + '","max_tokens":1,"messages":[{"role":"user","content":"."}]}')

PowerShell 环境变量只对当前 PowerShell 会话及其启动的进程生效。若从桌面图标启动编辑器,编辑器不一定继承当前终端变量;首次验证建议直接在设置变量的同一个终端中运行 claude。Claude Code 环境变量配置说明

持久化配置:settings.json 怎么写才不容易泄露

临时环境变量验证成功后,再考虑持久化。Claude Code 官方文档区分了用户级、项目共享级和项目本地级设置:~/.claude/settings.json 作用于当前机器上的所有项目;项目级 .claude/settings.json 可能被提交并共享;.claude/settings.local.json 只适用于当前项目,适合个人测试,但手动创建时仍应加入 .gitignore。Claude Code settings 文件与优先级

推荐的个人全局配置:

{"env":{"ANTHROPIC_BASE_URL":"https://anyrouter.cfd/api","ANTHROPIC_AUTH_TOKEN":"替换为你的 API Key","ANTHROPIC_MODEL":"替换为模型目录中的准确 ID"}}

如果你不希望把固定 Key 明文放进设置文件,可以只在 settings.json 中保存 Base URL,把 Key 放在 shell 环境变量或凭据管理工具中。Claude Code 官方也支持使用 apiKeyHelper 从脚本或密钥库动态取得凭据,但脚本输出必须只包含凭据本身,不能混入日志或提示文字。Claude Code settings reference

不要把真实 Key 写入项目共享的 .claude/settings.json,也不要在命令中使用会完整回显凭据的调试写法。若已经泄露,应立即在服务控制台撤销并重新生成。

启动与成功判定:不要只看 Claude Code 是否打开

  1. 确认安装:运行 claude --version。官方文档说明,正常安装会输出版本号;如需查看安装和配置诊断,可运行 claude doctor。Claude Code 安装与诊断文档
  2. 从同一终端启动:运行 claude,发送一个短问题,例如“只回复 OK”。
  3. 检查状态:在 Claude Code 中运行 /status,确认出现 Anthropic base URL,并确认认证来源显示为 ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY,而不是仍在使用保存的账号登录。
  4. 检查实际输出:成功不应只看进程没有退出,还要同时满足状态码正常、响应包含消息字段、返回实际文本、Claude Code 会话显示回答。
成功判定应看到的现象没有看到时先查什么
状态码最小请求返回成功状态查看完整响应体,不要只看 curl 是否结束
响应字段出现消息 ID 与 content 等字段确认请求路径是否为 /v1/messages
实际文本返回可读的短文本确认模型 ID 和权限,而不是先改一堆 Header
客户端显示/status 显示网关地址和对应凭据变量确认 Claude Code 是否从同一终端继承环境变量

路径与协议排错:按凭据、URL、模型、权限顺序检查

401:先看响应体和认证头。ANTHROPIC_AUTH_TOKEN 对应 Authorization: Bearer,ANTHROPIC_API_KEY 对应 x-api-key。如果不确定网关要求哪一种,按官方建议先用 Bearer 方式;若返回 401,再切换到 API Key 变量,并重新导出变量。不要把 401 固定解释成“Key 一定过期”,因为也可能是认证头不匹配。认证变量与 Header 对照

404:优先核对最终 URL。Claude Code 的变量应设为 https://anyrouter.cfd/api,验证请求再拼接 /v1/messages;不要把已经带有 /api/v1 的 OpenAI SDK Base URL 再交给 Claude Code,避免路径变成重复或错误形式。若网关只提供 /chat/completions 或 /responses,而没有 Anthropic Messages 入口,则不是简单改模型名能解决的问题,需要使用协议转换层或明确支持 Claude Code 的路由。

400:查看响应体中的字段位置。常见方向包括请求体协议不符合 Messages 形状、模型不接受当前字段、模型 ID 拼写错误或网关没有正确转发 Claude Code 的请求。不要仅凭状态码猜原因,先保留响应体和请求路径,再逐项缩减到模型、max_tokens 与一条 user message。

403:核对 Key 的账户权限、模型权限、区域限制和网关策略。403 不能统一归因于余额不足;只有当响应体明确给出余额、权限或策略信息时,才能按对应分支处理。

429:查看响应头中的限流提示和响应体,区分网关限速、账号额度、模型上游限流或并发限制。先降低并发、缩短请求、等待窗口恢复,再确认是否需要更换有权限的模型;不要把 429 当作 Base URL 错误。

启动后仍弹登录:运行 /status 看是否有 Base URL 和认证变量。如果只有保存的账号登录,说明环境变量没有进入当前会话,或变量名称、作用域不正确。Claude Code 官方说明,网关凭据变量会优先于保存的登录凭据,但具体变量仍必须在启动进程可见。Claude Code 认证优先级

流式中断或工具调用失败:先用最小请求确认基础 Messages 调用,再逐步恢复工具、长上下文和流式请求。网关需要转发 Claude Code 使用的请求字段、Header 和流式事件;如果网关只做简单的 OpenAI Chat Completions 转换,基础文本可能成功,但工具调用或其他高级能力仍可能不兼容。Anthropic 明确提醒,第三方网关需要跟随 Claude Code 的能力变化进行维护。Claude Code 对第三方网关的兼容性说明

模型名、费用与安全:哪些值必须以当前页面为准

本文不固定写入某个 AnyRouter 模型名、价格、额度、可用区域或限速数字。AnyRouter 当前接入说明要求从模型目录复制准确 ID,并将模型列表作为动态信息处理;因此实际使用前,应以当前控制台、模型目录和响应体为准。AnyRouter 当前接入说明

OpenAI 兼容接口与 Claude Code 的最终对照

问题正确判断
能否把 OpenAI 的 /api/v1 直接填给 Claude Code?不能直接假设。Claude Code 应使用 Anthropic Messages 兼容入口;AnyRouter 文档给出的 Claude Code Base URL 是 /api。
为什么验证请求是 /v1/messages?Claude Code 的网关文档以 ANTHROPIC_BASE_URL/v1/messages 为验证路径,AnyRouter 文档也说明 Claude Code 会使用 Messages 路径。
应该用哪个认证变量?网关要求 Bearer 就用 ANTHROPIC_AUTH_TOKEN;要求 x-api-key 就用 ANTHROPIC_API_KEY。不确定时先按 Bearer 方式验证。
模型名是否可以写一个常见 Claude 名称?不建议。复制当前模型目录中的准确 ID;未核实的模型名不要写成可直接使用的固定值。
只返回 200 就算接入完成吗?还要确认响应字段、实际文本、Claude Code 的 /status 路由和认证来源。

常见问题

Claude Code 接入 AnyRouter 时,Base URL 应该填 /api 还是 /api/v1?

按 AnyRouter 当前接入说明,Claude Code 使用 https://anyrouter.cfd/api,随后由 Claude Code 或兼容客户端拼接 /v1/messages。OpenAI SDK 使用的 https://anyrouter.cfd/api/v1 不应直接复制到 Claude Code。

ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 应该选哪个?

如果网关要求 Authorization Bearer,使用 ANTHROPIC_AUTH_TOKEN;如果要求 x-api-key,使用 ANTHROPIC_API_KEY。两者不要在没有理解优先级的情况下同时设置,先看网关文档和最小请求的响应。

为什么 Claude Code 已经启动,但请求仍然失败?

运行 /status 检查 Anthropic base URL 和认证来源,再查看最小请求的响应体。Claude Code 能打开只说明本地程序启动,不代表网关地址、Key、模型权限和协议已经全部正确。

模型名可以直接写 claude-sonnet 或其他常见别名吗?

不能保证。AnyRouter 文档要求从模型目录复制准确 ID;如果目录中的 ID 与 Claude Code 内置别名不同,应优先使用网关实际提供的模型 ID。

settings.json 里能不能保存 API Key?

可以配置,但不建议把真实 Key 放入会提交到仓库的项目共享 settings.json。个人使用可放在用户级配置或环境变量中,团队和自动化场景应使用密钥管理工具,并避免在日志中回显完整凭据。

OpenAI Chat Completions 能否自动变成 Claude Code 所需的 Messages 请求?

不能默认认为可以。只有当网关或兼容层明确提供 Anthropic Messages 转换和 Claude Code 所需能力时,才适合直接接入;如果只有 /chat/completions 或 /responses,应先核实是否存在协议转换。

相关阅读

参考资料

  1. AnyRouter for AI coding agents:连接方式、端点与模型目录说明
  2. Claude Code:Settings files and precedence(code.claude.com)
  3. Claude Code:All settings reference(code.claude.com)
  4. Claude Code:安装、验证与 claude doctor(code.claude.com)