コンテンツにスキップ

レート制限

RealityConnect APIは、ルートファミリーごとのトークンバケットを使用して、組織単位でリクエストのレート制限を行います。このページでは、バケット、レート制限対象のレスポンスすべてに含まれるヘッダー、429 Too Many Requestsが発生した場合の対処法について説明します。


各バケットには容量(最大トークン数、つまりバーストサイズ)と補充レート(1秒あたりに追加されるトークン数、つまり持続スループット)があります。リクエストは1トークンを消費し、バケットが空になると、リクエストは429で拒否されます。

バケット容量補充レート対象
assets100010/sRealityAsset、アセットタイプ、アセットカテゴリ、ビジネスオブジェクトの作成/読み取り/一覧/削除
twin100010/sツインスペース、POI、ゾーン、ドラフト
platform100010/sサイト、データノード、データバンドル、プラグイン
plan100010/sリアリティプランスペース、モデルアセット
library100010/sアセットライブラリのモデルとタグ
embed1002/s埋め込みセッションの発行
users100010/sユーザー、グループ、ロール、招待
sitefiles100010/sサイトファイル

レート制限は組織単位で行われます。同じ組織を代理して動作するすべてのOAuthアプリケーションとユーザーは、ファミリーごとに1つのバケットを共有します。

レート制限対象のレスポンスには、成功時・エラー時を問わず、以下のヘッダーが含まれます。

ヘッダー意味
X-RateLimit-Limitバケットの容量
X-RateLimit-Remainingバケットに残っているトークン数
X-RateLimit-Resetバケットが再び満杯になるまでの秒数
X-RateLimit-Policy{capacity};w={window}window(秒)はcapacity / refillRateです

429 Too Many Requestsの場合のみ、レスポンスにはRetry-After(少なくとも1つのトークンが利用可能になるまでの秒数)と、以下のボディも含まれます。

{
"statusCode": 429,
"message": "Too Many Requests",
"error": "rate_limited"
}

固定の遅延や即座の再試行ではなく、Retry-Afterを使ってバックオフしてください。空のバケットに対して即座に再試行しても、別の429が返されるだけです。持続的な高負荷のワークロードでは、容量までバーストしてリセットを待つのではなく、バケットの補充レートを下回るペースでリクエストを行ってください。

  • 各バケットに含まれる正確な操作については、APIリファレンスを参照してください。