博客

Anthropic API 报错「Your credit balance is too low」:原因和解决办法

一句话答案

Your credit balance is too low to access the Anthropic API 的意思是:你的 API Key 所在的 Claude Console 组织,预付额度(credits)用完了。额度补上之前,所有请求都会被 API 以 HTTP 400 拒绝。Claude Code 用 API Key 运行时,同一个问题显示为 Credit balance is too low。

在 Anthropic 那边解决:让有 Admin 或 Billing 角色的人在 Claude Console 的 Settings > Billing 里买额度,再打开自动充值(auto-reload),以后就不会突然断掉。如果你开的是 Pro 或 Max 订阅,却在 Claude Code 里看到这条报错,多半是环境里还留着一个 ANTHROPIC_API_KEY,Claude Code 用了它,没走你的订阅。

如果是 Console 绑卡付不了款、额度充不进去,可以改用 TeamoRouter 调用同样的 Claude 模型:走 Anthropic 原生协议,地址 https://api.teamorouter.com,支持支付宝、银行卡充值,按量付费,最低充 $5,没有订阅。

报错长什么样

直接调 API(SDK、curl 或基于它们的工具)时,返回的是 400,错误类型是 invalid_request_error。下面是一个公开 GitHub issue 里贴出的真实返回,request ID 做了截断:

json
{"type":"error","error":{"type":"invalid_request_error","message":"Your credit balance is too low to access the Anthropic API. Please go to Plans & Billing to upgrade or purchase credits."},"request_id":"req_011C..."}

Claude Code 里显示的是短版:

text
Credit balance is too low

注意状态码是 400,不是 402。Anthropic 的 API 错误说明 里,402 billing_error 指的是付款信息有问题;额度用完返回的却是 invalid_request_error。所以退避重试没用,额度补上之前会一直失败。报错里的「Plans & Billing」是旧页面名,现在的 Console 里对应 Settings > Billing。

为什么会出现

Console 账号的 API 用量走预付额度。Anthropic 帮助中心的 How do I pay for my Claude API usage? 写明:额度用完后,就不能再调用 API,也不能用 playground,直到你再买额度。Claude Code 用 Console 的 API Key 运行时,扣的也是这份额度。

常见的几种归零方式:

  • 余额用完了。 没开自动充值,没人补。
  • 额度过期了。 买的额度从购买日起一年后过期,过期记录在 Billing 页的发票历史里。
  • Max / Team 套餐送的月度 API 额度用完了。 这部分额度优先于你自己买的额度扣,不能结转。关联的组织里没有自购额度、也没开自动充值的话,API 请求会停到下个月发放。另外它本来就不覆盖交互式的 Claude Code(见 Monthly API credits for Max and Team plans)。
  • Key 属于另一个组织。 额度是按组织算的。你在好几个组织里的话,用没充值那个组织建的 Key,就会报这个错,哪怕另一个组织里还有余额。
  • Claude Code 用错了凭证。 Claude Code 的 错误说明 写到:本想用订阅,Claude Code 却拿 Console 的 API Key 发了请求,也会出现这条报错。

在 Anthropic 那边怎么修

  1. 买额度。 用 Admin 或 Billing 角色登录 Claude Console,进 Settings > Billing,点 Buy credits,输入金额并确认。Anthropic 说买到的额度立即可用,余额就显示在同一页。
  2. 打开自动充值。 在 Credit balance 区域点 Set up auto-reload,填「余额低于多少时触发购买」和「充回到多少」。如果当前余额已经低于触发线,按钮会变成「Turn on and purchase」,点了会立刻扣款。
  3. 确认 Key 在哪个组织。 打开刚充值那个组织的 API Keys 页面,看你的 Key 在不在里面;不在就在这个组织里重新建一个。
  4. 在 Claude Code 里看当前用的是哪个凭证。 运行 /status,看 API key 那一行。如果你本来想用 Pro、Max、Team 或 Enterprise 订阅,就在终端里 unset ANTHROPIC_API_KEY,再把它从 shell 配置文件和 ~/.claude/settings.json 的 env 块里删掉,重启 claude 后运行 /login。非交互模式(claude -p)下,只要设置了 ANTHROPIC_API_KEY 就一定会用它,所以常见「交互能用、脚本报错」。
  5. 有余额还是 400,查支出上限。 用量达到你自己给组织或 workspace 设的支出上限(spend limit)时,API 也会返回 400。看清报错文字,再去 Console 里检查 workspace 的上限。

排查表

