入门
速率限制与配额
你可以发送多少请求,以及触及限制时会发生什么。
限制取决于你的套餐,并按每个 API 密钥分别计算。
每分钟请求数#
每个密钥使用一分钟的滚动窗口。每个成功的响应都带有 X-RateLimit-Remaining,表示当前窗口内剩余的请求数。超出限制时会返回 429 rateLimited,并在 error.retryAfter 中给出需要等待的秒数。
200
X-RateLimit-Remaining: 59429
{
"error": {
"code": "rateLimited",
"message": "Rate limit exceeded",
"retryAfter": 12
}
}月度配额#
每个密钥都有月度请求配额,于每月 1 日 00:00 UTC 重置。配额用完后,直到下个月之前,请求都会返回 429 rateLimited,且 error.reason 为 quota。
429
{
"error": {
"code": "rateLimited",
"message": "Monthly quota exceeded",
"reason": "quota"
}
}每日扫描#
真正发起扫描的 POST /scans 调用会消耗套餐每日扫描额度中的一次,该额度与你在应用中发起的扫描共用。读取报告,以及返回未过期缓存报告的扫描调用,不会消耗扫描额度(但仍计为 API 请求)。
各套餐的限制#
| 套餐 | 每分钟请求数 | 每月请求数 |
|---|---|---|
Pro | 60 | 100,000 |
最佳实践#
- 在你自己这边缓存代币报告;一份报告在几分钟内都不会过期。
- 收到 429 时,先等待
retryAfter秒,再使用指数退避加随机抖动进行重试。 - 每 3–5 秒轮询一次扫描,不要在循环里不间断地请求。
- 将批量任务分散到不同时间执行,而不是一次性并行发出。