グローバル制限
Brevo は、公平な利用と最適なパフォーマンスを確保するため、すべての API エンドポイントにグローバルなレート制限を適用しています。
レート制限のティア
Free プラン
- 1 日あたりの上限: 300 リクエスト
- 1 時間あたりの上限: 50 リクエスト
- バースト上限: 1 分あたり 10 リクエスト
- メールクレジット: 月 300 通
Starter プラン
- 1 日あたりの上限: 20,000 リクエスト
- 1 時間あたりの上限: 1,000 リクエスト
- バースト上限: 1 分あたり 100 リクエスト
- メールクレジット: 無制限
Business プラン
- 1 日あたりの上限: 50,000 リクエスト
- 1 時間あたりの上限: 3,000 リクエスト
- バースト上限: 1 分あたり 300 リクエスト
- メールクレジット: 無制限
Enterprise プラン
- 1 日あたりの上限: カスタム(100,000 以上)
- 1 時間あたりの上限: カスタム(10,000 以上)
- バースト上限: カスタム(1 分あたり 1,000 以上)
- メールクレジット: 無制限
レート制限のヘッダー
すべての API レスポンスにレート制限の情報が含まれます。
HTTP/1.1 200 OKX-RateLimit-Limit: 1000X-RateLimit-Remaining: 999X-RateLimit-Reset: 1640995200X-RateLimit-Retry-After: 3600ヘッダーの説明
X-RateLimit-Limit: 現在のウィンドウで許可されるリクエストの総数X-RateLimit-Remaining: 現在のウィンドウで残っているリクエスト数X-RateLimit-Reset: 上限がリセットされる Unix タイムスタンプX-RateLimit-Retry-After: 再試行までに待機する秒数
使用状況の監視
現在の使用状況を確認する
const checkRateLimit = async () => { const response = await fetch('https://api.brevo.com/v3/account', { headers: { 'api-key': process.env.BREVO_API_KEY } });
console.log({ limit: response.headers.get('X-RateLimit-Limit'), remaining: response.headers.get('X-RateLimit-Remaining'), reset: new Date(response.headers.get('X-RateLimit-Reset') * 1000) });};ダッシュボードでの監視
- Brevo のダッシュボードにログインします
- 設定 → API Keys に移動します
- API キーごとの使用状況を確認します
- 上限に近づいたときのアラートを設定します
レート制限のリセットウィンドウ
- 1 日あたりの上限: 00:00 UTC にリセットされます
- 1 時間あたりの上限: 毎時 00 分にリセットされます
- バースト上限: スライディングウィンドウ(直近 60 秒)で計算されます
レート制限への対処
指数バックオフ
const makeRequestWithBackoff = async (url, options, maxRetries = 3) => { for (let i = 0; i < maxRetries; i++) { try { const response = await fetch(url, options);
if (response.status === 429) { const retryAfter = response.headers.get('X-RateLimit-Retry-After') || 60; const delay = Math.min(1000 * Math.pow(2, i), retryAfter * 1000);
console.log(`Rate limited. Waiting ${delay}ms before retry ${i + 1}`); await new Promise(resolve => setTimeout(resolve, delay)); continue; }
return response; } catch (error) { if (i === maxRetries - 1) throw error; } }};プランのアップグレード
レート制限に継続的に到達する場合は、次の手順で対応します。
- 使用状況を分析する: 最も多く利用しているエンドポイントを確認します
- コードを最適化する: キャッシュとバッチ処理を実装します
- アップグレードを検討する: 必要に応じて上位ティアに移行します
- 営業に問い合わせる: エンタープライズ要件に対応します
レート制限の例外
Webhook エンドポイント
- 標準のレート制限は適用されません
- 別途、Webhook 配信の上限が適用されます
ヘルスチェックのエンドポイント
/v3/pingには緩やかな上限が適用されます- 監視や稼働確認のために設計されています
バッチ操作
- 1 件のリクエストとして数えられますが、ペイロードの上限が適用される場合があります
- 個別のリクエストを複数回送るより効率的です