CLAUDE LABEN
VERSION — 8月10日に v2.1.227 が出ていました。新機能はなく、プラン判定と CI まわりの不具合修正が中心ですAUTO — 8月14日の既定化まで残り2日です。Pro・Max・Team で Claude Code の auto モードが既定で有効になりますCI — claude-code-action で allowed_non_write_users を指定すると GitHub ホストランナー上の Bash が全て失敗していた問題が直りましたBILLING — 期限切れトークンで開始したセッションが加入プランを取り違え、Max 利用者に使用クレジットの有効化を促していた不具合も解消していますSUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は8月17日で、残り5日ですPRICE — Sonnet 5 のプロモ価格 $2/$10 per Mtok は8月31日までで、9月1日から $3/$15 per Mtok になりますVERSION — 8月10日に v2.1.227 が出ていました。新機能はなく、プラン判定と CI まわりの不具合修正が中心ですAUTO — 8月14日の既定化まで残り2日です。Pro・Max・Team で Claude Code の auto モードが既定で有効になりますCI — claude-code-action で allowed_non_write_users を指定すると GitHub ホストランナー上の Bash が全て失敗していた問題が直りましたBILLING — 期限切れトークンで開始したセッションが加入プランを取り違え、Max 利用者に使用クレジットの有効化を促していた不具合も解消していますSUNSET — 旧 Workbench と実験的プロンプトツール API の廃止は8月17日で、残り5日ですPRICE — Sonnet 5 のプロモ価格 $2/$10 per Mtok は8月31日までで、9月1日から $3/$15 per Mtok になります
記事一覧/API & SDK
API & SDK/2026-06-24上級

上限が倍になった日に決めたこと — 共有APIキーで定期ジョブを束ねる余白予算の設計

レート上限が倍になってもジョブ間隔を詰めなかった理由と、共有APIキーで複数の定期ジョブを束ねる「余白予算」の設計をまとめました。レスポンスヘッダーからの現状計測、ジョブ別の消費割り当て、予算を据え置いた判断の背景、本番運用で見えた落とし穴までを実コードとともに紹介します。

Claude API116レート制限6定期実行3キャパシティプランニング運用設計20

プレミアム記事

上限が倍に引き上げられたという知らせを読んで、最初に頭をよぎったのは「では、ジョブの間隔を半分にできるな」という考えでした。Dolice Labs として複数のサイトに毎日決まった時刻で記事を流し込んでいる身としては、詰められる余地はそのまま運用の自由度です。

ところが、手元のログを開いて数分眺めているうちに、その手は止まりました。倍になったのは天井であって、私が実際に消費している量ではありません。詰めてよいかどうかは、天井ではなく「いま床から天井までどれだけ空いているか」で決まります。

この記事は、その日に私自身が引いた線の話です。レート上限を「使い切る対象」ではなく「予算として配る対象」に置き換えると、上限が動いても運用は驚くほど静かになります。共有 API キーで複数の定期ジョブを回している方に向けて、余白を測り、配り、据え置くまでの設計を、実際に使っているコードとともに整理します。

余白を「予算」として扱うと何が変わるか

レート上限の話は、しばしば 429 が出てからの対処、つまり再試行とバックオフの話に偏ります。それは事後の防御です。ここで扱いたいのは事前の配分、つまり「平常時にどこまで使うか」を先に決めておく話です。

両者は似て非なるものです。コストのペース配分は「今月いくらまで使うか」という金額の話で、消費すれば請求が増えます。一方の余白予算は「単位時間あたりの上限の何割まで使うか」という速度の話で、消費しても請求は変わりませんが、使い切ると後続のジョブや再試行が詰まります。

私が予算という言葉を選んだのは、余白が共有資源だからです。共有キーの下では、記事生成ジョブも Stripe のイベント処理も、同じ天井を分け合っています。片方が天井際まで使えば、もう片方は手元の上限が下がったかのように振る舞います。だからこそ、誰がどれだけ使ってよいかを先に決めておく価値があります。

現状をヘッダーから測る

予算を組む前に、いまの消費を知る必要があります。Claude API はレスポンスヘッダーに残量を載せて返してくれるので、推測ではなく実測から始められます。

