报错排查 · 核对于 2026-11-11

Claude Code 报错速查

Claude Code 的 API Error 后面是状态码和服务器的原话。下表按状态码列出请求发到 RelaySwitch 网关时每一种报错的错误码、原因和处理办法,都取自网关的实际行为。

01先读懂一条报错

Claude Code 的报错长这样:API Error: 402 … (insufficient_balance)。三样东西有用:状态码(402)、括号里的错误码、请求 id。状态码告诉你方向,错误码告诉你具体是哪一条规则,请求 id 用来查那一次调用。

本页的表只适用于请求发到本站的情况。先在会话里运行 /status,确认 Anthropic base URL 一行是 https://api.relayswitch.io/v1。没有这一行,请求走的是官方接口,报错含义以 Claude Code 官方的报错参考 为准。

02按状态码查

状态与错误码含义处理
400invalid_request请求本身有问题:正文不是 JSON 对象、没写 model、同时带了两个不同的密钥,或者把密钥写在了 URL 里。最常见的是 ANTHROPIC_AUTH_TOKEN 和 ANTHROPIC_API_KEY 同时设置且值不同,删掉一个。
400upstream_invalid_request请求格式没问题,但模型不接受其中的参数。报文里有具体原因。多见于换了模型之后,旧会话里的思考参数或工具定义新模型不认,开一个新会话。
401invalid_api_key没带密钥、密钥不对,或者密钥已被吊销。报文分别是 No API key was sent、The API key is not valid、The API key has been revoked。核对密钥有没有复制完整(以 sk-relay- 开头);在 /status 里确认 Auth token 一行存在。
402insufficient_balance预付余额不够支付这次请求。充值后立即恢复,不用改任何配置。
402key_budget_exhausted、daily / weekly / monthly_limit_reached账户还有余额,但这把密钥自己的预算或周期消费上限用完了。在控制台调高这把密钥的预算或上限,或者等下一个周期(UTC 日、周一、自然月)。
402spend_cap_reached新账户在第一笔付款结算完成之前,累计消费有一个上限。报文里写了上限金额;付款结算后解除。
403scope_denied、ip_not_allowed、admin_key、account_frozen密钥有效,但密钥上的限制不允许这次请求。Claude Code 报错 403
404model_not_found模型 id 不在目录里。报文是 No such model: <id>。id 要和模型页上的完全一致,不是显示名;用下面的 curl 列出密钥能调用的全部 id。
413invalid_request请求正文超过 10 MB。多半是贴进了大图或大文件,压缩后再发。
429rate_limited这把密钥的每分钟请求数、每分钟 tokens 或并发数到了上限。响应头 retry-after 给出等待秒数。默认每把密钥每分钟 600 次请求,可以在密钥上改;新账户头 24 小时按每分钟 60 次计。
429upstream_rate_limited这个模型的线路此刻繁忙,而且没有别的线路可换。稍后重试,或者用 /model 换一个模型。
429session_cap、loop_detected密钥上设了会话上限;或者密钥开了循环保护,同一个会话在 10 分钟内把同一个工具调用或同一个请求发了 5 次以上。报文里有恢复时间。loop_detected 通常说明代理卡在了重复动作里,先看它在做什么。
502upstream_error模型的线路出错,或者回答中途断了,没有任何内容返回给你。带 retry-after,等这么久再试。Claude Code 会自己重试。
503upstream_unavailable这个模型此刻没有线路在应答。Anthropic 格式下错误类型是 overloaded_error。retry-after 为 30 秒。持续出现时看状态页,或者换模型。

以上各项都不扣费:请求要么没有到达模型,要么没有内容返回。

500 很少见,报文是 internal_error,直接重试即可。表里没有的 4xx 报文,把请求 id 发给我们。

03529 和过载

529 Overloaded 是 Anthropic 官方接口的状态码,含义是接口整体过载,和你的用量无关。按 官方的错误说明,它在全体用户流量很高时出现。

本站网关不返回 529。一个模型配有多条线路,某一条返回过载、5xx 或 429 时,请求自动转到下一条,价格不变,你看不到这次切换。只有全部线路都不应答,才返回 503 upstream_unavailable,并带 retry-after: 30。各模型线路此刻的状态在 状态页。

04Claude Code 自己会重试什么

按 Claude Code 的报错参考(读取于 2026-11-11):暂时性的失败它最多自动重试 10 次,间隔逐次拉长,全部失败才把报错显示出来。会重试的有服务器错误、过载、还没开始输出就超时、连接中断,以及临时性的 429。401 和 403 不重试,网关因为消费上限返回的 429 也不重试。

所以 5 开头的报错一闪而过可以不管;反复出现的 4 开头报错,重试没有意义,要改配置。

05没有状态码的报错

Unable to connect to API、Connection refused、Request timed out 这一类没有状态码,说明请求没有得到任何服务器的回答,问题在本机到服务器之间。用下面的命令在同一个终端里直接测:

bash
1# 1. 密钥能调用哪些模型(401 = 密钥问题,200 = 密钥没问题)
2curl -i https://api.relayswitch.io/v1/models \
3 -H "Authorization: Bearer sk-relay-..."
4
5# 2. 按 Claude Code 的格式发一条最小请求
6curl -i https://api.relayswitch.io/v1/messages \
7 -H "Authorization: Bearer sk-relay-..." \
8 -H "anthropic-version: 2023-06-01" \
9 -H "content-type: application/json" \
10 -d '{"model": "claude-haiku-5-5", "max_tokens": 16, "messages": [{"role": "user", "content": "回复 ok"}]}'

curl 能通而 Claude Code 不通,是变量没有传进 Claude Code 的进程;curl 也不通,是本机的网络、代理或 DNS 的问题,这部分本站无法代为解决。响应慢导致的超时,可以把环境变量 API_TIMEOUT_MS 调大。

常见问题

Claude Code 报错 API Error 怎么解决?
API Error 后面跟着状态码和服务器的原话。先看状态码定方向:4 开头是这次请求或这把密钥的问题,改了才会好;5 开头和大部分 429 是暂时的,Claude Code 会自己重试。再看报文末尾括号里的错误码,对照本页的表。
报错的请求会扣费吗?
不会。401、402、403、404 在请求到达模型之前就返回了;429、502、503 没有内容返回给你,同样不扣费。只有成功返回的请求按实际 tokens 计费,每一条都有回执。
Claude Code 报 529 Overloaded 是中转站的问题吗?
529 是 Anthropic 官方接口表示过载的状态码。本站网关自己不返回 529:某条线路过载时请求会自动换到同一模型的下一条线路,全部线路都不应答时返回 503。所以在本站密钥上看到的过载是 503 upstream_unavailable。
Claude Code 报 400 怎么办?
看报文。提到 more than one API key,是两个密钥变量同时设了;提到 names no model 或 not a JSON object,是请求被别的工具改坏了;其他情况多半是模型不接受某个参数,开一个新会话或换回原来的模型。
一直转圈没有报错,是怎么回事?
多半是 Claude Code 正在重试。按它的文档,暂时性的失败最多重试 10 次,间隔逐次拉长,全部失败后才显示报错。等它结束,或者按 Esc 中断后用 curl 直接测一次。
找客服时要提供什么?
请求 id。本站每个响应(包括报错)的响应头里都有 x-uplink-request-id,Anthropic 格式的报错正文里也有 request_id。发到 hello@relayswitch.io,我们按 id 查到那一次调用。

失败的请求不扣费

429、502、503 不计费并带 retry-after;一条线路出错时自动换下一条。