CLAUDE LABEN
OPUS — Claude Opus 4.7が一般提供になりました。ソフトウェアエンジニアリングと長時間コーディングが改善し、画像を高解像度で扱えるようになりましたAPIKEY — ConsoleでAPIキーに有効期限を設定できるようになりました。7日以上のキーは失効前にメールで通知されますREFLECT — Settings > Reflectの月次ふりかえりで、よく触れた話題や最も活発だった時間を確認できます(beta)M365 — Microsoft 365コネクタが書き込みに対応し、メール作成・カレンダー・OneDrive/SharePointのファイル操作を任せられますCOWORK — CoworkがWebとモバイルへ広がり、ChatとCoworkが一つのホームにまとまりましたDESIGN — Anthropic LabsのClaude Designで、設計・プロトタイプ・スライド・1枚資料をClaudeと共同制作できますOPUS — Claude Opus 4.7が一般提供になりました。ソフトウェアエンジニアリングと長時間コーディングが改善し、画像を高解像度で扱えるようになりましたAPIKEY — ConsoleでAPIキーに有効期限を設定できるようになりました。7日以上のキーは失効前にメールで通知されますREFLECT — Settings > Reflectの月次ふりかえりで、よく触れた話題や最も活発だった時間を確認できます(beta)M365 — Microsoft 365コネクタが書き込みに対応し、メール作成・カレンダー・OneDrive/SharePointのファイル操作を任せられますCOWORK — CoworkがWebとモバイルへ広がり、ChatとCoworkが一つのホームにまとまりましたDESIGN — Anthropic LabsのClaude Designで、設計・プロトタイプ・スライド・1枚資料をClaudeと共同制作できます
記事一覧/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 API114413request 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_fitFalse を返したら、送信を止めて分割へ回します。413 を「受け取ってから対処する」のではなく、「起こさない」 ための最初の関門です。

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

この記事の続きを読む

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

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

この記事を購入する

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

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

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

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

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

関連記事

API & SDK2026-06-15
Anthropic API のベータヘッダを一元管理し、機能の引退でバッチを止めない設計
anthropic-beta ヘッダを散らばったまま使うと、ベータ機能の引退や GA 昇格でバッチ全体が 400 で落ちます。ケイパビリティ登録簿と起動時プリフライトで、機能の世代交代に耐える小さな抽象化を実装します。
API & SDK2026-07-07
Claude API が本番で突然 429 を返し始めたとき — レート制限の余白をヘッダから計測して枯渇前に絞る運用メモ
429 が出てから慌ててリトライを入れるのは後手です。Claude API のレスポンスヘッダには残量が毎回書かれています。余白を継続計測し、枯渇する前に自分から絞る運用メモを、実装フックと計測ログの読み方でまとめます。
API & SDK2026-07-01
Claude API のドキュメント抽出が「自信満々に間違える」とき — 沈黙する誤りを不変条件で捕まえる運用メモ
請求書や契約書の構造化抽出で一番怖いのは、クラッシュではなく「スキーマも通り信頼度も高いのに値だけ間違っている」沈黙の誤りです。不変条件・二段抽出・フィールド単位の誤り率で運用する実装メモを共有します。
📚RECOMMENDED BOOKS
大規模言語モデル入門
山田育矢
LLM開発
生成AIプロンプトエンジニアリング入門
我妻幸長
プロンプト
Claude CodeによるAI駆動開発入門
平川知秀
AI駆動開発
※ アフィリエイトリンクを含みます
もっと見る →