◉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-12上級

Claude API の 413 request too large を設計で避ける — 送信前サイズ見積もりと分割の実装

長文と画像と tool_result を1リクエストに詰めすぎると Claude API は 413 request too large で落ちます。32MB の壁・base64 の膨張・処理段階で起きる隠れた上限を実測し、送信前にサイズを見積もって安全に分割する設計をコード付きでまとめました。

Claude API127413request too large本番運用36レジリエンス3

✦ プレミアム記事

夜間バッチが 413 で止まっていることに気づいたのは、ある朝ログを開いたときでした。個人開発で運営している壁紙アプリのアートワークをまとめて Claude Vision に渡し、タグ付けする処理が、前日から一枚も進んでいない。エラーは request_too_large。トークン数はまだ余裕があるはずなのに、なぜ弾かれるのか。原因を追ううちに見えてきたのは、Claude API のリクエストには「トークン」とは別の「バイト」の壁があるという、公式ドキュメントの隅にしか書かれていない事実でした。

その 413 を運用から消すために私が組んだ設計を、ここでお伝えします。要点は三つ。送信前にバイトを見積もること。413 が「どこで」起きたのかを見分けること。そして、リクエストを壊さずに分割する優先順位を決めておくこと。

413 はトークンの話ではない

Claude API を使い込むと、私たちはつい「コンテキストウィンドウに収まるか」だけを気にするようになります。ところが request_too_large(HTTP 413)は、トークン数とは独立した リクエストボディの物理的なサイズ で判定されます。

標準の Messages エンドポイントでは、リクエスト全体で 32MB が上限です。これを超えると、モデルが一文字も読む前に弾かれます。長文だけを送っているうちは滅多に届かない数字ですが、画像や tool_result を混ぜた瞬間に景色が変わります。

見落としやすいのが base64 の膨張です。画像やファイルを inline で送るとき、私たちはバイナリを base64 に変換します。この変換で、実データは 約1.33倍 に膨らみます。手元で 4MB の PNG が、リクエスト上では 5.3MB を占める。数枚重なれば、体感よりずっと早く 32MB に届いてしまいます。

詰め込むもの効いてくる上限体感とのずれ
長文テキストのみ主にトークン32MB にはまず届かない
複数画像(inline base64)32MB のバイト上限base64 で1.33倍に膨らむ
大きな tool_result32MB のバイト上限会話履歴に累積して膨らむ
複数の大きな PDF処理段階の隠れた上限32MB 未満でも落ちることがある

送信前にバイトを見積もる

一番効いたのは、リクエストを組み立て終えた直後、送信する前に 実バイトを自分で測る ことでした。SDK に投げてから 413 が返ってくるのを待つのではなく、こちらから先回りして分岐する。

Python の例を示します。メッセージ配列をシリアライズして、実際に送られる JSON のバイト数を測る関数です。

import json
 
# 標準 Messages エンドポイントのリクエスト上限(安全側に少し余白を残す)
MAX_REQUEST_BYTES = 32 * 1024 * 1024        # 32MB
SAFETY_MARGIN = 512 * 1024                   # 0.5MB の余白
BUDGET = MAX_REQUEST_BYTES - SAFETY_MARGIN
 
 
def request_byte_size(payload: dict) -> int:
    """SDK が送るのとほぼ同じ形でシリアライズしてバイト数を測る。"""
    # ensure_ascii=False で日本語を実バイトに近づける(UTF-8 でカウント)
    body = json.dumps(payload, ensure_ascii=False, separators=(",", ":"))
    return len(body.encode("utf-8"))
 
 
def will_fit(payload: dict) -> tuple[bool, int]:
    size = request_byte_size(payload)
    return size <= BUDGET, size

ここでのポイントは二つあります。ひとつは separators=(",", ":") で余白を削り、実際に送られる形に近づけること。もうひとつは UTF-8 でエンコードしてから測ること。日本語のプロンプトは1文字が3バイトになりますから、文字数ではなくバイト数で見なければ見積もりが甘くなります。

will_fit が False を返したら、送信を止めて分割へ回します。413 を「受け取ってから対処する」のではなく、「起こさない」 ための最初の関門です。

✦

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

この記事の続きを読む

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

この記事で得られること
✦リクエスト全体の 32MB 上限と、base64 で約1.33倍に膨らむ画像・tool_result の実バイトを送信前に見積もる関数
✦HTTP 転送前に落ちる 413 と、Anthropic 側の処理段階で落ちる「隠れた上限」の見分け方と、それぞれの回避策
✦1リクエストを壊さずに分割する優先順位(画像の縮小 / Files API への退避 / ドキュメントの分割 / バッチ化)の判断表
Stripe による安全な決済 · いつでもキャンセル可能
✦

この記事を購入する

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

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

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

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

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

関連記事

⬡ 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の活用・ストリーミング最適化・典型的な落とし穴の回避策まで、動作するコードと実測値で解説します。
⬡ API & SDK2026-04-30
Claude API で多言語翻訳 SaaS を本番運用する設計ガイド — 用語集・スタイル・ドメイン適応の実装
多言語翻訳SaaSをClaude APIで本番運用するための設計を通しで解説します。タグやプレースホルダーを失わせない前処理、用語集の注入と強制、スタイルガイドによるトーン制御、Few-shotでのドメイン適応、品質ゲートとコスト最適化まで、具体的なコードと運用ノウハウでまとめました。