レート制限
レート制限とは、当社のAPIが特定の期間内にユーザーやクライアントがサービスにアクセスできる回数に課す制約です。
レート制限の理由
当社では、すべての方にとって最良の体験を実現するため、APIにレート制限を設けています。これが重要である理由は以下の通りです。
-
サービスを安全かつ健全に保つため!レート制限は、いわば親切な用心棒のようなものです。誰かが一度に大量のリクエストでAPIに負荷をかけすぎないよう見張ってくれます。これにより、潜在的な不正利用からサービスを守り、すべてがスムーズに動作するよう保っています。
-
すべての方に公平な取り分を保証するため。遊び場でおもちゃを共有するのと同じように、すべてのユーザーがAPIに平等にアクセスできるようにしたいと考えています。各ユーザーが送れるリクエスト数を穏やかに制限することで、誰も自分の順番のために長く待たされることがないようにしています。
-
パフォーマンスを軽快かつ安定的に保つため。リクエスト全体の流れを管理することで、すべての素晴らしいユーザーの皆様に対して高速な応答時間と安定したサービスを維持できます。これは、高速道路が混雑しすぎないようにするのと同じことです。渋滞を防げば、交通の流れはより良くなります!
制限の仕組み
レート制限は次の2つの方法で計測されます。
- 秒間リクエスト数:1秒間に送信できるネットワークリクエストの数です。
- キュータスク数:任意の時点でキュー内に同時実行できる生成タスクの数です。
キュータスクには、テキストから3D、画像から3D、テキストからテクスチャ、およびリメッシュの各endpointが含まれます。アップロードやBalanceなど、その他のendpointはこの制限には含まれません。
制限はアカウント単位で適用されます。つまり、これらの制限はすべてのAPI keyにわたって共有されます。
レート制限に加えて、タスク処理の優先度もタスクの処理速度に影響します。
各ユーザー階層には、それぞれのニーズに合わせて設計された固有のレート制限と優先度レベルがあります。現在の階層別の制限は以下の通りです。
| ユーザー階層 | 秒間リクエスト数 | キュータスク数 | 優先度レベル |
|---|---|---|---|
| Pro | 20 | 10 | デフォルト |
| Premium | 20 | 30 | Proより高い |
| Ultra | 20 | 100 | 最高 |
| Studio | 20 | 20 | Proより高い |
| Enterprise | 100 | デフォルトは100、カスタマイズ可能 | 最高 |
これらの制限を超えると、当社のAPIから429 Too Many Requestsのレスポンスが返されます。これを引き起こすヒットには2種類あり、それぞれ異なるレスポンスが返されます。
- リクエストヒット:1秒あたりのリクエスト数が多すぎる場合に発生します。
Rate limit exceededというメッセージとともに429 Too Many Requestsのレスポンスが返されます。 - キューヒット:同時実行中の生成タスクが多すぎる場合に発生します。
NoMorePendingTasks(クレジットが不足している場合はNoMoreConcurrentTasks)というメッセージとともに429 Too Many Requestsのレスポンスが返されます。この429にはRetry-Afterが付きません。次のタスクを作成する前に、実行中のタスクのいずれかが完了するのを待ってください。
レート制限ヘッダー
APIのレスポンスには、リクエストのペースを調整できるよう以下のヘッダーが含まれています。
| ヘッダー | 説明 |
|---|---|
X-RateLimit-Limit | あなたの階層で1秒間に許可されているリクエスト数。 |
X-RateLimit-Remaining | 現在の1秒間に残っているリクエスト数。 |
X-RateLimit-Reset | 割り当てが再び満たされるまでの秒数。 |
Retry-After | 次のリクエストを送信するまでに待機すべき秒数。リクエストヒットによる429、およびPENDINGまたはIN_PROGRESSのままのタスクを取得した際に送信されます。 |
Retry-Afterが存在する場合は、その秒数だけ待ってから次のリクエストを送信してください。