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");
}