Claude Code 报 401 / Invalid API key
配好环境变量、claude 一启动就红字 401,绝大多数不是密钥本身坏了,而是下面三件事之一。按顺序对一遍,一分钟能定位。
一、变量名用错了(最常见)
Claude Code 走第三方地址时读的是 ANTHROPIC_AUTH_TOKEN,不是 ANTHROPIC_API_KEY。
两个变量名长得像,但走中转地址时只有 ANTHROPIC_AUTH_TOKEN 认得出来。填成 ANTHROPIC_API_KEY,认证过不去,返回 401。
正确的写法:
export ANTHROPIC_BASE_URL="https://us-proxy.unipaxtools.com"
export ANTHROPIC_AUTH_TOKEN="你的密钥"如果你之前试过官方直连,环境里很可能还残留着一个 ANTHROPIC_API_KEY。先确认它没在捣乱:
echo $ANTHROPIC_API_KEY
echo $ANTHROPIC_AUTH_TOKEN第一行应该是空的,第二行是你的中转密钥。第一行有值就 unset ANTHROPIC_API_KEY,并去 ~/.zshrc / ~/.bashrc 里把那行删掉——否则下次开终端它又回来了。
二、地址结尾多了一个斜杠
ANTHROPIC_BASE_URL 写成以 / 结尾会拼出错误的请求路径,同样返回 401。
# ✅ 对
export ANTHROPIC_BASE_URL="https://us-proxy.unipaxtools.com"
# ❌ 错:结尾多了斜杠
export ANTHROPIC_BASE_URL="https://us-proxy.unipaxtools.com/"顺带一提,Claude Code 这边不要加 /v1,直接填域名即可。加 /v1 是 Codex / OpenAI 格式那边的规矩,两者不通用——这个坑见 Codex 的 OPENAI_BASE_URL 要不要带 /v1。
三、密钥的模型分组和你调用的模型对不上
在 unipaxtools 创建密钥时要选模型分组,买了哪个套餐就选哪个分组。用 Claude Pro 分组的密钥去调 Claude Max 分组的模型,或者反过来,都会被拒。
去控制台 API 密钥 页看一眼这个密钥的分组,和你实际在用的模型对上号。不确定就删掉重建一个,创建时对着套餐名选分组。
还是不行?按这个顺序查
① 先确认密钥本身是活的。 绕开 Claude Code,直接用 curl 打一次:
curl https://us-proxy.unipaxtools.com/v1/messages \
-H "Content-Type: application/json" \
-H "x-api-key: 你的API密钥" \
-H "anthropic-version: 2023-06-01" \
-d '{"model":"claude-sonnet-5","max_tokens":32,"messages":[{"role":"user","content":"hi"}]}'curl 通、Claude Code 不通 → 问题在环境变量,回头看第一、二条。curl 也不通 → 问题在密钥或分组,看第三条。
② 确认变量真的生效了。 环境变量只对设置之后新开的终端生效。改完 ~/.zshrc 要么 source ~/.zshrc,要么关掉终端重开。VS Code 里的集成终端也要重开。
③ 看有没有真的走到中转。 控制台的使用记录页会列出每一次调用。那里空空如也,说明请求根本没到 unipaxtools,还是本机配置的问题。
不想手工配环境变量
用 CC Switch(开源免费,Windows / macOS / Linux 都有)图形化管理,添加一次之后一键切换,不用记变量名,也就不会写错。注意 unipaxtools 不在它的预设列表里,需要在「添加新供应商」页点左上角的自定义配置手动加一次。
写进配置文件的写法(~/.claude/settings.json)也在教程里:创建 API 密钥 · 一键拿到接入配置。
还没有账号?注册后创建密钥就能用,充值 ¥1 = $1 余额。
注册 unipaxtools
unipaxtools 文档