429 Load Control

AI APIの429を「再試行」で増幅させない|レート制限・課金上限・過負荷を分ける負荷制御設計【2026】

"OpenAI・Anthropic・Cloudflare AI Gatewayの仕様を踏まえ、AI APIの429を一律リトライせず、待機可能なレート制限、復旧待ちの課金上限、上流過負荷を分けて扱う本番設計を解説します。"

古野光太朗古野光太朗·2026.09.14·一次情報 7件
AI APIへの送信前にtenant・model・token・優先度を確認し、429の原因を一時制限・課金上限・上流過負荷へ分類して待機・停止・隔離を選ぶ設計図

AI APIが429を返したとき、429なら指数バックオフだけを書いて終えると、本番では足りません。同じ429でも、数秒待てば通るレート制限、残高・月次上限が戻るまで通らない状態、ゲートウェイ側の利用上限で止めた状態があり、再試行の意味が異なるためです。利用者の再送、SDKの自動retry、Worker側のretry、Gateway側のretryが重なると、失敗したリクエスト自体が上流の負荷を増やし、待機列と請求を膨らませます。

結論は、429をHTTP statusだけで扱わず、原因を分類してから入場制御・待機・失敗通知を選ぶことです。入口で利用者・tenant・モデル別に同時実行数とtoken見積りを予約し、上流のRetry-Afterがある短期制限だけを一層で再試行します。支出上限や恒久的な設定不備は再試行せず、明示的に停止します。本稿は9月3日のQueue/DLQ記事の「非同期ジョブの再配信」とは別に、オンライン推論を上流へ送る前後の負荷制御を扱います。

429は一種類の失敗ではない

IETFのRFC 6585は、429を一定時間に送ったrequestが多過ぎる状態と定義し、Retry-Afterを付けることを許容しています。しかし、誰を一人と数えるか、どの範囲で数えるかは規定していません。アプリはstatusだけから「10秒後なら必ず成功」と推測できません。

OpenAIは429が一時的なrate limitのほか、prepaid balanceやspend/usage limitでも起こり得ると説明します。Retry-Afterが有効なら少なくともその時間を待ち、なければjitter付き指数バックオフにしつつ、回数と総待機時間を制限するのが公式の案内です。失敗requestも分単位の制限へ寄与するため、即時再送は復旧策ではなく悪化要因になります。さらに公式SDKが対象エラーを自動retryするため、アプリ側で二つ目の無条件retry loopを足す前に、SDK設定を確認します。

Anthropicでも、Messages APIの制限はRPMだけでなく入力・出力token/minuteに分かれます。429でもtierの月次spend capではretry-afterがないことがあり、待って再送しても復旧しません。500、529、stream開始後のerror eventも別の扱いです。つまり「request数が余っているから通る」とは限らず、入力の長い会話や出力上限がtoken枠を消費している可能性を、request IDとproviderのエラー詳細で切り分けます。

retryは一層だけ、入場制御は送信前に行う

最小構成では、アプリのadmission controller(受付制御)が、tenant_id、モデル、推定input token、予約した最大output token、優先度を受け取り、上流へ送る前に判断します。ここでのtoken見積りは正確な請求額を当てるためではなく、同じtenantの大量送信が全体を詰まらせないためです。許可しない場合は、画面を長くspinさせず、待機・後で再試行・管理者確認のいずれかを返します。

retryを置く層は、SDK、Worker、AI Gateway、Queue consumerのうち一つに決めます。Cloudflare AI Gatewayは最大5回、一定・線形・指数のbackoffを設定できます。Gatewayをその担当にするなら、呼び出し元は「このrequestはGatewayが再試行済みか」を記録し、同じ失敗を別層で重ねません。書込みを伴うtool実行は、生成requestのretryと外部効果のretryを混ぜず、前者の再送前に実行済み状態を確認します。

