Caicaini
免费开始

参考

速率限制

每把密钥都有档位,控制每分钟请求数、每分钟输入 token 数和并发流数。档位基于累计充值;提升自动完成。

档位

档位处于该档位的条件RPMTPM并发流
free未充值前的新密钥。520,0001
pay_as_you_go首次充值确认完成后。60100,0005
high_volume累计充值 $500 及以上。300500,00020
enterprise由人工授予的自定义额度。customcustomcustom

档位提升每 5 分钟运行一次,参考的是已确认的累计充值。没有手动按钮——当你的支出越过阈值时,下一次扫描就会上调档位。需要超过 high_volume 的额度上线?请通过页脚的支持入口联系我们。

每个响应都带的请求头

每次 /v1/* 响应都会带上你这把密钥实时的请求计数。可以用它在客户端节流,而不是等到 429。

  • X-RateLimit-Tier——产生这些限制的档位。
  • X-RateLimit-Limit-Requests——你的 RPM 上限。
  • X-RateLimit-Remaining-Requests——当前分钟内剩余请求数。
  • X-RateLimit-Reset-Requests——距当前分钟窗口重置的秒数。
  • Retry-After——仅在 429 时设置。表示重试前应等待的秒数。
示例
curl -i https://caicaini.com/v1/messages \
  -H "Authorization: Bearer cai_api_YOUR_KEY" \
  -H "Content-Type: application/json" \
  -d '{"model":"caicaini/auto","max_tokens":50,"messages":[{"role":"user","content":"Hi"}]}'

# X-RateLimit-Tier:               pay_as_you_go
# X-RateLimit-Limit-Requests:     60
# X-RateLimit-Remaining-Requests: 59
# X-RateLimit-Reset-Requests:     42         # seconds until the window resets

超出限制时

超出限制时返回 type 为 rate_limit_error 的 429,并带上以秒为单位的 Retry-After 请求头。请求会在调用任何供应商之前就被拒绝,因此不消耗积分。

响应 · 429
{
  "type": "error",
  "error": {
    "type": "rate_limit_error",
    "message": "Requests per minute exceeded for this key. Retry after 12s."
  }
}

推荐的退避策略

用一个小的重试封装把所有调用包起来。存在 Retry-After 就读它,不存在则用带抖动的指数退避。重试上限 4–6 次,总等待约 30 秒。

# bash one-liner that retries on 429 with exponential backoff
delay=1
for i in 1 2 3 4 5; do
  status=$(curl -s -o /tmp/body -w "%{http_code}" \
    -X POST https://caicaini.com/v1/messages \
    -H "Authorization: Bearer cai_api_YOUR_KEY" \
    -H "Content-Type: application/json" \
    -d '{"model":"caicaini/auto","max_tokens":50,"messages":[{"role":"user","content":"Hi"}]}')
  if [ "$status" != "429" ]; then cat /tmp/body; exit 0; fi
  sleep "$delay"
  delay=$((delay * 2))
done
echo "rate-limited after retries" >&2
exit 1

积分不足是另一种信号

积分不足返回 type 为 insufficient_quota 的 402。不要重试——余额不增加就过不了。请显式捕获 402,通知操作者并暂停作业。完整错误类型表见 错误