土土金 Tutujin API › Claude Code

Claude Code 接第三方 API:配置、分组与报错对照

配置只有两行,真正卡住人的是模型名和分组。本页把两者一次讲完,并附官方文档记录的网关侧报错原因。

配置口径核对自 Anthropic 官方 Claude Code 文档(code.claude.com/docs)· 分组与价格采集 2026-08-20

先给结论

配置就两件事:ANTHROPIC_BASE_URL 指到网关地址(不要带 /v1),ANTHROPIC_AUTH_TOKEN 放你的令牌。

真正让人卡住的不是配置,是模型名。在土土金 API 上,claude-opus-4-6 / 4-7 / 4-8claude-sonnet-5claude-fable-5claude-haiku-4-5 以及它们的 -thinking 变体,一共 12 个只存在于 cc 分组;默认分组里没有它们,照抄就是报错。

默认分组里支持 Anthropic 原生协议的只有两个claude-sonnet-4-6claude-haiku-4-5-20251001。下面给完整对照表。

一、两个变量:地址和凭据

export ANTHROPIC_BASE_URL=https://api.tutujin.com
export ANTHROPIC_AUTH_TOKEN=你的令牌

Windows PowerShell:

$env:ANTHROPIC_BASE_URL = "https://api.tutujin.com"
$env:ANTHROPIC_AUTH_TOKEN = "你的令牌"

就这两行。设置完重开一个终端跑 claude,在状态里应该能看到 base URL 与凭据来源。

二、AUTH_TOKEN 还是 API_KEY:区别在 HTTP 头

这是最多教程讲不清的一点。按 Anthropic 官方文档,两个变量的差别不是「哪个更正式」,而是凭据被放进哪个请求头

变量凭据发送位置什么时候用
ANTHROPIC_AUTH_TOKENAuthorization: Bearer <key>网关说「bearer token / Authorization 头」时
ANTHROPIC_API_KEYx-api-key: <key>网关说「API key / x-api-key」时
apiKeyHelper(settings 里的命令)两个头都发凭据需要动态获取 / 会过期时

土土金 API 读的是 Authorization: Bearer(与 OpenAI 协议一致),所以用 ANTHROPIC_AUTH_TOKEN。官方文档的建议也是:不确定就先用 ANTHROPIC_AUTH_TOKEN,如果验证请求返回 401 再换另一个。

另外两条来自官方文档、值得记住的行为:

三、BASE_URL 千万不要带 /v1

Claude Code 会自己在 base URL 后面拼 /v1/messages——官方文档给出的验证命令就是 curl $ANTHROPIC_BASE_URL/v1/messages。所以:

写法结果
https://api.tutujin.com✅ 实际请求 https://api.tutujin.com/v1/messages
https://api.tutujin.com/v1❌ 实际请求 /v1/v1/messages → 404
https://api.tutujin.com/v1/messages❌ 拼成 /v1/messages/v1/messages → 404

和 OpenAI SDK 正好相反:OpenAI SDK 的 base_url 必须/v1,Claude Code 的 ANTHROPIC_BASE_URL 必须不带。同一个人在两边配置时,这是最常见的互相串味点。参见 SDK 迁移页

四、写进 settings.json(持久生效)

环境变量只在当前终端会话有效。要让它在所有地方生效,写进 Claude Code 的 settings 文件的 env 块:

// ~/.claude/settings.json(用户级,对所有项目生效)
{
  "env": {
    "ANTHROPIC_BASE_URL": "https://api.tutujin.com",
    "ANTHROPIC_AUTH_TOKEN": "你的令牌"
  }
}

settings 文件的作用域按官方文档分为四层:用户级 ~/.claude/settings.json、项目级 .claude/settings.json(会进 git,不要把令牌写这里)、本地 .claude/settings.local.json(默认 gitignore)、以及由管理员下发的托管配置。

如果令牌会过期或来自密钥库,用 apiKeyHelper:让它执行一条只输出凭据的命令,Claude Code 默认缓存 5 分钟、遇 401 会重新执行。

五、验证连通:一条 curl 就够

官方文档给的验证方式,换成本站地址后是这样:

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-4-6","max_tokens":1,
       "messages":[{"role":"user","content":"."}]}'
