401 Invalid API Key 怎么办?Claude Code 无效令牌排查

报错里出现 401invalid_api_keyauthentication_errorIncorrect API key provided,或中文 「无效的令牌 / 无效的 API Key」,先不要急着作废密钥。很大一部分是:密钥本身还能用,但请求头或目的地错了

示意图:ANTHROPIC_API_KEY 走 x-api-key,ANTHROPIC_AUTH_TOKEN 走 Bearer,订阅登录是第三条线

OpenAI 兼容接口:401 先查这三件事

官方错误码文档把 401 写成认证失败:Key 不对、没用对组织,或账号根本不在组织里。

  1. 复制脏了。 控制台复制时多一个空格、换行、隐藏字符。先粘到纯文本编辑器里看一眼再贴。
  2. Key 和地址不是一家。 OpenAI 的 sk-… 打到另一家的 Base URL,或反过来。官方只认自家签的密钥。
  3. 环境变量盖掉了软件里填的值。 终端、IDE、启动器里的 OPENAI_API_KEY 可能是旧的。改完软件设置仍 401,先在同一终端 echo 一下变量。

Claude Code:三条认证,不要混用

Anthropic 官方说明:环境变量里的 API Key 优先于订阅登录。shell 里 export 过 ANTHROPIC_API_KEY,即使 Claude Code 已经 /login 成功,请求仍可能走 Key 计费;Key 无效时,看起来就像「登录成功但每句都 401」。

要用 Pro / Max 订阅:把变量清掉。

unset ANTHROPIC_API_KEY
unset ANTHROPIC_AUTH_TOKEN
unset ANTHROPIC_BASE_URL
claude

在 Claude Code 里跑 /status,看当前到底是订阅还是 Key。

直连官方 vs 自定义网关

官方网关文档写明了变量和请求头的对应关系:

变量 发出的头 用在
ANTHROPIC_API_KEY x-api-key 直连 api.anthropic.com
ANTHROPIC_AUTH_TOKEN Authorization: Bearer 对方要求 Bearer 的网关

官方原话大意:变量猜错了就会 401,换另一个再 export。两个都设时,还可能出现认证冲突提示。

GitHub 上也有真实案例:系统里残留的 ANTHROPIC_AUTH_TOKEN=ollama 会盖掉刚登录成功的 OAuth,报 Invalid bearer token。清掉变量立刻恢复。

中文「无效的令牌」说明什么

Anthropic 官方英文接口很少用这句中文。如果你看到的是中文报错页或中文 JSON,请求多半没有打到 api.anthropic.com,而是打到了某个中文网关。这时应该核对:

  • 当前 ANTHROPIC_BASE_URL 是不是你以为的那个;
  • 网关要 Bearer 还是 x-api-key
  • 用的 Key 是不是这个网关签发的,而不是官方 Console 的 sk-ant-…

网页能打开 claude.ai、和 CLI 能调通,仍然是两回事。

建议顺序

  1. /status 或软件设置页,看实际 Base URL 和认证来源。
  2. 只用一种认证:订阅、官方 Key、自定义网关,三选一。
  3. 自定义地址:按对方文档选 ANTHROPIC_API_KEYANTHROPIC_AUTH_TOKEN,不要两个都留着。
  4. 用 curl 直打同一地址。curl 通、软件不通 → 软件读了另一套环境变量。
  5. 仍然 401 → 到签发该 Key 的控制台看是否撤销、是否绑错组织 / 项目。

参考

赞 (0) 打赏

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