多くの開発者が gpt-image-2 の画像編集インターフェースを実装する際、同じ問題に直面します。images/edit の API リファレンスを隅々まで探しても、「GPT image モデルは最大16枚まで送信可能」という記述は見つかるものの、肝心の「1枚あたりの画像サイズ制限」がどこにも書かれていないのです。制限はないのでしょうか?それともドキュメントの記載漏れでしょうか?
答えは「制限は存在し、明確に定められている」です。1枚あたりの画像サイズは50MB未満である必要があり、対応フォーマットは PNG、WebP、JPG の3種類です。このルールはリファレンスのパラメータ表には記載されておらず、別の「画像生成(Image Generation)ガイド」にひっそりと書かれています。このドキュメントの分断が、多くの開発者を迷わせる原因となっています。
本記事では、gpt-image-2 API の画像アップロード制限について、枚数、サイズ、フォーマット、マスクのルール、解像度の制約までを網羅的に解説します。さらに、50MBという上限以上に重要な「なぜ50MBギリギリの画像を送信すべきではないのか」という実戦的な問題についても深掘りします。

gpt-image-2 API 画像アップロード制限:公式仕様まとめ
まずは結論からお伝えします。gpt-image-2 は v1/images/edits エンドポイントを通じて画像を受け取ります。公式の制限事項は以下の通りです。
gpt-image-2 画像アップロード制限チェックリスト
| 制限項目 | 公式仕様 | ドキュメント出典 |
|---|---|---|
| 1リクエストあたりの最大枚数 | 16枚(GPT image シリーズモデル) | API Reference:images/edit |
| 1枚あたりの画像サイズ | 50MB未満 | 画像生成ガイド |
| 対応フォーマット | PNG、WebP、JPG | 画像生成ガイド |
| 送信方法 | image_url または file_id のいずれか |
API Reference:images/edit |
| マスク(mask) | 元画像と同フォーマット・同サイズ、50MB未満、アルファチャンネル必須 | 画像生成ガイド |
| 1回あたりの生成数 n | 1〜10枚 | API Reference:images/edit |
つまり、理論上は1回のリクエストで50MBに近い画像を最大16枚まで送信可能です。しかし、「理論上の上限」と「エンジニアリングとして推奨される使い方」は別物です。これについては後ほど詳しく解説します。
ここで一つ、多くの人が陥りやすい罠があります。新版 API の images パラメータはオブジェクトの配列を受け取り、各オブジェクトで image_url または file_id のいずれかを提供します。file_id は Files API で事前にアップロードしたものを使用するため、再利用する素材に適しています。一方、image_url は公開 URL または base64 データ URL をサポートしており、使い捨ての呼び出しに適しています。どちらの方法でも50MBの制限は共通です。
🎯 検証のヒント:自分の画像が制限に引っかかるか不安な場合は、実際にリクエストを送ってエラーメッセージを確認するのが最も確実です。APIYI (apiyi.com) の OpenAI 互換インターフェース経由でテストを行うことをお勧めします。プラットフォームのログパネルからリクエストサイズやエラーの詳細を直接確認できるため、公式 API を直接叩くよりも効率的にデバッグが可能です。
gpt-image-2 のアップロードサイズがドキュメントで「見つからない」理由
冒頭の疑問に戻りましょう。なぜリファレンスページには「16枚」としか書かれておらず、サイズについては触れられていないのでしょうか?これはOpenAIのドキュメント構造における設計上の判断です。images/edit のリファレンスページは「パラメータスキーマ」に基づいて構成されています。images パラメータはスキーマレベルでは単なるオブジェクトの配列であり、枚数の上限はその配列の制約として記述されています。一方で、ファイルサイズやフォーマットは「実行時の検証」に該当するため、画像生成ガイドの記述的なテキストの中に分類されているのです。
画像編集機能を実装する前に、同様に「ガイドの中に隠れている」以下のルールも確認しておくことをお勧めします。
- マスク(mask)の3つの要件:編集対象の画像と同じフォーマット、同じサイズであること。ファイルサイズが50MB以下であること。そして、必ずアルファチャンネルを含んでいること。JPGをマスクとして使用してエラーになるケースが非常に多いですが、これはJPGにアルファチャンネルがないためです。
- 解像度は自由ではない:gpt-image-2 の
sizeパラメータはカスタム解像度をサポートしていますが、厳しい制約があります。最長辺が3840px以下であること、縦横ともに16pxの倍数であること、アスペクト比が3:1以下であること、そして総画素数が655,360から8,294,400の範囲内である必要があります。 - 入力画像も課金対象:editリクエスト内の参照画像は、画像入力トークンとして課金されます。
input_fidelity: highの場合、消費される入力トークンが大幅に増加します。
gpt-image-2 の解像度と size パラメータの制約
| 制約項目 | ルール | 例 |
|---|---|---|
| 最長辺 | ≤ 3840px | 3840×2160(4K 横長)は利用可能 |
| 辺の整列 | 縦横ともに16pxの倍数 | 1024、1536、2048 はすべて有効 |
| アスペクト比 | ≤ 3:1 | 2048×1152 は有効、3072×1024 は有効 |
| 総画素数 | 655,360 – 8,294,400 | 768×854 未満のサイズは拒否されます |
| 一般的なプリセット | 1024×1024 / 1536×1024 / 2048×2048 / 3840×2160 | 縦長も同様に反転 |

