サービス全体の健全性を保つため、Canbus. API には一定の単位時間あたりの呼び出し回数制限(レートリミット)が設けられています。
レートリミットの時間枠と呼び出し可能回数は、次のとおりです。
- 1 分あたり 200 回 - 毎分、0 秒 ~ 59 秒の間に呼び出された回数がカウントされます。
- 15 分あたり 2,000 回 - 毎時、0 ~ 14 分、15 ~ 30 分、31 ~ 44 分、45 分 ~ 59 分の間に呼び出された回数がカウントされます。
- 1 時間あたり 6,000 回 - 毎時、0 分 0 秒 ~ 59 分 59 秒の間に呼び出された回数がカウントされます。
- 1 日あたり120,000 回 - 毎日、0 時 0 分 0 秒 ~ 23 時 59 分 59 秒の間に呼び出された回数がカウントされます。日付は協定世界時の 0:00:00(日本標準時 9:00:00)にリセットされます。
API 呼び出し回数は、テナントごとにその合計が計測されます。
言い換えると、Canbus. 内のすべてのアプリに対する、すべての外部プログラムからの API 呼び出しが、API の種類を問わずに累計され、呼び出し回数としてカウントされます。どのテーブルの API 認証情報を使用して API 呼び出しが行われたかは、区別されません。また、どの外部プログラムが API を呼び出したかも区別されません。
レートリミットに達した場合の動作
各時間枠の中で呼び出し回数の上限に達した場合、HTTP ステータス 429 Too Many Requests が返されます。
また、以下の値を持つ Retry-After レスポンスヘッダーが返されます。
- 1 分間の時間枠でレートリミットの上限に達した場合、60
- 15 分間の時間枠でレートリミットの上限に達した場合、900
- 1 時間の時間枠でレートリミットの上限に達した場合、3600
- 1 日間の時間枠でレートリミットの上限に達した場合、86400
Retry-After ヘッダーで返される値は、次に Canbus. API の呼び出しをリトライ可能となるまでの秒数を表していますが、実際に返される値は時間枠ごとに常に一定です。例えば、1 分間の時間枠でレートリミットに達した場合は、必ず 60 が返されます。
429 Too Many Requests エラーが返された場合は、次のセクションで説明する方法で API 呼び出しをリトライしてください。ただし、指定された秒数が経過した後でも引き続き呼び出し可能回数の上限に達していた場合は、リトライ時にも再度同様のエラーが返されます。
リトライ方法
レートリミットに達し、429 Too Many Requests エラーが返された場合は、API 呼び出しをすぐにリトライしても、高い確率で同じエラーとなります。以下のいずれかの方法で、リトライを行うまでの時間を調整してください。
- Retry-After ヘッダー値の秒数が経過するまで待つ。429 Too Many Requests エラーと一緒に返される Retry-After ヘッダーの値を参照して、指定された秒数が経過するまで、リトライを待機する方法です。ただし、リトライの時点で再度、レートリミットの上限に達している可能性もあるため、注意してください。
- リトライまでの待機時間を徐々に拡大する。最初のリトライを 1 秒後に行い、再度レートリミットの上限エラーとなったら、次のリトライは 2 秒後に行います。同様に 4 秒後、8 秒後、16 秒後、32 秒後... のように、API 呼び出しに成功するまで、待機時間を倍にしながらリトライを繰り返す方法です。
レートリミットに関する注意事項
Canbus. API を利用する際は、レートリミットに関連して以下の点に注意してください。
- レートリミットの時間枠と単位時間あたりの API 呼び出し可能回数は、システムの健全性を保つ目的で、将来変更が行われる可能性があります。
- 頻繁にレートリミットを超過した場合、テナントで Canbus. API の呼び出しが制限または禁止される場合があります。