レート制限
BrazeのAPIインフラストラクチャは、顧客ベース全体で大量のデータを処理できるように設計されている。このため、ワークスペースごとにAPIレートの制限を設けている。
レート制限とは、APIが一定時間内に受け取れるリクエスト数のことである。大規模システムにおける負荷ベースのサービス拒否インシデントの多くは、悪意のある攻撃ではなく、ソフトウェアや設定のエラーによって引き起こされる意図的でないものである。レート制限は、このようなエラーがBraze APIのリソースをお客様から奪うことがないようにチェックする。一定時間内に多くのリクエストが送信された場合、ステータスコード429
のエラー応答が表示されることがある。これは、レート制限にヒットしたことを示す。
API レート制限は、システムの適切な使用状況に応じて変更される場合があります。損害や悪用を防ぐため、APIコールを行う際には常識的な制限を設けることを推奨する。
リクエストタイプ別のレート制限
以下の表に、リクエストタイプ別のデフォルトのAPIレート制限を示す。これらのデフォルトの制限は、リクエストに応じて増加できます。詳細については、カスタマーサクセスマネージャーにお問い合わせください。
この表に記載されていないリクエストは、合計で 1 時間あたり 250,000 件のリクエストというデフォルトのレート制限を共有します。
APIリクエストをバッチ処理する
BrazeのAPIは、バッチ処理をサポートするように構築されている。バッチ処理により、Brazeは1回のAPIコールで可能な限り多くのデータを取り込むことができるため、多くのAPIコールを行う必要がなくなる。Brazeにとって、データを一度に1コールずつ処理するよりも、バッチで処理する方が効率的なのだ。例えば、1,000 件のバッチ API 呼び出しを処理する場合、75,000 回の個別の呼び出しを処理する場合よりも必要なリソースが少なくなります。1 時間あたり 75,000 回を超える呼び出しが必要なアプリケーションでは、バッチ処理は非常に重要です。
REST API のレート制限の増加は、API バッチ処理機能を利用している顧客のニーズに基づいて検討されます。
ユーザー追跡リクエストのバッチ処理
/users/track
の各リクエストには、最大 75 個のイベントオブジェクト、75 個の属性オブジェクト、75 個の購買オブジェクトを含めることができます。各オブジェクト(イベント、アトリビュート、購入アレイ)は、それぞれ1人のユーザーを更新することができる。合計すると、1 回の呼び出しで最大 225 人のユーザーを更新できることになります。さらに、単一のユーザープロファイルを複数のオブジェクトによって更新することもできます。
このエンドポイントへのリクエストは通常、この順番で処理を開始する:
- 属性
- イベント
- 購入
メッセージングエンドポイントリクエストのバッチ処理
メッセージングエンドポイントへの単一のリクエストは、次のいずれかに到達できます。
- それぞれに個別のメッセージパラメーターを持つ、最大 50 個の特定の
external_ids
segment_id
で指定される、Braze ダッシュボードで作成された任意のサイズのセグメント- リクエストの中で接続オーディエンスオブジェクトとして定義された、任意のサイズの追加オーディエンスフィルターにマッチするユーザー。
バッチリクエストの例
以下の例では、external_id
を使って、EメールとSMSのAPIコールを1回行っている。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
curl --location --request POST 'https://rest.iad-01.braze.com/v2/subscription/status/set' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer YOUR-REST-API-KEY' \
--data-raw '{
"subscription_groups":[
{
"subscription_group_id":"subscription_group_identifier",
"subscription_state":"subscribed",
"external_ids":["example-user","[email protected]"]
},
{
"subscription_group_id":"subscription_group_identifier",
"subscription_state":"subscribed",
"external_ids":["example-user","[email protected]"]
}
]
}
レート制限の監視
Brazeに送信されたすべてのAPIリクエストは、レスポンスヘッダに以下の情報を返す:
ヘッダー名 | 説明 |
---|---|
X-RateLimit-Limit |
指定された間隔内に実行できるリクエストの最大数 (レート制限)。 |
X-RateLimit-Remaining |
現在のレート制限期間内に残っているリクエストの数。 |
X-RateLimit-Reset |
現在のレート制限期間が UTC エポック秒でリセットされる時刻。 |
この情報は、Brazeダッシュボードではなく、APIリクエストに対するレスポンスのヘッダーに意図的に含まれている。これにより、あなたのシステムは、あなたが私たちのAPIとやりとりしているときにリアルタイムでよりよく反応することができる。例えば、X-RateLimit-Remaining
の値がある閾値を下回った場合、すべてのトランザクションメールが送信されるように、送信を遅くしたいかもしれない。あるいは、ゼロになったら、X-RateLimit-Reset
で指定された時間が経過するまで、すべての送信を一時停止することもできる。
HTTPヘッダーはすべて小文字で返される。この動作は、すべてのヘッダーフィールド名を小文字にすることを義務付けたHTTP/2プロトコルと一致している。これは、HTTP/1.Xではヘッダー名は大文字小文字を区別しないが、様々な大文字で書かれるのが一般的だったのとは異なる。
API の制限についてご質問がある場合は、カスタマーサクセスマネージャーにお問い合わせいただくか、サポートチケットを開いてください。
エンドポイント間の最適遅延
エラーを最小限に抑えるため、連続するエンドポイント・コールの間に5分間の遅延を設けることを推奨する。
Braze API を連続して呼び出す場合は、エンドポイント間の最適な遅延を理解することが重要です。エンドポイントが他のエンドポイントの正常な処理に依存している場合に問題が発生すると、呼び出しが早すぎる場合はエラーが発生する可能性があります。例えば、/user/alias/new
エンドポイントを通じてユーザーにエイリアスを割り当て、そのエイリアスを使用して/users/track
エンドポイントを通じてカスタム・イベントを送信する場合、どのくらい待つべきか?
通常の条件下では、データの最終的な一貫性が実現されるまでの時間は 10 ~ 100 ミリ秒 (1/10 秒) です。しかし、その整合性が取れるまでに時間がかかる場合もあるので、エラーの確率を最小限にするために、後続のコールをかける間隔を5分ほど空けることをお勧めする。