もし業務で頻繁に解像度を切り替える必要がある場合は、この制約表をリクエスト前のローカル検証として実装し、クライアント側で不正なサイズを遮断することをお勧めします。APIからの400エラーを待つよりも、往復回数を1回減らすことができます。APIYI(apiyi.com)のドキュメントセンターにも gpt-image-2 のパラメータ検証リストをまとめていますので、実装の参考にしてください。
gpt-image-2 実践:50MBは上限、1.5MBがベスト
50MBというハード上限を知った上で、より重要なのは「実際のエンジニアリングにおいて、どの程度のサイズの画像を送信すべきか?」という点です。私たちの推奨は、1枚あたり1.5MB程度に抑え、最大でも5MBを超えないようにすることです。これには根拠が3つあります。
第一に、Base64による肥大化です。Data URL形式で画像を埋め込む場合、Base64エンコードによってデータサイズは約33%増加します。40MBの元画像はエンコード後に約53MBとなり、JSON構造と合わせるとリクエストボディの制限を直接超えてしまう可能性があります。16枚すべてをBase64で埋め込むと、この問題は16倍に増幅されるため、大容量素材は必ず file_id を使用した事前アップロード方式に変更してください。
第二に、転送とデコードの所要時間です。5MBを超えると、アップロード時間とサーバー側のデコード時間が非線形に増加し、ネットワークの変動時にタイムアウトやリトライが発生しやすくなり、結果として全体の画像生成速度を低下させます。1.5MB程度の画像であれば、一般的な家庭用ブロードバンド環境で1〜2秒でアップロードが完了し、安定性と品質のバランスが最適です。
第三に、画質向上の収穫逓減です。gpt-image-2 は入力画像を処理する際に内部で前処理を行うため、入力解像度が出力解像度を大幅に上回っている場合、余分な画素はほとんど無駄になります。最長辺3840pxで2MB以内に圧縮されたJPGと、40MBのロスレスPNGでは、編集効果において知覚できる差はほとんどありませんが、コストと時間は桁違いに異なります。
gpt-image-2 画像サイズの実践アドバイス
| 元画像の状態 | 推奨される処理 | 期待される効果 |
|---|---|---|
| < 1.5MB | そのままアップロード | 最高の速度と安定性 |
| 1.5MB – 5MB | そのまま送信可能、JPG/WebPへの変換を推奨 | 許容範囲内の速度 |
| 5MB – 20MB | 最長辺 ≤ 3840px + 品質 85 に圧縮 | 画質はほぼ無劣化、時間は大幅短縮 |
| 20MB – 50MB | 必須圧縮、file_id アップロードに変更 | Base64肥大化による制限超過を回避 |
| > 50MB | ハード上限超過、必須圧縮 | さもないと直接エラーになります |