Cloudflare AI Gatewayのrate limitはGatewayを通る全requestへ一律適用されます。そこで、対話回答・バックグラウンド要約・embedding投入を同じGatewayに置く場合は、低優先の大量処理が対話を飢餓させない値かを検証します。用途を分けられない初期段階でも、少なくともmetadataで用途・tenant・モデルを残し、429を一つの合計値で眺めないことが必要です。

停止する条件を先に定義する

実装上は、次の四分類で十分です。

日本企業の法人導入では、事業部ごとの予算と、provider上では組織・project単位で掛かる上限が一致しないことがあります。海外providerのtierをそのまま「部門の利用可能量」と見なさず、社内のtenant/費目と上流projectを対応付けます。夜間の一括処理と営業時間の対話処理を同じ枠に置くなら、誰が優先され、止まったときに誰が判断するかを運用表へ書くことが、技術的なbackoffより先です。

限界と反証

この設計は上流の空き枠を保証しません。Retry-Afterがない429でも一時的に戻ることはあり、逆にheaderどおり待っても利用者の期限内に返せないことがあります。モデル切替は可用性対策になり得ますが、schema・tool・品質契約を満たす別モデルが確認済みの場合だけに限るべきです。特に外部送信や更新を伴うagentでは、429の再送が同じ外部効果を二度起こさないよう、冪等性と実行状態を別に確認してください。

導入時の最小チェックリスト

情報図解

図版仕様(1200×675px): 濃紺背景に、左から右へ「受付 → 分類 → 実行 → 結果」の4列を配置する。分類列から、青のRetry-Afterありは「一層だけ待機→再送」、橙のspend/creditは「管理者確認」、赤の5xx/529は「隔離・観測」へ分岐。受付列にはtenant / model / input・output token予約 / 優先度の4タグ、実行列にはSDK・Worker・Gatewayのうち一つだけを発光させ、残り二つへ「retry禁止」の破線を引く。下部に「429 = 再送命令ではなく、容量シグナル」という結論を置く。

既存記事との差分・内部リンク

主検索意図は「AI APIの429を本番でどう分類し、再試行の増幅を防ぐか」であり、Gateway cache、Queue運用、model切替の検索意図・結論とは重複しない。CTAも429ログを起点にした負荷制御レビューへ限定する。

CTA

OpenAI/Anthropic/AI Gatewayが返した429ログを基に、retryの重複と容量配分を設計レビューしたい場合は、AI基盤の429再発防止を相談する

一次根拠

一次情報と確認範囲

確認日:2026年9月14日。製品仕様・制度は更新されるため、導入時はリンク先の最新版を再確認してください。海外の制度・職業規範は日本へ直接適用せず、相違点と限界を本文に明記しています。

  1. OpenAIの429はrate limitだけでなくcredit・spend/usage limitを示し得る。`Retry-After`を優先し、SDKの自動retryとの重複を確認する必要がある
  2. OpenAI APIはrequest IDとrequest/tokenのrate-limit headerを返す
  3. AnthropicのMessages APIはRPM、入力・出力token/minuteの制限を持ち、rate limit時は`retry-after`を返す
  4. Anthropicの429には`retry-after`を持たないtier spend capがあり、SDKは一時失敗を既定で2回retryする
  5. AI Gatewayは失敗requestを最大5回retryでき、待機時間とbackoff方式を設定できる
  6. AI Gatewayのrate limitは当該Gatewayを通る全requestへ均一に適用される
  7. RFC 6585は429を過剰requestと定義し、`Retry-After`を許容するが、利用者の識別・計数方法は規定しない
古野光太朗
古野光太朗 / 株式会社TechWorker 代表取締役 CEO兼CTO

上場企業を含む37社・2,500名の生成AI導入・研修支援で得た実務知をもとに、導入・運用・顧客理解を扱っています。この実績はTechWorkerの生成AI支援実績であり、個別製品の導入実績を示すものではありません。

AI APIの429再発防止を設計する

SDK・Worker・Gatewayのretry重複を解消し、tenant別の入場制御と停止条件を本番ログから整理します。

AI基盤設計を相談する
← AI基盤ラボの記事一覧に戻る