◉CLAUDE LABEN
●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました●2.1.301 — vim の % モーション、VS Code パネルでの LaTeX 数式表示、使用量上限待ちのリトライ監視の上限が入りました(10/15)●2.1.299 — 200K トークン超で約54分放置した会話はアイドル圧縮。MCP の許可ルールは名指ししたサーバーだけに一致します●SONNET 4.5 — Claude API での提供終了は 11/30、残り45日。移行先は Sonnet 5.5●WINDOWS — 日本語の環境でだけフックが黙って壊れる報告があり、文字コードの確認が呼びかけられています●FAST MODE — Opus 5.5 の Fast mode がリサーチプレビューを終え、ベータヘッダーが不要になりました(10/15)●NEW — Cowork に渡したフォルダの先頭に、十行の約束ファイルを置いてみました
記事一覧/API & SDK
⬡ API & SDK/2026-07-07上級

Claude API が本番で突然 429 を返し始めたとき — レート制限の余白をヘッダから計測して枯渇前に絞る運用メモ

429 が出てから慌ててリトライを入れるのは後手です。Claude API のレスポンスヘッダには残量が毎回書かれています。余白を継続計測し、枯渇する前に自分から絞る運用メモを、実装フックと計測ログの読み方でまとめます。

Claude API128レート制限74295ヘッダスロットリングコスト帰属本番運用36

✦ プレミアム記事

429 は前触れなく来たように見えて、実はずっと予告されていました。

あるバッチが走った夜、本番のワーカーが立て続けに 429 Too Many Requests を返し始めました。私が最初にやったのは、よくある対応です。指数バックオフを入れ、リトライ回数を増やした。翌朝、エラーは減っていましたが、代わりに処理が詰まって全体の遅延が伸び、月次のトークン請求も跳ねていました。リトライは問題を先送りしただけで、根っこには触れていなかったのです。

見落としていたのは、Claude API がレスポンスのたびに「あとどれだけ送れるか」を教えてくれていた事実でした。429 を受け取ってから反応するのは、常に後手です。このメモは、レート制限の余白を毎リクエスト計測し、枯渇する前に自分から発信を絞るまでの運用記録です。個人開発で回している小さな基盤での話ですが、私自身が同じ罠に二度はまりたくないので手順として残します。考え方は規模を問いません。

429 を待つ設計が後手になる理由

レート制限の対応には二つの立ち位置があります。反応型(429 が来たら待つ)と、先制型(余白が細ったら自分で絞る)です。多くの実装は前者から始まります。私もそうでした。

反応型の弱点は、429 が「もう手遅れ」の合図だという点です。制限に達した瞬間、その時点で走っている並列リクエストはまとめて弾かれます。バックオフで待てば個々のリクエストは救えますが、同じ制限窓に殺到した全員が待たされ、全体のスループットは階段状に落ちます。しかもリトライは同じトークンを二度・三度消費するため、請求はむしろ増える方向に働きます。

先制型は、制限に達する前に発信量を自分で調整します。そのために必要なのは、いま自分がどれだけ制限に近づいているかを知る手段です。それはすでに手元にあります。

余白はレスポンスヘッダに毎回書かれている

Claude API は 200 応答にも、レート制限の状態をヘッダで返します。主に見るのは残量と復帰時刻です。

ヘッダ意味使い方
anthropic-ratelimit-requests-remainingこの窓で残り送れるリクエスト数件数ベースの余白
anthropic-ratelimit-tokens-remaining残り送れる入力トークン量の目安トークンベースの余白(実務ではこちらが先に枯れる)
anthropic-ratelimit-tokens-resetトークン枠が回復する時刻(ISO)絞る時間の見積もり
retry-after429 時に待つべき秒数反応型の最後の砦

大事なのは、これらが 429 のときだけでなく成功応答にも載っていることです。つまり平時から余白の推移を観測できます。私はこれを「残量」ではなく「余白率」に変換して扱うことにしました。上限に対する残りの割合にすれば、枠の大きさが違うテナント間でも同じ物差しで比べられます。

// src/lib/rateLimitMeter.ts
// レスポンスヘッダから余白率を算出し、逼迫を検知する軽量メーター
 