主に見るのは次のヘッダーです。requests 系と tokens 系がそれぞれ独立して効く点に注意してください。

ヘッダー意味
anthropic-ratelimit-requests-limitその窓でのリクエスト数上限
anthropic-ratelimit-requests-remaining残りリクエスト数
anthropic-ratelimit-requests-reset残量が回復する時刻(RFC3339)
anthropic-ratelimit-tokens-limitその窓でのトークン上限
anthropic-ratelimit-tokens-remaining残りトークン数
anthropic-ratelimit-tokens-resetトークン残量が回復する時刻
retry-after429 のとき、待つべき秒数

まずは、すべての呼び出しの直後にこれらを記録する薄い層を一枚かませます。SDK のレスポンスからヘッダーを取り、構造化して残すだけの関数です。

// ratelimit.ts — レスポンスヘッダーから残量を読み取る
type RateSnapshot = {
  at: string;          // 計測時刻 (ISO)
  job: string;         // どのジョブか
  reqLimit: number;
  reqRemaining: number;
  reqResetSec: number; // reset までの秒数
  tokLimit: number;
  tokRemaining: number;
  tokResetSec: number;
};
 
function secUntil(iso: string | null): number {
  if (!iso) return 0;
  const ms = new Date(iso).getTime() - Date.now();
  return Math.max(0, Math.round(ms / 1000));
}
 
export function readSnapshot(job: string, headers: Headers): RateSnapshot {
  const num = (k: string) => Number(headers.get(k) ?? "0");
  return {
    at: new Date().toISOString(),
    job,
    reqLimit: num("anthropic-ratelimit-requests-limit"),
    reqRemaining: num("anthropic-ratelimit-requests-remaining"),
    reqResetSec: secUntil(headers.get("anthropic-ratelimit-requests-reset")),
    tokLimit: num("anthropic-ratelimit-tokens-limit"),
    tokRemaining: num("anthropic-ratelimit-tokens-remaining"),
    tokResetSec: secUntil(headers.get("anthropic-ratelimit-tokens-reset")),
  };
}

SDK 経由でヘッダーへ届く方法はクライアントによって異なりますが、生レスポンスを受け取れる形(withResponse 相当)で一度だけ呼び、そこからヘッダーを取り出すのが確実です。ここで得た RateSnapshot を、後段の会計と予算判断の両方で使います。

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

この記事の続きを読む

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

この記事で得られること
anthropic-ratelimit-* ヘッダーから requests と tokens の残量・reset を読み、ジョブ別に消費を会計する実装
平常時に上限の何割まで使うか(目安70%)と、再試行・手動実行・バーストに残す余白を式で決める方法
上限が2倍になっても予算を据え置いた判断と、reset ウィンドウ・トークン上限先行・429 の帰属で踏んだ落とし穴
Stripe による安全な決済 · いつでもキャンセル可能

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-07-11
本番で観測した引数分布からツールスキーマを締め直す
Claudeのツール呼び出しが渡してくる引数を本番で丸ごと記録し、その分布からJSON Schemaにenumやpatternを足して締め直す運用手法を整理しました。緩いスキーマが生む意味のドリフトの実例、段階的に締める手順、締め直し前後の実測値、状況別の推奨まで計測コード付きで紹介します。
API & SDK2026-07-10
夜間バッチが勝手に上位モデルで走っていた — タスクごとにモデル上限を宣言して機械で守る
モデル名をコードに散らすと、いつのまにか安いはずのバッチが上位モデルで走ります。タスクごとの上限を宣言するマニフェストと、既定拒否の解決レイヤ、そして逸脱を検出する差分監査の設計をコード付きでまとめました。
API & SDK2026-07-07
Claude API が本番で突然 429 を返し始めたとき — レート制限の余白をヘッダから計測して枯渇前に絞る運用メモ
429 が出てから慌ててリトライを入れるのは後手です。Claude API のレスポンスヘッダには残量が毎回書かれています。余白を継続計測し、枯渇する前に自分から絞る運用メモを、実装フックと計測ログの読み方でまとめます。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →