先行利用を申し込む

お名前と会社のメールアドレスを入力してください。Tajoへのアクセス申請を確認するためのリンクをメールでお送りします。

グローバル制限

Brevo は API リクエストをエンドポイントごとに制限しています。各上限は、1 秒あたり(RPS)、1 時間あたり(RPH)、またはその両方のリクエスト数で示されます。以下の数値は Brevo のレート制限のページに基づくもので、2026 年 10 月 7 日に確認しました。大規模なジョブの規模を見積もる前に、そのページを確認してください。

レート制限のティア

ティア利用できるプラン
GeneralFree、Starter、Standard、Professional、Enterprise
AdvancedProfessional と Enterprise
ExtendedEnterprise

ティアごとの上限

エンドポイントGeneralAdvancedExtended
POST /v3/smtp/email, GET /v3/smtp/blockedContacts1,000 RPS, 3,600,000 RPH2,000 RPS, 7,200,000 RPH6,000 RPS
GET /v3/smtp/emails2 RPS, 7,200 RPH3 RPS, 10,800 RPH18,000 RPH
POST /v3/transactionalSMS/send150 RPS, 540,000 RPH200 RPS, 720,000 RPH250 RPS
POST /v3/events10 RPS, 36,000 RPH20 RPS, 72,000 RPH60 RPS
POST /v3/orders/status5 RPS, 18,000 RPH10 RPS, 36,000 RPH15 RPS
POST /v3/products2 RPS, 7,200 RPH4 RPS, 14,400 RPH21,600 RPH
/v3/smtp 配下のその他のエンドポイント300 RPH600 RPH1,800 RPH
/v3/contacts 配下のすべてのエンドポイント10 RPS, 36,000 RPH20 RPS, 72,000 RPH60 RPS
/v3/loyalty 配下のすべてのエンドポイント600 RPH1,200 RPH100,000 RPH
その他のすべてのエンドポイント100 RPH200 RPH600 RPH

エンドポイントに RPS と RPH の両方の上限がある場合は、両方を下回るようにしてください。

レート制限のヘッダー

レート制限のあるエンドポイントは、次のヘッダーを返します。

HTTP/1.1 200 OK
x-sib-ratelimit-limit: 1000
x-sib-ratelimit-remaining: 750
x-sib-ratelimit-reset: 1

ヘッダーの説明

  • x-sib-ratelimit-limit: 現在のウィンドウで許可されるリクエスト数
  • x-sib-ratelimit-remaining: 現在のウィンドウで残っているリクエスト数
  • x-sib-ratelimit-reset: ウィンドウがリセットされるまでの時間(通常は秒)

Brevo はこれらのヘッダーをレート制限ヘッダーのページで説明しています。

使用状況の監視

現在の使用状況を確認する

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-sib-ratelimit-limit'),
remaining: response.headers.get('x-sib-ratelimit-remaining'),
resetInSeconds: Number(response.headers.get('x-sib-ratelimit-reset'))
});
};

レート制限への対処

指数バックオフ

const makeRequestWithBackoff = async (url, options, maxRetries = 3) => {
for (let i = 0; i < maxRetries; i++) {
const response = await fetch(url, options);
if (response.status !== 429) return response;
const resetSeconds = Number(response.headers.get('x-sib-ratelimit-reset') || 1);
const delay = Math.max(resetSeconds * 1000, 1000 * Math.pow(2, i));
console.log(`Rate limited. Waiting ${delay}ms before retry ${i + 1}`);
await new Promise(resolve => setTimeout(resolve, delay));
}
throw new Error('Rate limit retries exhausted');
};

上限に繰り返し達する場合

  1. リクエストを均等に分散させる: 1,000 RPS の上限で 1 分あたり最大 60,000 リクエストを処理できるのは、リクエストが均等に分散されている場合に限ります。
  2. バッチ処理とキャッシュ: バルク用のエンドポイントを使い、すでに持っているデータの再取得を避けます。
  3. 統計情報には Webhook を使う: 統計用のエンドポイントをポーリングする代わりに、イベントを受信します。
  4. 上位のティアを検討する: Advanced と Extended のティアは、Professional と Enterprise のプランに含まれます。

先行利用を申し込む

お名前と会社のメールアドレスを入力してください。Tajoへのアクセス申請を確認するためのリンクをメールでお送りします。

AIアシスタント

こんにちは!ドキュメントについて何でもお聞きください。

このページのMarkdown: global-limits.md

Markdownを読み込み中…
Claudeで開く ChatGPTで開く