Request too large for the API's 32MB request limit
リクエスト全体が32MBを超えた状態。添付した画像やPDFの容量が主因。
エラー文字列
Request too large for the API's 32MB request limit
何が起きているか
APIへ送るリクエスト全体が 32MB の上限を超えました。
⭐ これはトークン数の話ではありません。 「文字数が多い」のではなく「データの容量が大きい」という制限です。ここを取り違えると、/compact を試して直らずに時間を使うことになります。
| コンテキスト長の上限 | リクエストサイズの上限(このエラー) | |
|---|---|---|
| 単位 | トークン | バイト(32MB) |
| 主な原因 | 会話が長い | 添付ファイルが重い |
| 対処 | /compact /clear |
添付を減らす・圧縮する |
何が容量を食っているか
リクエストには、会話の履歴と添付したファイルの中身が含まれます。
| 種類 | 実際の重さ |
|---|---|
| 写真 | スマートフォンの写真 1枚で 3〜8MB。このエラーの主因 |
| UIのスクリーンショット | 4K でも 0.5MB 程度。単体で上限に当たることは少ない |
| 図版の多い資料は数十MBになることがある | |
| 大きなテキストファイル | ログやデータのダンプ |
| 複数ファイルの同時添付 | 個々は小さくても合計で超える |
⚠️ 画像はエンコードされて送られるため、元のファイルサイズより大きくなります。 「25MBだから大丈夫」と思っても超えることがあります。
直し方
1. 何を添付したか振り返る
直前に画像・PDF・大きなファイルを渡していませんか。心当たりがあるものを1つ外して再送すると、原因が確定します。
2. 画像を小さくする
解像度を下げるのが最も効きます。 コードやUIのスクリーンショットなら、横 1600px 程度あれば読み取りには十分です。
Windows(PowerShell・標準機能のみ)
Add-Type -AssemblyName System.Drawing
$src = [System.Drawing.Image]::FromFile("C:\path\to\shot.png")
$w = 1600
$h = [int]($src.Height * $w / $src.Width)
$dst = New-Object System.Drawing.Bitmap($w, $h)
$g = [System.Drawing.Graphics]::FromImage($dst)
$g.InterpolationMode = 'HighQualityBicubic'
$g.DrawImage($src, 0, 0, $w, $h)
$dst.Save("C:\path\to\shot-small.jpg", [System.Drawing.Imaging.ImageFormat]::Jpeg)
$g.Dispose(); $dst.Dispose(); $src.Dispose()
macOS(標準の sips)
sips -Z 1600 shot.png --out shot-small.jpg
Linux(ImageMagick)
convert shot.png -resize 1600x -quality 80 shot-small.jpg
⚠️ 「JPEG にすれば軽くなる」はスクリーンショットには当てはまりません。 実測ではダークなコードエディタの4K画面が PNG 0.54MB に対し JPEG 1.45MB と、2.7倍に増えました。
⭐ 縮小したあとは JPEG、縮小しないなら PNG のまま。 詳しくは Image was too large を参照してください。
3. PDF を分割・軽量化する
必要なページだけを取り出します。
macOS / Linux(qpdf)
qpdf input.pdf --pages . 5-12 -- output.pdf
Ghostscript で圧縮する
gs -sDEVICE=pdfwrite -dCompatibilityLevel=1.4 -dPDFSETTINGS=/ebook \
-dNOPAUSE -dQUIET -dBATCH -sOutputFile=small.pdf input.pdf
⭐ そもそも PDF を渡すより、必要な箇所をテキストで抜き出して渡すほうが速く、正確です。
4. テキストは添付ではなくファイルとして扱う
大きなログやデータを会話に貼り付けたり添付したりせず、リポジトリ内に置いてパスを伝えてください。
logs/error-2026-08-21.log を読んで、認証まわりのエラーだけ抜き出して
必要な部分だけが読み込まれるため、容量もコンテキストも節約できます。
5. サイズを事前に確認する
Windows(PowerShell)
Get-ChildItem "C:\path\to\attachments" |
Select-Object Name, @{n='MB';e={[math]::Round($_.Length/1MB,2)}} |
Sort-Object MB -Descending
macOS / Linux
ls -lhS /path/to/attachments | head
6. 似たエラーとの区別
| 表示 | 対象 | 対処 |
|---|---|---|
Request too large for the API's 32MB request limit |
リクエスト全体 | 添付を減らす |
Image was too large |
画像1枚 | その画像を圧縮する |
PDF too large |
PDF 1件 | 分割・圧縮する |
Prompt is too long |
トークン数 | /compact /clear |
再発防止
- ⭐ スクリーンショットは撮ったまま渡さない。 4K ディスプレイの全画面キャプチャは数MBあります。必要な範囲だけ切り取る習慣をつけると、容量もコンテキストも減ります
- ログやデータはファイルに置いてパスを渡す。会話に貼るのは、短い抜粋だけにする
- 資料を丸ごと渡すより、該当箇所を特定して渡すほうが回答の精度も上がります
- 複数の添付を一度に渡さない。1つずつ渡すほうが、結果的にやり取りが速く終わります