速率限制与额度
这里没有用量档位,也没有按账户划分的 RPM。会拦下请求的只有余额、Key 自己的额度、两个模型的并发上限,以及号池繁忙。
什么会拦下请求
所有模型都由共享号池承载,每个账户从第一次请求起待遇都一样:没有需要往上爬的档位,没有「消费到多少才解锁」,也没有每分钟请求数或 token 数的配额。会拦下请求的只有四件事:
- 1余额:负责支付这次请求的钱包空了。
- 2Key 额度:这把 Key 单独设了美元上限,并且已经用完。
- 3并发:只针对
claude-sonnet-5和gpt-5.6-luna两个模型。 - 4号池繁忙:号池里能服务这个模型的账号在那一刻都忙满。
会遇到的状态码
错误响应的格式是 {"error": {"code": "...", "message": "..."}}。余额、额度、模型这几项检查都在转发之前完成,被拒绝的请求不产生费用。
| 状态码 | 含义 | 怎么处理 |
|---|---|---|
401 | invalid api key:Key 缺失、无效、已吊销或已过期。 | 重新复制 Key,检查有没有多余的空格。 |
402 | api key quota exceeded:这把 Key 的单独额度用完了。 | 在 API Keys 页面 调高或取消上限。 |
402 | claude_minimum_balance:Claude 只能用充值余额支付,而充值余额为空,或这把 Key 绑定了别的钱包。 | 充值。 |
403 | 没有能支付的钱包,消息里会写明是哪个余额空了。 | 充值。 |
429 | model_capacity_exceeded:gpt-5.6-luna 没有空位,带 Retry-After: 1。 | 1 秒后重试。 |
429 | model_queue_timeout:claude-sonnet-5 的请求排队 30 秒仍没轮到。 | 退避后重试。 |
429 | 号池里这个模型的账号都忙满,Retry-After 是最早一个账号空出来的时间。 | 按 Retry-After 等待后重试。 |
503 | 暂时不可用。 | 退避后重试。 |
两个模型的并发上限
| 模型 | 没有空位时 |
|---|---|
claude-sonnet-5 | 进入先到先得的队列,最多等 30 秒,仍没轮到就返回 429 model_queue_timeout。 |
gpt-5.6-luna | 立刻拒绝,返回 429 model_capacity_exceeded 和 Retry-After: 1。 |
其他模型都没有按模型划分的并发上限,约束你的是余额,以及号池那一刻有多少空闲账号。
重试
OpenAI 和 Anthropic 官方 SDK 默认就会重试 429 和 5xx,并遵守 Retry-After。直接调接口的话,有这个头就按它等,没有就退回指数退避。
for attempt in 1 2 3 4 5; do
status=$(curl -sS -o resp.json -D headers.txt -w '%{http_code}' \
https://token-share.app/v1/messages \
-H "x-api-key: $TOKEN_SHARE_KEY" \
-H "anthropic-version: 2023-06-01" \
-H "content-type: application/json" \
-d '{"model": "claude-sonnet-5", "max_tokens": 256, "messages": [{"role": "user", "content": "ping"}]}')
if [ "$status" != "429" ] && [ "$status" != "503" ]; then
cat resp.json; break
fi
wait=$(awk 'tolower($1) == "retry-after:" { print $2 }' headers.txt | tr -d '\r')
sleep "${wait:-$((2 ** attempt))}"
done什么时候扣费
费用在请求完成后扣,不做事前预留。转发前只检查钱包是不是非空,所以一批并发请求打在快见底的余额上,可能把余额带到略低于零,差额会记账而不是免掉。每次计费请求最低 $0.0001,Claude 请求最低 $0.001。
流式响应中途断开,已经产出的 token 照样计费;如果在报出任何用量之前就断了,这次请求记为未计费。每次请求实际花了多少,用 账单 API 查。
准备好了?三步即可开始
- 1登录控制台
- 2充值余额
- 3创建 API Key