Claude Code base URL 怎么填:ANTHROPIC_BASE_URL 配置与排错
Wokey Team · 2026-09-24
结论先说: Claude Code 的 base URL 用环境变量 ANTHROPIC_BASE_URL 设置,只写网关域名,不要带 /v1。接 Wokey 就是 https://api.wokey.ai,Claude Code 会自己拼上 /v1/messages。密钥放 ANTHROPIC_AUTH_TOKEN(以 Authorization: Bearer 发送)。只设 base URL 不设密钥,Claude Code 仍会用你登录的 claude.ai 账号。
最短配置
export ANTHROPIC_BASE_URL="https://api.wokey.ai"
export ANTHROPIC_AUTH_TOKEN="你的 Wokey API Key"
claude
进入 Claude Code 后运行 /status:Status 页里的 Anthropic base URL 显示 https://api.wokey.ai,Auth token 一行指向 ANTHROPIC_AUTH_TOKEN,就说明请求已经走 Wokey。没有 Anthropic base URL 这一行,说明变量没传进这个会话。
为什么不能带 /v1
Claude Code 把 ANTHROPIC_BASE_URL 当作前缀,请求路径是 $ANTHROPIC_BASE_URL/v1/messages。写成 https://api.wokey.ai/v1,实际请求就变成 /v1/v1/messages,Wokey 会返回:
{"message":"Route POST:/v1/v1/messages not found","error":"Not Found","statusCode":404}
OpenAI 兼容客户端(Cursor、Cherry Studio 之类)习惯写 .../v1,但 Claude Code 走的是 Anthropic 的约定,两者不能混用。末尾也不要加 /v1/messages 或多余的斜杠。
AUTH_TOKEN 还是 API_KEY
| 变量 | 发送方式 | 什么时候用 |
|---|---|---|
ANTHROPIC_AUTH_TOKEN |
Authorization: Bearer <key> |
网关说「bearer token」时用;拿不准就用它 |
ANTHROPIC_API_KEY |
x-api-key: <key> |
网关说「x-api-key」时用 |
Wokey 两种 header 都接受,用哪个都行。区别在 Claude Code 这一侧:ANTHROPIC_AUTH_TOKEN 设置后立即生效;ANTHROPIC_API_KEY 在交互模式下会先弹一次确认,同意后才接管,之前拒绝过的 key 会被静默忽略。
两个变量不要同时设成不同的值。 两个 header 带的 key 不一致时,Wokey 会拒绝请求:
{"error":{"code":"conflicting_api_key_headers","message":"conflicting_api_key_headers","type":"invalid_request_error"}}
两个 header 带同一个 key 没有问题。
只设 base URL 会发生什么
base URL 本身不是凭证。只设 ANTHROPIC_BASE_URL、不设 AUTH_TOKEN 或 API_KEY 时,Claude Code 仍然用你保存的 claude.ai 登录发请求,Wokey 收到的不是 Wokey key,会返回 401。
反过来,设置了网关凭证后,claude.ai 登录会保留但不再使用;取消变量就回到原来的账号。启动时看到以 auth may not work as expected 结尾的警告(旧版本是 Auth conflict: Both a token (SOURCE) and an API key (SOURCE) are set),说明网关凭证和保存的登录同时存在。只想用网关时,在 Claude Code 里运行 /logout 清掉保存的登录。
写进 settings.json,永久生效
export 只对当前终端有效,从 Dock 或开始菜单打开的编辑器读不到。长期使用建议写进 ~/.claude/settings.json 的 env:
{
"env": {
"ANTHROPIC_BASE_URL": "https://api.wokey.ai",
"ANTHROPIC_AUTH_TOKEN": "你的 Wokey API Key"
}
}
- 同一个变量在 shell 和 settings 文件里都设置时,settings 文件的值优先。改了 shell 变量却不生效,先检查这里。
- 只想对某个项目生效,写进该项目的
.claude/settings.local.json,并确认它在 gitignore 里。 - 不要把 key 写进项目的
.claude/settings.json,那个文件会提交到仓库。
指定模型
Wokey 的 Claude 模型 ID 和官方一致,比如 claude-opus-5、claude-sonnet-5、claude-haiku-4-5,可以在会话里用 /model 切换。想固定 Claude Code 内置的 Opus、Sonnet、Haiku 三档分别用哪个模型,在 env 里加:
{
"env": {
"ANTHROPIC_DEFAULT_OPUS_MODEL": "claude-opus-5",
"ANTHROPIC_DEFAULT_SONNET_MODEL": "claude-sonnet-5",
"ANTHROPIC_DEFAULT_HAIKU_MODEL": "claude-haiku-4-5"
}
}
ANTHROPIC_DEFAULT_HAIKU_MODEL 同时决定会话标题等后台任务用哪个模型。
VS Code 扩展和桌面版
VS Code 扩展不读 shell 变量来做登录检查,要写在 VS Code 自己的用户设置里(命令面板运行 Preferences: Open User Settings (JSON)):
{
"claudeCode.environmentVariables": [
{ "name": "ANTHROPIC_BASE_URL", "value": "https://api.wokey.ai" },
{ "name": "ANTHROPIC_AUTH_TOKEN", "value": "你的 Wokey API Key" }
]
}
~/.claude/settings.json 里的值能传到扩展启动的进程,但到不了扩展自己的登录检查,所以扩展一直要求登录时,改用上面这个设置。
Claude 桌面版完全不读 ANTHROPIC_BASE_URL 和 settings.json,要在 Help → Troubleshooting → Enable Developer Mode 之后,从 Developer → Configure Third-Party Inference 里填网关地址。详细步骤见 Claude Desktop 接入文档。
用 curl 先验证
在同一个终端里先绕开 Claude Code 测一次:
curl -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":"claude-sonnet-5","max_tokens":1,"messages":[{"role":"user","content":"."}]}'
- 返回以
{"id":"msg_开头:地址和 key 都没问题,剩下的是 Claude Code 配置。 401且code为invalid_api_key:key 缺失、写错或已删除。404且提示/v1/v1/messages:base URL 多写了/v1。- curl 能通但 Claude Code 还要求登录:Claude Code 自己没拿到凭证,检查变量是不是在启动
claude的同一个终端里设置的,或者写进~/.claude/settings.json。
常见问题
ANTHROPIC_BASE_URL 要不要带 /v1?
不要。Claude Code 会在 base URL 后面拼接 /v1/messages,写成 https://api.wokey.ai/v1 会请求到 /v1/v1/messages 并返回 404。接 Wokey 填 https://api.wokey.ai。
ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 用哪个?
ANTHROPIC_AUTH_TOKEN 以 Authorization: Bearer 发送并立即生效;ANTHROPIC_API_KEY 以 x-api-key 发送,交互模式下要先确认一次。Wokey 两种都接受,推荐 ANTHROPIC_AUTH_TOKEN。不要同时设成不同的值,否则会得到 401 conflicting_api_key_headers。
只设置了 base URL,为什么还在用我的 Claude 订阅?
base URL 不是凭证。没有设置 ANTHROPIC_AUTH_TOKEN 或 ANTHROPIC_API_KEY 时,Claude Code 会继续用保存的 claude.ai 登录。补上网关 key,需要时用 /logout 清掉保存的登录。
改了环境变量为什么没生效?
~/.claude/settings.json 的 env 块优先于 shell 变量。先检查那里有没有旧值,再用 /status 看当前的 base URL 和凭证来源。
VS Code 扩展里怎么设置 base URL?
在 VS Code 用户设置 JSON 里写 claudeCode.environmentVariables,加入 ANTHROPIC_BASE_URL 和 ANTHROPIC_AUTH_TOKEN 两项。扩展的登录检查不读 ~/.claude/settings.json。