429 Too Many Requests
レスポンスを Retry-After ヘッダ付きで返します。
なぜワークスペース単位なのか
ワークスペースは OrcaRouter が単一チームや個人に属するキー、 メンバー、課金をまとめる方法です。ワークスペース内の共有上限は、 チームの成長に伴ってトラフィックを予測可能に保ちます: 新しいキー (や新しいメンバー) を追加しても共有予算が倍になりません。より高い 上限が必要なら、ワークスペースのプランをアップグレードしてください。 OrcaRouter は呼び出し側にモデル別のレート制限を公開しません —— ゲートウェイはアプリの観点からは単一論理プロバイダとして振る舞います (プロバイダの不透明性 との一貫性)。 上流プロバイダへの内部スロットリングは透過的に行われ、公開契約の 一部ではありません。レスポンス
レート制限されたリクエストは常に以下を返します:Retry-After を確認するだけにしてください。
ボディが存在する場合は OpenAI 互換のエンベロープに従い、
error.type は orcarouter_api_error に設定されます。error.message
はローカライズされる場合があります (現状は中国語) ——エンベロープの
構造は エラー を参照してください。
Retry-After は秒単位です。これはレート制限ウィンドウの長さです
(保守的 ——正確にその長さ待つのは安全です); 次のウィンドウは
完全な予算を持ちます。待たずに即座に再試行すると再度失敗します。
推奨されるクライアントの挙動
429を受け取ったらRetry-Afterを読む。- その秒数だけ待つ。
- 同じリクエストを再試行。
- 2 度目の
429が起きたら、待ち時間を 2 倍に増やす (指数バック オフ)。最大 60 秒まで。 429が繰り返し見られる場合、extra_body.modelsで複数モデルに トラフィックを分散することを検討してください —— モデルフォールバック を参照。
Retry-After を自動的に
扱います。再試行を無効化していない限り、独自コードは不要です。
受動的、予測的ではない
OrcaRouter はX-RateLimit-Remaining / X-RateLimit-Reset ヘッダ
を返さないので、残りの予算を予め確認できません。429 を信号と扱って
ください ——見たら退避し、それから再開。