速率限制
了解 API 请求限制、积分用量,以及如何妥善处理限流。
当前限制
| 范围 | 限制 | 含义 |
|---|---|---|
| API 密钥请求 | 60 次请求 / 分钟,5,000 次请求 / 天 | 已认证 API 密钥的默认配额。 |
/api/batch | 每次请求最多 500 个邮箱 | 按每次请求的邮箱上限分批提交。 |
| 匿名检测工具 | 每个 IP 地址每天 5 次检测 | 适用于未使用账户 API 密钥的公开检测工具。 |
| 验证量 | 账户可用积分 | 积分决定可运行的验证次数。 |
| 批量 CSV 上传 | 文件中每个邮箱都需要积分 | 上传前,积分需足以覆盖待验证的邮箱数量。 |
请求配额和积分是两项独立的控制。API 密钥默认每分钟 60 次请求、每天 5,000 次请求。这些配额决定已认证的集成调用 API 的速度,而账户积分决定可运行的验证次数。
处理大批量列表时,/api/batch单次请求最多接受 500 个邮箱。批量 CSV 上传按积分而非请求次数控制:账户积分必须足以覆盖上传文件中的邮箱数量,验证任务才能运行。
公开的匿名检测工具限制为每个 IP 地址每天 5 次检测。账户余额规则请参阅积分与用量。大批量导入请使用批量验证;集成行为请查看错误处理, 快速开始,以及价格。
速率限制响应
当 API 密钥超出请求配额时,API 会返回429 Too Many Requests响应。响应中包含Retry-After,以便客户端知道重试前需要等待多久。
json
{
"error": "Too Many Requests",
"message": "Rate limit exceeded. Please retry after the indicated delay.",
"status_code": 429,
"retry_after": 15
}
Retry-After 请求头
而Retry-After响应头表示超出配额的 API 密钥请求在重试前需等待的秒数:
http
HTTP/1.1 429 Too Many Requests
Retry-After: 15
Content-Type: application/json
在代码中处理速率限制
先读取该响应头,等待指定的秒数后再重试。如果没有该响应头,请使用较保守的默认等待时间。
python
import requests, time
def verify_with_retry(email, api_key, max_retries=3):
for attempt in range(max_retries):
response = requests.post(
"https://verimails.com/api/verify/single",
headers={"Authorization": f"Bearer {api_key}"},
json={"email": email}
)
if response.status_code == 200:
return response.json()
if response.status_code == 429:
retry_after = int(response.headers.get("Retry-After", 15))
print(f"Rate limited. Waiting {retry_after}s...")
time.sleep(retry_after)
continue
response.raise_for_status()
raise Exception("Max retries exceeded")
最佳实践
- 除非您的账户有不同的限制,否则请将已认证的 API 集成控制在每分钟 60 次请求、每天 5,000 次请求以内。
- 将
/api/batch的请求负载控制在 500 个邮箱以内。 - API 密钥请求收到 429 时,务必遵守
Retry-After响应头。 - 开始大规模验证前,先检查可用积分。
- CSV 列表请使用批量验证,并确保账户积分足以覆盖文件中的邮箱数量。