返回含义
{"id":"msg_ 开头、含 content 字段✅ 地址与凭据都对
报「模型未知」之类的错仍然算通过——网关已经鉴权成功才轮到拒模型名,说明 URL 和凭据没问题
401❌ 凭据被拒:换另一个凭据变量再试,或检查令牌是否有效
404❌ BASE_URL 路径写错(多半是带了 /v1
返回 HTML❌ 请求打到了网页而不是 API

六、模型分组可用性表(本页核心)

下表全部取自 2026-08-20 的 /api/pricing。「原生协议」一列指该模型是否声明支持 /v1/messages——Claude Code 走的就是这个端点,所以这一列为「否」的模型,即使在你的分组里也不能给 Claude Code 用。

模型名default 分组原生协议 /v1/messages计费价格
claude-sonnet-4-6✅ 有按次$0.025 / 次 ≈ ¥0.10
claude-haiku-4-5-20251001✅ 有按 token$1 / $5 per 1M(¥4 / ¥20)
claude-sonnet-4-5-20250929✅ 有❌ 否按 token$3 / $15 per 1M(¥12 / ¥60)
claude-3-7-sonnet-20250219✅ 有❌ 否按 token$3 / $15 per 1M
claude-3-5-haiku-20241022✅ 有❌ 否按 token$1 / $5 per 1M
claude-opus-4-1-20250805-thinking✅ 有❌ 否按 token$15 / $75 per 1M
claude-opus-4-6 / 4-8❌ 仅 cc按 token$5 / $25 per 1M(¥20 / ¥100)
claude-opus-4-7❌ 仅 cc按 token$75 / $375 per 1M
claude-sonnet-5❌ 仅 cc按 token$2 / $10 per 1M(¥8 / ¥40)
claude-fable-5❌ 仅 cc按 token$75 / $75 per 1M
claude-haiku-4-5(不带日期)❌ 仅 cc按 token$1 / $5 per 1M
claude-opus-4-6/4-7/4-8-thinkingclaude-haiku-4-5(-20251001)-thinking❌ 仅 cc按 token$75 / $375 per 1M
claude-sonnet-4-6-thinking❌ 仅 cc按次$0.025 / 次 ≈ ¥0.10

两条必须照直说的事实:

注意 claude-sonnet-4-6 在这里是按次计费quota_type=1),与按 token 的 4-5 系列计价逻辑完全不同。孰优孰劣取决于你的上下文长度,选型前请自己到 /api/pricing 核对,本页不做推荐。

七、模型不在 /model 选择器里怎么办

Claude Code 的模型选择器有一份内置列表,网关自有的模型名不在里面。官方提供了网关模型发现:

export CLAUDE_CODE_ENABLE_GATEWAY_MODEL_DISCOVERY=1

开启后 Claude Code 会在启动时向网关查询模型列表,查到的会以 From gateway 标签出现在 /model 里。用 claude --debug 可以在调试日志里看到 [gatewayDiscovery] 的结果(成功会记录缓存了几个模型,404 / 超时也会记录)。

这个开关是否能在本站生效,取决于网关是否实现了对应的模型发现接口,我们没有验证过。发现不生效时,直接用上表里的模型名即可。

八、成本怎么算

不给「月均多少钱」这种编出来的数字,只给单价和算法。以 default 分组、按 token 计费的 claude-haiku-4-5-20251001 为例(输入 $1、输出 $5 每百万 token,cache_ratio = 0.1):

一次「3 万 token 输入 + 3 千 token 输出」的会话:
  输入 30000/1e6 × $1  = $0.030  →  ¥0.12
  输出  3000/1e6 × $5  = $0.015  →  ¥0.06
  合计 $0.045 = 22500 quota      →  ¥0.18

若其中 2.4 万 token 命中提示缓存(×0.1):
  输入 = 6000/1e6×$1 + 24000/1e6×$1×0.1 = $0.0084  →  ¥0.034

把你自己一天的真实 token 用量代进去就是你的成本。控制台「日志」里能看到每次调用扣了多少 quota,直接对账即可。换算原理见计费拆解

九、报错对照表

现象原因怎么修
401,提示 token 无效或无法识别凭据不对,或放在了网关不读的那个头里换用另一个凭据变量(AUTH_TOKENAPI_KEY);确认令牌未删除、余额充足
404ANTHROPIC_BASE_URL 带了 /v1 或写到了具体路径只填 https://api.tutujin.com
提示模型不存在 / 无权限模型不在你的分组(多半是 cc 独占那 12 个)回到第六节的表换模型名
启动告警:同时存在两个凭据来源claude.ai 登录与凭据变量都在退出登录,或接受告警(请求会走变量)
400,报 context_management / Extra inputs are not permitted 等未知字段网关把请求转给了不接受这些字段的上游属网关侧兼容问题,反馈给客服;短期可换模型规避
400,报 thinking / adaptive(如 Input tag 'adaptive' found上游不接受 Claude 4.6 起使用的自适应推理参数官方给的规避是设 CLAUDE_CODE_DISABLE_ADAPTIVE_THINKING=1
400,报上下文超限但措辞是网关自己的网关强制的上下文比模型原生窗口小,自动压缩没被触发/compact 恢复;可设 CLAUDE_CODE_AUTO_COMPACT_WINDOWCLAUDE_CODE_MAX_OUTPUT_TOKENS
返回 HTTP 200 但内容为空或畸形中间的代理返回了 HTML 错误页或登录页检查是否有公司代理 / VPN 劫持

十、三条必须知道的限制

常见问题

「有没有不降智的 Claude 中转?」

这个问题没法用一句承诺回答,能给你的是可核查的东西:每个模型名、所属分组、计费方式、倍率都在公开的 /api/pricing 上,你可以在下单前逐条核对;上表已经把「哪些是默认分组能用的、哪些只在 cc」摊开了。质量本身我们不做承诺——请自己用真实任务对比,这也是选任何中转站都该做的事。

ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 配哪个?

看网关读哪个头:前者走 Authorization: Bearer,后者走 x-api-key土土金 API 用前者。放错头的表现就是 401。

为什么我填 claude-opus-4-6 报错?

它只在 cc 分组,默认分组令牌没权限。只在 cc 的最新一代 Claude 共 12 个(见第六节)。cc 分组怎么开通,公开数据里查不到,请联系客服确认。

用 Anthropic 官方 SDK 要改代码吗?

请求结构不用改,/v1/messages 是真实路由(无效 key 探测返回 401 而非 404)。把 SDK 的 base URL 指到 https://api.tutujin.com、key 换成令牌即可,但模型必须是第六节表里「原生协议 ✅」且在你分组内的那些。

Claude Code 一天大概花多少钱?

我们不给月均估算,只给单价与算法(第八节)。你自己一天的 token 用量代进去,就是你的成本;控制台日志里能看到每次调用的真实扣费。