💡 バッチ処理のヒント:ECサイトの背景削除や一括スタイル変換といった高並列処理が必要なシーンでは、アップロード前に sharp や Pillow を使用して「最長辺3840px + JPG品質85」に統一して事前圧縮することをお勧めします。APIYI(apiyi.com)の企業顧客事例でも検証済みですが、このステップを踏むことで、editリクエストのエンドツーエンドの所要時間を平均40%以上短縮でき、画質に関するクレームもゼロでした。
gpt-image-2 API クイックスタート:複数画像編集のコード例
gpt-image-2 は標準の OpenAI インターフェースプロトコルに準拠しています。以下は、複数の参照画像を含む最もシンプルな編集例です。APIYI を経由する場合、base_url を書き換えるだけで利用可能です。
import base64
from openai import OpenAI
client = OpenAI(
api_key="sk-your-apiyi-key",
base_url="https://api.apiyi.com/v1" # APIYI 統一インターフェース
)
def to_data_url(path):
with open(path, "rb") as f:
b64 = base64.b64encode(f.read()).decode()
return f"data:image/jpeg;base64,{b64}"
result = client.images.edit(
model="gpt-image-2",
image=[to_data_url("product.jpg"), to_data_url("style-ref.jpg")],
prompt="製品画像を参考画像のネオンサイバー風に融合させてください。製品の主体は維持してください",
input_fidelity="high", # 高忠実度で詳細を保持、入力トークン消費量が増加
size="2048x2048",
quality="high"
)
print(result.data[0].b64_json[:64]) # base64 エンコードされた結果画像を出力
いくつかのパラメータのポイント:input_fidelity を high に設定すると、顔やロゴなどの詳細な保持度が大幅に向上しますが、その分画像入力のトークン料金が増加します。quality と size は出力コストを決定する主要な要素です。n パラメータは一度に最大 10 枚まで生成可能です。料金面では、gpt-image-2 はトークン単位で課金されます。テキスト入力は $5/M、画像入力は $8/M(キャッシュヒット時は $2/M)、画像出力は $30/M です。1 枚あたりの画像に換算すると、1024×1024 の low 設定で約 $0.006、medium 設定で約 $0.05、high 設定で約 $0.21 となり、出力側がコストの大部分を占めます。