type Headroom = {
  requestsRemaining: number;
  tokensRemaining: number;
  tokensReset: number | null; // epoch ms
  tokensHeadroom: number;     // 0.0(枯渇) 〜 1.0(潤沢)
};
 
// 上限は組織のプランに応じて設定(観測した最大残量を初期値にしてもよい)
const TOKEN_LIMIT = Number(process.env.ANTHROPIC_TOKEN_LIMIT ?? 200000);
 
export function readHeadroom(headers: Headers): Headroom {
  const tokensRemaining = Number(
    headers.get('anthropic-ratelimit-tokens-remaining') ?? TOKEN_LIMIT
  );
  const requestsRemaining = Number(
    headers.get('anthropic-ratelimit-requests-remaining') ?? 0
  );
  const resetRaw = headers.get('anthropic-ratelimit-tokens-reset');
 
  return {
    requestsRemaining,
    tokensRemaining,
    tokensReset: resetRaw ? new Date(resetRaw).getTime() : null,
    tokensHeadroom: Math.max(0, Math.min(1, tokensRemaining / TOKEN_LIMIT)),
  };
}

余白率という一つの数字に落とせば、あとはそれが細ったときにどう振る舞うかを決めるだけです。

✦

ここまでお読みいただきありがとうございます。

この記事の続きを読む

この先には、実装コードやベンチマーク結果など、実務でお役に立てる内容をご用意しています。このサイトは広告を掲載しておらず、サーバーや開発にかかる費用はメンバーの皆様のご支援で成り立っています。もしお役に立てていましたら、ご支援いただけますと大変ありがたいです。

この記事で得られること
✦anthropic-ratelimit-tokens-remaining ヘッダから余白率を毎リクエスト算出する軽量フックの実装
✦余白 30%/10% の二段閾値で発信側を先回りに絞り、429 を週百数十件から一桁に落とす先制スロットル設計
✦テナント/ジョブ別にトークン消費と逼迫を帰属させ、暴走した再処理ジョブを名指しで止める計測ログの読み方
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

この先の内容をすべてお読みいただけます。一度のご購入で、いつでも何度でもアクセスできます。このサイトは広告を掲載しておらず、皆さまのご支援がサーバー費用などの運営を支えています。

または
メンバーシップなら全記事が読み放題 →
シェア

お読みいただきありがとうございます

Claude Lab は広告なしで運営しており、サーバー費用などの運営コストはメンバーシップのご支援で賄っています。実装コード・ベンチマーク・本番設計パターンなど、実務でお役立ていただける記事を毎日更新しています。もし読んでよかったと感じていただけましたら、ぜひご覧ください。

  • ✦コピー&ペーストで使える実装コード付き
  • ✦毎日新しい上級ガイドを追加
  • ✦¥580/月 または ¥1,480 の永久アクセス
メンバーシップを見る →

関連記事

⬡ API & SDK2026-10-16
Make から Claude API に 40 行流すと 14 行目で止まる — 429 を待ち時間の計算で避ける
表計算の行を1件ずつ Claude API に渡すノーコード自動化が、途中で 429 になる理由と直し方です。模擬バケットで7通りの間隔を比べ、Sleep の秒数を 60÷上限−応答時間 で決める式と、失敗行を落とさない設定を示します。
⬡ API & SDK2026-05-24
Claude API のレスポンスを Cloudflare R2 にアーカイブする実装メモ — 監査・再現性・障害分析の3軸設計
Claude API のリクエストとレスポンスを Cloudflare R2 に保存して、監査・障害分析・本番リプレイの3つに使う設計を、Workers の waitUntil パターンと D1 メタデータインデックス込みで実装メモにまとめました。
⬡ API & SDK2026-05-04
Bun × Claude API で本番運用するエッジAIサービス — Node.js移行の判断軸と落とし穴を回避する実装パターン
Claude APIをBun上で本番運用するための実装ガイド。Node.jsからの移行判断軸・組み込みSQLite/WebSocketの活用・ストリーミング最適化・典型的な落とし穴の回避策まで、動作するコードと実測値で解説します。