レート制限
mixi2 API のレート制限について説明します。
mixi2 API では、プラットフォームの安定性を維持するために、各 API にレート制限が設けられています。このページでは、レート制限の仕様と制限超過時の挙動について説明します。
適用単位
レート制限はアプリケーション単位で適用されます。同一アプリケーションからのリクエストは、すべて同じレート制限のカウントに加算されます。
API ごとのレート制限
リクエスト回数の制限
各 API のリクエスト回数の制限は以下の通りです。
| RPC | 制限 | ウィンドウ |
|---|---|---|
CreatePost | 10 回 | 1 分 |
SendChatMessage | 10 回 | 1 分 |
InitiatePostMediaUpload | 10 回 | 1 分 |
InitiatePostMediaUpload | 100 回 | 1 時間 |
AddStampToPost | 10 回 | 1 分 |
GetUsers | 10 回 | 1 分 |
GetPosts | 10 回 | 1 分 |
InitiatePostMediaUpload には 1 分あたりと 1 時間あたりの 2 つの制限が適用されます。いずれかの制限に達した場合、リクエストが制限されます。
GetStamps、GetPostMediaStatus、SubscribeEvents にはリクエスト回数のレート制限はありません。
メディアアップロードの制限
メディアのアップロードには、リクエスト回数の制限に加えて、データ量の制限があります。
| 項目 | 制限 |
|---|---|
| アップロード容量 | 1 GB / 日 |
各メディアファイルのサイズ制限については、API の使い方 - メディアアップロードの制限を参照してください。
レスポンスヘッダー
すべての API レスポンスには、現在のレート制限の状況を示す以下のヘッダーが含まれます。
| ヘッダー | 説明 |
|---|---|
ratelimit-limit | リクエスト回数の上限値 |
ratelimit-remaining | 現在のウィンドウ内で残っているリクエスト回数 |
ratelimit-reset | 制限がリセットされる時刻(UNIX 秒) |
制限を超過した場合は、上記に加えて以下のヘッダーが返されます。
| ヘッダー | 説明 |
|---|---|
retry-after | 再試行まで待機すべき秒数(最小 1 秒) |
制限超過時のレスポンス
レート制限に達した場合、リクエストはハンドラ実行前に拒否され、以下のエラーレスポンスが返されます。
| 項目 | 値 |
|---|---|
| gRPC ステータスコード | RESOURCE_EXHAUSTED(code 8) |
| エラーメッセージ | rate limit exceeded |
レート制限の判定はハンドラ実行前に行われるため、制限超過時は業務処理は実行されません。
制限超過時の対処
レート制限を超過した場合は、以下の手順で対処してください。
retry-afterヘッダーの値に従って待機する — 即時リトライは避けてくださいretry-afterがない場合はratelimit-resetの時刻まで待機する- 再試行にはジッター(ランダムな遅延)付きバックオフを使用する — 複数のクライアントが同時にリトライすることを避けられます
レート制限を含むエラーハンドリング全般については、アプリケーション開発 - エラーハンドリングを参照してください。
レート制限は予告なく変更される場合があります。最新の情報はこのページで確認してください。
関連ページ
- API の使い方 - 各 API の使用方法とコード例
- API リファレンス - API の完全な仕様
- アプリケーション開発 - エラーハンドリングのベストプラクティス