また、公式のレート制限はアカウントレベルによって異なります。Tier 1 は 5 枚/分、Tier 4 は 150 枚/分、Tier 5 は 250 枚/分です。新規アカウントはレベルが低いため、バッチ処理を行うと制限に達しやすくなります。APIYI (apiyi.com) のような集約プラットフォーム経由で呼び出すことで、単一アカウントの制限を回避でき、大量の並列生成が必要な本番環境に適しています。
gpt-image-2 と旧世代モデルのアップロード制限の差異
プロジェクトを gpt-image-1 や DALL·E 2 から移行する場合、いくつかの世代間の違いに注意が必要です。最大の変更点は DALL·E 2 から GPT image シリーズへの移行です。DALL·E 2 の edit インターフェースは正方形の PNG 1 枚のみを受け付け、4MB 未満である必要がありましたが、GPT image シリーズでは 16 枚、50MB、3 種類のフォーマットまで緩和されました。多くの古いプロジェクトでハードコードされていた「PNG + 4MB 圧縮」のプリプロセスロジックは、移行後は大幅に簡略化できます。
gpt-image-2 の gpt-image-1 からのアップグレードは、主に解像度とコストに現れています。gpt-image-1 は 1024×1024、1536×1024、1024×1536 の 3 種類の固定出力のみでしたが、gpt-image-2 はカスタム解像度を解放し、最大 3840px の長辺を持つ 4K 出力まで対応しました。価格面では、gpt-image-2 の画像入力は $10/M から $8/M に、画像出力は $40/M から $30/M に値下げされ、さらに $2/M のキャッシュヒット枠が追加されたため、同じ参照画像を使用するシナリオでのコストが大幅に削減されました。
gpt-image-2 と歴代モデルのアップロード制限比較
| 比較項目 | DALL·E 2 | gpt-image-1 | gpt-image-2 |
|---|---|---|---|
| 入力画像数 | 1 枚 | 最大 16 枚 | 最大 16 枚 |
| 1 枚あたりの上限 | < 4MB | < 50MB | < 50MB |
| 入力フォーマット | 正方形 PNG のみ | PNG/WebP/JPG | PNG/WebP/JPG |
| 出力解像度 | 固定正方形 | 3 種類の固定サイズ | カスタム、長辺 3840px |
| 画像出力価格 | 枚数課金 | $40/M トークン | $30/M トークン(入力キャッシュ $2/M) |
| input_fidelity | 非対応 | 対応 | 対応、高忠実度で詳細がより鮮明 |
コード移行時は基本的に model パラメータを変更するだけで済みますが、解像度の検証や圧縮戦略を本記事の制約表に合わせて更新することをお勧めします。移行効果を検証してから本番コードを変更したい場合は、APIYI (apiyi.com) 上で同じ素材を使用して両方のモデルを呼び出し、編集品質や実際の課金差を直接比較してみてください。
gpt-image-2 画像アップロードに関するFAQ
Q1:gpt-image-2 でアップロードできる画像サイズの上限は?
ハード上限は 50MB で、PNG、WebP、JPG 形式に対応しています。この制限は OpenAI の画像生成利用ガイドに記載されており、images/edit のリファレンスパラメータ表には含まれていないため、リファレンスページだけを見ていると見落としがちです。実運用では 1.5MB〜5MB 程度に抑えるのが、最もスムーズな体験を提供できます。
Q2:16枚という画像枚数制限はどう機能しますか?
images パラメータは最大16個の画像オブジェクトを受け取ることができ、各オブジェクトは image_url または file_id で画像を1枚指定します。モデルは複数の画像を統合的な参照情報として扱うため、「製品画像 + スタイル画像 + 構図の参照」といった組み合わせ編集に最適です。なお、16枚は入力の上限であり、出力枚数は n パラメータで制御され、上限は10枚となります。
Q3:マスク(mask)で「invalid mask」というエラーが出る原因は?
そのほとんどがアルファチャンネルの問題です。マスクは編集対象の画像と同じ形式・同じサイズである必要があり、かつアルファチャンネルを含んでいる必要があります。JPG はアルファチャンネルをサポートしていないため、マスクには必ず PNG を使用してください。透明な領域が「再描画を許可する」範囲となり、不透明な領域はそのまま維持されます。
Q4:base64 アップロードと file_id アップロードの使い分けは?
小さな画像(5MB未満)や一度きりのリクエストであれば、base64 データ URL が最も手軽です。大きな画像や繰り返し使用する素材の場合は、Files API で事前にアップロードして file_id を取得しましょう。これにより、base64 エンコードによる約33%のデータ容量増加を回避でき、リクエストをまたいで再利用も可能です。どちらが良いか迷った場合は、APIYI (apiyi.com) のコンソールで両方の方式を試して、実際の処理時間を比較してから決定することをお勧めします。
まとめ:gpt-image-2 アップロード制限の3つの重要数字
冒頭の疑問に戻りますが、gpt-image-2 画像編集 API のアップロード制限は、以下の3つの数字に集約されます。16枚(リファレンスに記載されている入力画像数の上限)、50MB(利用ガイドに記載されている1枚あたりのサイズ上限)、1.5MB(エンジニアリング上の推奨サイズ)。ドキュメントで枚数とサイズが別々のページに記載されていることが、「16枚という制限しか見えない」という混乱の原因となっています。
実装上のアドバイスはシンプルです。アップロード前に長辺を 3840px 以内にリサイズし、JPG の画質を 85 前後に圧縮すること。マスクには常にアルファチャンネル付きの PNG を使用すること。大きな素材は file_id を経由すること。これら3つの処理をリクエスト前の標準的な前処理として組み込めば、アップロード関連のエラーのほとんどを回避できるはずです。
国内から安定して gpt-image-2 を呼び出したい場合や、レート制限を本番環境レベルまで引き上げたい場合は、APIYI (apiyi.com) の統合インターフェースをご利用ください。OpenAI SDK のネイティブな書き方と互換性があるため、base_url を1行書き換えるだけで簡単に移行可能です。
参考資料:OpenAI API Reference: developers.openai.com/api/reference/resources/images/methods/edit
著者: APIYI Team
AI 大規模言語モデル API のアグリゲーションとベストプラクティスに注力しています。モデルの評価や導入ガイドについては、APIYI (apiyi.com) をご覧ください。
