メインコンテンツへスキップ
OrcaRouter は API キー単位ではなく ワークスペース 単位で レート制限します。同じワークスペースに属するすべてのキーは同じ バケットから引き出します。上限を超えると HTTP 429 Too Many Requests レスポンスを Retry-After ヘッダ付きで返します。

なぜワークスペース単位なのか

ワークスペースは OrcaRouter が単一チームや個人に属するキー、 メンバー、課金をまとめる方法です。ワークスペース内の共有上限は、 チームの成長に伴ってトラフィックを予測可能に保ちます: 新しいキー (や新しいメンバー) を追加しても共有予算が倍になりません。より高い 上限が必要なら、ワークスペースのプランをアップグレードしてください。 OrcaRouter は呼び出し側にモデル別のレート制限を公開しません —— ゲートウェイはアプリの観点からは単一論理プロバイダとして振る舞います (プロバイダの不透明性 との一貫性)。 上流プロバイダへの内部スロットリングは透過的に行われ、公開契約の 一部ではありません。

レスポンス

レート制限されたリクエストは常に以下を返します:
HTTP/1.1 429 Too Many Requests
Retry-After: <seconds>
一部のレート制限パスは、ヒットした制限を説明する JSON ボディも含めます; 他 (最速パスのワークスペースバケット) はステータスコードとヘッダだけ を返します。ボディの形に依存しないでください ——ステータスコード 429 と Retry-After を確認するだけにしてください。 ボディが存在する場合は OpenAI 互換のエンベロープに従い、 error.typeorcarouter_api_error に設定されます。error.message はローカライズされる場合があります (現状は中国語) ——エンベロープの 構造は エラー を参照してください。 Retry-After は秒単位です。これはレート制限ウィンドウの長さです (保守的 ——正確にその長さ待つのは安全です); 次のウィンドウは 完全な予算を持ちます。待たずに即座に再試行すると再度失敗します。

推奨されるクライアントの挙動

  1. 429 を受け取ったら Retry-After を読む。
  2. その秒数だけ待つ。
  3. 同じリクエストを再試行。
  4. 2 度目の 429 が起きたら、待ち時間を 2 倍に増やす (指数バック オフ)。最大 60 秒まで。
  5. 429 が繰り返し見られる場合、extra_body.models で複数モデルに トラフィックを分散することを検討してください —— モデルフォールバック を参照。
OpenAI Python と TypeScript の SDK は既定で Retry-After を自動的に 扱います。再試行を無効化していない限り、独自コードは不要です。

受動的、予測的ではない

OrcaRouter は X-RateLimit-Remaining / X-RateLimit-Reset ヘッダ を返さないので、残りの予算を予め確認できません。429 を信号と扱って ください ——見たら退避し、それから再開。