配好 ANTHROPIC_BASE_URL 后请求返回 404 的原因

更新于 2026-08-21

一句话:路径写重了。客户端会自己补 /v1/messages,你再写一遍就变成了 /v1/messages/v1/messages

现象

环境变量配好、密钥也对,但所有请求返回 404:

404 page not found

或者返回一段 HTML 而不是 JSON。

原因

Anthropic 协议的客户端(包括 Claude Code)在发请求时,会在 ANTHROPIC_BASE_URL 的基础上自动拼接 /v1/messages

所以这样配是错的:

# ✗ 错误:把完整端点路径写进去了
export ANTHROPIC_BASE_URL=https://your-gateway.example.com/v1/messages
# 实际请求地址变成 https://your-gateway.example.com/v1/messages/v1/messages

解决

只写到域名,或最多写到 /v1

# ✓ 正确
export ANTHROPIC_BASE_URL=https://your-gateway.example.com

# ✓ 也可以
export ANTHROPIC_BASE_URL=https://your-gateway.example.com/v1

改完要开新终端,或者手动重新 export——命令行里 export 过的值优先级高于配置文件,只 source ~/.bashrc 是覆盖不掉的。

怎么确认

绕开客户端,用 curl 直接打端点。这样报错信息清楚得多:

curl -sS https://your-gateway.example.com/v1/messages \
  -H "Content-Type: application/json" \
  -H "x-api-key: $ANTHROPIC_AUTH_TOKEN" \
  -H "anthropic-version: 2023-06-01" \
  -d '{"model":"claude-sonnet-5","max_tokens":32,
       "messages":[{"role":"user","content":"只回复两个字:通了"}]}'

返回 JSON 且 content 里有文本,说明这条链路是通的,问题就在客户端配置。

顺带排除另外两种 404

  • 网关本身不提供该路径:有些网关只暴露 /chat/completions 这类路径,不支持 Anthropic 协议的 /v1/messages
  • 多了或少了斜杠https://host//v1 这类写法在部分网关上也会 404

相关

如果不是 404 而是 401 / 403,那是密钥问题,跟路径无关,用上面那条 curl 单独验证密钥即可。

还没把 Claude Code 跑起来?

Code2AI(code2ai.codes)提供官方 Claude Code 命令行的订阅制接入, 配置两个环境变量即可开始使用,支持全系列 Claude 模型,额度在控制台实时可查。

其他排查记录

← 回到故障排查知识库