Getting Started
レート制限
APIリクエスト制限とその対処方法を理解する
レート制限
Blitz Rocket APIは、公平な利用とサービスの安定性を保つためにレート制限を適用しています。レート制限はAPIキーごとに適用され、エンドポイントによって異なります。
デフォルト制限
| エンドポイントカテゴリ | 制限 | ウィンドウ |
|---|---|---|
| 一般的なエンドポイント | 100リクエスト | 1分 |
| コンテストエントリー作成 | 5リクエスト | 15分(IP + コンテストごと) |
| メール/電話番号認証 | 10リクエスト | 15分(IP + メールごと) |
| エントリー検索 | 20リクエスト | 5分(IPごと) |
レート制限ヘッダー
レート制限に近づくか超過した場合、APIは429 Too Many Requestsステータスコードを返します:
json
{
"success": false,
"error": "Rate limit exceeded. Please try again later."
}
ベストプラクティス
- 可能な限りレスポンスをキャッシュしてAPIコール数を減らす
- 429レスポンスを受け取ったら指数的バックオフを実装する
- 多数の個別リクエストを行う代わりにバッチ処理を行う
- ポーリングの代わりにリアルタイム更新にはWebhookを利用する
例:指数的バックオフ
javascript
async function fetchWithRetry(url, options, maxRetries = 3) {
for (let attempt = 0; attempt < maxRetries; attempt++) {
const response = await fetch(url, options);
if (response.status === 429) {
const delay = Math.pow(2, attempt) * 1000;
await new Promise((resolve) => setTimeout(resolve, delay));
continue;
}
return response;
}
throw new Error("Max retries exceeded");
}