速率限制

速率限制与额度

这里没有用量档位,也没有按账户划分的 RPM。会拦下请求的只有余额、Key 自己的额度、两个模型的并发上限,以及号池繁忙。

什么会拦下请求

所有模型都由共享号池承载,每个账户从第一次请求起待遇都一样:没有需要往上爬的档位,没有「消费到多少才解锁」,也没有每分钟请求数或 token 数的配额。会拦下请求的只有四件事:

  1. 1余额:负责支付这次请求的钱包空了。
  2. 2Key 额度:这把 Key 单独设了美元上限,并且已经用完。
  3. 3并发:只针对 claude-sonnet-5 和 gpt-5.6-luna 两个模型。
  4. 4号池繁忙:号池里能服务这个模型的账号在那一刻都忙满。

会遇到的状态码

错误响应的格式是 {"error": {"code": "...", "message": "..."}}。余额、额度、模型这几项检查都在转发之前完成,被拒绝的请求不产生费用。

状态码含义怎么处理
401invalid api key:Key 缺失、无效、已吊销或已过期。重新复制 Key,检查有没有多余的空格。
402api key quota exceeded:这把 Key 的单独额度用完了。在 API Keys 页面 调高或取消上限。
402claude_minimum_balance:Claude 只能用充值余额支付,而充值余额为空,或这把 Key 绑定了别的钱包。充值。
403没有能支付的钱包,消息里会写明是哪个余额空了。充值。
429model_capacity_exceeded:gpt-5.6-luna 没有空位,带 Retry-After: 1。1 秒后重试。
429model_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. 1登录控制台
  2. 2充值余额
  3. 3创建 API Key