看到的现象 可能原因 怎么办
400 invalid_request_error,提示 credit balance is too low 组织余额为零 在 Settings > Billing 买额度,打开自动充值
已经买了额度,还是报错 Key 属于另一个组织 在充了值的组织里新建 Key
开着 Pro/Max,Claude Code 提示 Credit balance is too low 你批准过的 ANTHROPIC_API_KEY 顶替了订阅 /status 查看,unset 这个 Key,再 /login
交互模式正常,claude -p 或 CI 里报错 -p 模式下只要有 ANTHROPIC_API_KEY 就会用 从环境变量和 settings 的 env 块里删掉
Max/Team 套餐,上周 API 还能用 月度 API 额度用完,或周期结束已过期 买额度,或等下个月发放
页面上没有 Buy credits 按钮 你的角色不是 Admin 或 Billing 找管理员充值或改角色
买额度时银行卡被拒 发卡行规则、卡种或发卡国家 看下一节

额度充不进去怎么办

上面这些都有个前提:Console 能扣到你的钱。很多时候扣不到:

  • 银行卡被拒。 在 Console 自助买额度,扣的是绑定的银行卡。发卡国家、账单地址、银行对境外线上支付的限制、卡种,任何一项都可能导致被拒。国内发行的卡(包括带 Visa/Mastercard 标的双币卡)常在这一步失败,原因见 Claude 支付失败?没有海外银行卡的解决方案。
  • 付款权限不在你手上。 只有 Admin 和 Billing 角色能买额度、改付款方式。公司账号的话,可能要等别人审批。
  • 需要月结发票。 Anthropic 只给通过销售团队开通了月结的组织按月开票。

改用 TeamoRouter 调用 Claude

TeamoRouter 是一个 API 网关,一个 Key 可以调 Claude、GPT、Gemini、DeepSeek 等模型。Claude 走 Anthropic 原生协议(/v1/messages),所以 Claude Code 和 Anthropic SDK 只要换 Base URL 和 Key。不需要 Anthropic 账号,也不需要 Console 额度。

  1. 在 TeamoRouter 控制台 创建 API Key,Key 以 sk-teamo- 开头。
  2. 充值。 支持支付宝、银行卡充值,按量付费,最低 $5。
  3. 把工具指向 https://api.teamorouter.com。 走 Anthropic 协议时,Base URL 后面不要加 /v1。

Claude Code(macOS / Linux):

bash
export ANTHROPIC_BASE_URL=https://api.teamorouter.com
export ANTHROPIC_AUTH_TOKEN="你的 TeamoRouter API Key"
claude

Windows 用 setx 设置这两个变量,然后重新打开终端。shell 配置文件里如果还 export 着旧的 Anthropic Key(ANTHROPIC_API_KEY),把它删掉,只留一个凭证。模型设置和 Windows 命令见 安装与配置 Claude Code。

Anthropic Python SDK:

python
from anthropic import Anthropic

client = Anthropic(
    api_key="sk-teamo-...",
    base_url="https://api.teamorouter.com",
)

resp = client.messages.create(
    model="claude-opus-5-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Hello"}],
)
print(resp.content[0].text)

请求格式和 Anthropic 官方一样,其余代码不用改。能用哪些模型 ID,调 GET /v1/models 查。完整说明见 API 接入文档。

在 TeamoRouter 上遇到余额报错

TeamoRouter 自己的余额报错长得不一样:走 Anthropic 协议时,余额不够这次请求会返回 402 insufficient_balance。长上下文请求会先按可能的最大花费预扣,所以余额只剩几美元时也可能遇到。在控制台充值后重试即可,扣费规则见 计费问题。

常见问题

这个报错是我代码写错了吗? 不是。请求已经到了 Anthropic,是因为组织没有额度才被拒。换 SDK、换模型、改 prompt 都没用。

买完额度多久能用? Anthropic 说买到的额度立即可用。买完还报错,多半是 Key 属于另一个组织,或者 Claude Code 实际用的凭证和你以为的不一样。

Claude Pro 或 Max 订阅送 API 额度吗? Pro 不送。Max 和 Team 套餐每月给一个关联的 Console 组织发 API 额度,但这部分额度不能用于交互式 Claude Code,也不能结转。

现有的 Anthropic SDK 代码能直接接 TeamoRouter 吗? 能。把 Base URL 改成 https://api.teamorouter.com,Key 换成 TeamoRouter 的 Key,请求和返回格式都不变。

要订阅吗? 不用。按 token 计费,最低充 $5。

延伸阅读

准备好接入了吗?登录控制台 · 购买额度 · 创建 API Key,三步即可开始。