返回指南
故障排查·2026年8月28日·阅读约 6 分钟

Claude Code “API Error: 401 authentication_error” 使用自定义 Base URL——所有原因

这里的 401 与凭据或 Base URL 有关,绝不会是模型问题——模型问题会返回 404,并在消息中指出模型名称。只需一次 curl,就能解决大多数此类问题。

最后审核于 。

这里的 401 与凭据或 Base URL 有关,绝不会是模型问题——模型问题会返回 404,并在消息中指出模型名称。只需一次 curl,就能解决大多数此类问题。

错误

terminal
API Error: 401 {"type":"error","error":{"type":"authentication_error","message":"Missing or invalid API key"}}

原因和解决方法一览

原因解决方法
将 ANTHROPIC_API_KEY 设置在本应使用 ANTHROPIC_AUTH_TOKEN 的位置第三方 Base URL 使用 AUTH_TOKEN;API_KEY 会触发一次性批准提示。
Base URL 携带 /v1 路径只设置源站——Claude Code 会自行追加 /v1/messages。
密钥已撤销,或账户已被暂停两者都会返回 401,绝不会返回 403。生成新密钥并检查账户。
Messages 端点不提供的模型这会返回带有模型名称的 404,而不是 401——因此需要采用不同的修复方式。

打印这三个变量,并检查 Base URL 不含路径

最常见的原因就在这里。Base URL 必须是源站——不能有 /v1,也不能有末尾路径——因为客户端会自行追加端点。以 /v1 结尾的 Base URL 会导致请求发送到 /v1/v1/messages。

check-env.sh
env | grep -E '^ANTHROPIC_(BASE_URL|AUTH_TOKEN|API_KEY|MODEL)='

# Right: https://api.kunavo.com
# Wrong: https://api.kunavo.com/v1

直接调用端点,测试两种方式

Kunavo 的 /v1/messages 接受 x-api-key 或 Authorization: Bearer 形式的凭据,因此 Claude Code 前面不需要插件或代理。如果 curl 成功而 CLI 不成功,问题就在你的 shell 环境中,而不在服务器上。

probe.sh
curl -s https://api.kunavo.com/v1/messages   -H "x-api-key: $ANTHROPIC_AUTH_TOKEN"   -H "anthropic-version: 2023-06-01"   -H "content-type: application/json"   -d '{"model":"claude-sonnet-5","max_tokens":8,
       "messages":[{"role":"user","content":"hi"}]}'

# Same call, other header style — both are accepted:
#   -H "Authorization: Bearer $ANTHROPIC_AUTH_TOKEN"

取消设置你不用的变量

如果同时设置了 ANTHROPIC_API_KEY 和 ANTHROPIC_AUTH_TOKEN,错误的变量可能会生效。取消设置 ANTHROPIC_API_KEY,启动新的 shell,然后重试——shell 配置文件中的过期导出会持续存在,使其他修复都失效。

如果状态码是 404,就不要继续排查密钥

如果 404 错误消息中包含模型名称,说明凭据已被接受,但模型字符串未被接受。请改正 ANTHROPIC_MODEL;密钥本身没有问题。在全新设置中,通常原因是没有固定模型:Claude Code 随后会发送其内置默认模型,即最新的 Opus,而 Kunavo 可能尚未提供该模型;并且 /model sonnet 会请求 Sonnet 5.5,而 Kunavo 不提供该模型——请将 ANTHROPIC_MODEL、ANTHROPIC_DEFAULT_OPUS_MODEL 和 ANTHROPIC_DEFAULT_SONNET_MODEL 设置为 GET /v1/models 返回的 ID。

如果你通过 Kunavo 调用

Kunavo 返回 401 时,原因可缩小为五种:Authorization: Bearer 或 x-api-key 中没有收到密钥;密钥不带 sk-kn- 前缀;这是一个 Kunavo 从未签发过的 sk-kn- 密钥(拼写错误或粘贴时被截断);密钥已被撤销;或账户已被暂停。它们都不会返回 403,因此仅凭状态码就能判断所属类别——而有效密钥指向 Messages 端点不提供的模型时,会返回在消息中指出模型名称的 404,而不是 401。这就是完整的诊断树。

常见问题

为什么我的密钥在 curl 中有效,但在 Claude Code 中无效?

几乎总是因为 shell 配置文件中设置了第二个变量,或 Base URL 带有路径。端点接受两种请求头形式,因此区别不在请求头。

ANTHROPIC_AUTH_TOKEN 还是 ANTHROPIC_API_KEY?

第三方 Base URL 使用 AUTH_TOKEN——它会立即生效。API_KEY 会先触发一次性批准提示,这常常被误认为是失败。

Claude 订阅是否涵盖自定义 Base URL?

不涵盖。订阅只向供应商自己的端点进行身份验证;将 CLI 指向其他位置后,使用的是该端点的凭据,并由该端点计费。

相关指南

更多错误语义请参阅 错误参考;通过 注册 和 身份验证指南 获取密钥只需一分钟。