ChatGPT

GPT Image APIの使い方|gpt-image-2の実装とgpt-image-1終了への移行手順

GPT Image APIの使い方|gpt-image-2の実装とgpt-image-1終了への移行手順

OpenAIの画像生成API(GPT Image API)は、2026年に入って世代交代が進行中です。現行モデルは gpt-image-2 で、長く標準だった gpt-image-1 には2026年10月23日という停止日が設定されました。2026年前半までに書かれた実装記事や社内コードは gpt-image-1 を前提にしているものが多く、そのままコピーすると10月23日以降は動かなくなります。この記事は公式ドキュメントとAPIリファレンスの現行版だけを根拠に、モデルの選び方、最小実装、パラメータ仕様、料金、そして移行の期限を整理します。

まとめ

  • 現行モデルは gpt-image-2(既定スナップショット gpt-image-2-2026-04-21)。新規実装はこれを指定します。
  • gpt-image-1 は2026年10月23日、gpt-image-1.5gpt-image-1-minichatgpt-image-latest は2026年12月1日にAPIから削除されます。移行先はいずれも gpt-image-2 です。
  • 実装で使うエンドポイントは生成が v1/images/generations、編集が v1/images/edits の2本。GPT Imageモデルは常にbase64で画像を返し、response_format による URL 受け取りには対応しません。
  • Images APIに seed パラメータはありません。同じプロンプトで同じ絵を再現する手段は用意されていないため、成果物はサーバ側で保存する前提で設計します。
  • GPT Imageモデルを使うには、開発者コンソールでの組織認証(API Organization Verification)が必要になる場合があります。

以下、モデルの選び分けから実装の詰まりどころまで順に見ていきます。

GPT Image APIのモデル構成と2026年の移行期限

gpt-image-2への世代交代とgpt-image-1の2026年10月23日削除

OpenAIはモデルページで gpt-image-2 を「State-of-the-art image generation model」、gpt-image-1gpt-image-1.5 を「Our previous image generation model」と位置づけています。単なる新旧併存ではなく、旧世代には明確な停止日が設定されています。

モデルID 位置づけ API削除日 移行先
gpt-image-2 現行 告知なし 移行不要
gpt-image-1 旧世代 2026年10月23日 gpt-image-2
gpt-image-1.5 旧世代 2026年12月1日 gpt-image-2
gpt-image-1-mini 旧世代(低コスト版) 2026年12月1日 gpt-image-2
chatgpt-image-latest 旧世代 2026年12月1日 gpt-image-2
dall-e-2 / dall-e-3 削除済み 2026年5月12日 gpt-image-2

注意すべきは、廃止の順番が版番号どおりではない点です。gpt-image-1 の停止(10月23日)が gpt-image-1.5gpt-image-1-mini の停止(12月1日)より先に来ます。gpt-image-1 は2026年4月22日告知の旧モデルスナップショット一括廃止に含まれ、1.5系とmini系は6月2日告知の別ロットだからです。「新しいほうが長く使える」という直感で移行計画を立てると、本番が先に落ちます。gpt-image-1 のリテラルが残っている箇所から順に潰してください。

モデル別の1枚あたり料金と選び分け

公式の料金計算機が代表的な3サイズで示す1枚あたりの価格は次のとおりです(単位はドル)。gpt-image-1.5gpt-image-1gpt-image-1-mini の3モデルは1枚単位の実価格ですが、gpt-image-2 はトークン課金のため、同じサイズで比較するための参考値である点に注意してください。

モデル 品質 1024×1024 1024×1536 1536×1024
gpt-image-2 low 0.006 0.005 0.005
gpt-image-2 medium 0.053 0.041 0.041
gpt-image-2 high 0.211 0.165 0.165
gpt-image-1.5 low 0.009 0.013 0.013
gpt-image-1.5 medium 0.034 0.05 0.05
gpt-image-1.5 high 0.133 0.2 0.2
gpt-image-1 low 0.011 0.016 0.016
gpt-image-1 medium 0.042 0.063 0.063
gpt-image-1 high 0.167 0.25 0.25
gpt-image-1-mini low 0.005 0.006 0.006
gpt-image-1-mini medium 0.011 0.015 0.015
gpt-image-1-mini high 0.036 0.052 0.052

世代交代で全部が安くなったわけではありません。gpt-image-2 の low は gpt-image-1 の約半額ですが、high は1枚0.211ドルと gpt-image-1 の0.167ドルを上回ります。影響が大きいのは gpt-image-1-mini からの移行です。サムネイル用途の low なら mini 0.005ドルに対し gpt-image-2 0.006ドルで差は2割に収まりますが、medium は mini 0.011ドルに対し0.053ドルと約5倍になります。miniのmediumを常用していた場合、12月1日以降は品質を low に落として単価を吸収するか、生成回数そのものを見直すかの判断が要ります。ここを詰めずにモデルIDだけ差し替えると、月次のAPI費用が跳ねます。

もう一点、非正方形のほうが安い場合がある点も見落とされがちです。gpt-image-2 の medium では1024×1024が0.053ドル、1024×1536が0.041ドルと、画素数の多い縦長のほうが安くなっています。正方形に統一すればコストが下がるとは限りません。

画像生成の最小実装とAPIキーの準備

組織認証とAPIキーの取得

APIキーを発行しただけでは弾かれることがあります。公式ガイドは、gpt-image-2gpt-image-1.5gpt-image-1gpt-image-1-mini を含むGPT Imageモデルを責任を持って利用するため、開発者コンソールから組織認証(API Organization Verification)の完了が必要になる場合があると明記しています。テキスト生成が通るキーでも画像生成だけ拒否されうるので、実装より先に組織設定の画面を開いてください。

images.generateの最小コードとbase64レスポンスの保存

Python SDKでの最小構成は次のとおりです。モデルIDに gpt-image-2 を指定し、返ってきたbase64文字列をデコードしてファイルに書き出します。

from openai import OpenAI
import base64

client = OpenAI()

prompt = "A children's book drawing of a veterinarian using a stethoscope to listen to the heartbeat of a baby otter."

result = client.images.generate(model="gpt-image-2", prompt=prompt)

image_base64 = result.data[0].b64_json
image_bytes = base64.b64decode(image_base64)

with open("otter.png", "wb") as f:
    f.write(image_bytes)

クライアントの初期化やAPIキーの読み込み方は、OpenAI Python SDKの使い方|インストールから最新クライアント・Responses APIまでで扱っている手順と共通です。1回のリクエストで複数枚が必要なら n パラメータを指定します(既定は1枚)。

v1/images/generations が受け取るボディパラメータは promptbackgroundmodelmoderationnoutput_compressionoutput_formatpartial_imagesqualityresponse_formatsizestreamstyleuser の14個です。この一覧に無いキーは、他社APIや旧DALL-E時代の記憶と混ざっている可能性を疑ってください。prompt の最大長はGPT Imageモデルで32,000文字あり、dall-e-2 の1,000文字・dall-e-3 の4,000文字とは桁が違います。長い指示書をそのまま渡す設計が現実的になっています。

なお Images API には3本目のエンドポイントとして v1/images/variations がありますが、リファレンスに dall-e-2 専用と明記されており、GPT Imageモデルでは使えません。実装で選択肢に入るのは生成と編集の2本です。

出力を制御するパラメータ

gpt-image-2のサイズ制約

gpt-image-2 は固定サイズの選択肢ではなく、条件を満たす任意の解像度を size に受け付けます。条件は4つです。

  • 長辺が3840px以下
  • 縦横とも16の倍数
  • 長辺と短辺の比が3:1を超えない
  • 総画素数が655,360以上8,294,400以下

よく使われる値として1024×1024・1536×1024・1024×1536・2048×2048・2048×1152・3840×2160・2160×3840が挙げられており、既定は auto です。ただし総画素数が3,686,400(2560×1440相当)を超える出力は実験的な扱いとされています。4Kを本番の常用パスに据えるのは時期尚早で、確定した仕様として顧客に約束すべきではありません。

この自由度は gpt-image-2 固有です。削除までの期間 gpt-image-1 を使い続ける場合、指定できるのは標準サイズの1024×1024・1536×1024・1024×1536の3種で、任意解像度を前提にしたコードは弾かれます。qualitylowmediumhighauto(既定)の4値です。まず low で構図を詰め、最終出力だけ medium 以上に上げる進め方が、前掲の単価差からみて素直です。

出力形式・圧縮・背景透過

既定の出力形式は png で、jpegwebp も選べます。jpegwebp では output_compression に0から100の値を指定して圧縮率を制御できます。レイテンシを気にする場面では、公式ガイドが jpeg のほうが png より速いと明記しているので、こちらを優先します。

背景透過は backgroundtransparent を指定しますが、gpt-image-2 では現時点でプレビュー扱いです。形式は pngwebp のみで、jpeg との組み合わせはサポートされません。透過アセットの自動生成を製品機能として組み込むなら、プレビューという但し書きを前提に、失敗時の代替パスを用意しておくべきです。

画像内テキスト描画の到達点と残る限界

日本語圏で期待が集まりやすいのが画像内の文字描画です。公式の制限事項は「Although significantly improved, the model can still struggle with precise text placement and clarity」と記しており、大幅に改善したことと、正確な配置や鮮明さでは依然つまずきうることの両方を認めています。バナーやサムネイルの文言を機械生成する用途では、生成結果を無検査で配信する運用は避け、文字部分だけ後段で重ねるか、目視確認を挟む前提で組むのが安全です。

既存画像の編集とマスク指定

マスク画像の要件

部分編集は v1/images/edits にマスク画像を渡して行います。実装が落ちる原因はほぼマスクの作り方に集中しており、要件は明確です。編集対象の画像とマスクは同じ形式・同じサイズで、いずれも50MB未満である必要があります。そしてマスク画像はアルファチャンネルを含んでいなければなりません。白黒2値のPNGを作って渡しただけでは足りず、画像編集ツールで書き出す場合はアルファチャンネル付きで保存されているかを必ず確認してください。

from openai import OpenAI
import base64

client = OpenAI()

result = client.images.edit(
    model="gpt-image-2",
    image=open("sunlit_lounge.png", "rb"),
    mask=open("mask.png", "rb"),
    prompt="A sunlit indoor lounge area with a pool containing a flamingo",
)

image_bytes = base64.b64decode(result.data[0].b64_json)
with open("composition.png", "wb") as f:
    f.write(image_bytes)

編集エンドポイントは image に複数枚を配列で渡すこともでき、GPT Imageモデルでは最大16枚まで受け付けます。商品写真を束ねて1枚のセット画像に合成する、といった使い方ができます。

input_fidelityのgpt-image-2での扱い

入力画像のディテールをどれだけ保持するかを決める input_fidelity は、編集エンドポイントのパラメータ一覧に highlow の2値で載っています。ただし gpt-image-2 では指定してはいけません。公式ガイドは、このモデルがすべての画像入力を自動的に高忠実度で処理するため、APIが値の変更を許可しないと説明しています。旧モデル向けのサンプルコードを流用すると、ここが不要なパラメータとして残りがちです。副作用として、参照画像を含む編集リクエストでは画像入力トークンが増えるため、編集主体のワークロードでは生成のみの場合よりコストが上振れします。

Image APIとResponses APIの使い分け

画像生成の入口は2つあります。1枚のプロンプトから1枚を生成または編集するだけなら Image API が最短です。会話の流れの中で画像を出し、対話で修正を重ねる体験を作るなら Responses API の画像生成ツールを使います。後者の利点は、複数ターンにわたる高忠実度の編集と、画像をバイト列ではなくファイルIDで渡せる入力の柔軟さです。生成結果には revised_prompt フィールドが付き、メインラインのモデルがプロンプトをどう書き換えたかを確認できます。

構造上の違いも押さえておいてください。Image APIでは開発者がGPT Imageモデルを直接選びますが、Responses APIでは gpt-5 以降のメインラインモデルを選び、画像生成ツールが内部でGPT Imageモデルを選択します。モデルページの対応表では gpt-image-2 の Responses エンドポイントが「Not supported」、gpt-image-1 は「Supported」と記載が分かれているため、モデルIDを直接指定する実装を組む前に対象モデルのページを確認してください。課金面では、Responses API 経由の場合、画像生成コストに加えてメインラインモデルのトークン使用量も乗ります。単純な枚数生成でコストを比較すると Image API のほうが安く収まります。Responses API 自体の設計思想はOpenAI Responses APIとは|Chat Completions APIとの違いと移行判断で整理しています。

公式ドキュメントに書いてあるのに見落とされる仕様

seedパラメータの不在と再現性の代替手段

「同じシード値を渡せば同じ画像を再現できる」という説明を国内の解説記事でしばしば見かけますが、これは事実ではありません。APIリファレンスの v1/images/generationsv1/images/edits のボディパラメータ一覧に seed は存在せず、画像生成ガイド本文にも seed という語は1度も出てきません。Stable Diffusion系のワークフローの記憶が持ち込まれた誤りだと考えられます。

実務上の帰結は明確です。GPT Image APIでは生成結果の再現を乱数シードで担保できないので、気に入った画像は必ず生成時点でオブジェクトストレージに保存してください。後から同じプロンプトを投げ直せば取り戻せる、という設計にしてはいけません。一貫したキャラクターやブランド要素が必要な場合は、再生成ではなく、確定した画像を参照画像として images.edit に渡す方向で組み立てます。

response_formatのGPT Imageモデル非対応とURL受け取りの代替

response_format はパラメータ一覧に載っているため、url を指定すれば画像URLが返ると誤解されがちです。リファレンスの説明文は、これが dall-e-2dall-e-3 で返される形式を指定するもので、GPT Imageモデルではサポートされず常にbase64エンコードされた画像が返ると明記しています。そのDALL-E系も2026年5月12日にAPIから削除済みで、現行モデルでURL受け取りを選ぶ手段はありません。この経緯はdall-e の最新はどうなった?OpenAI画像生成の現在地(DALL-E 3廃止・gpt-image-2へ)で詳しく追っています。

アプリケーション側は、base64をデコードして自前でストレージに置き、そのURLを配信する前提で設計します。生成レスポンスをそのままフロントへ流すと画像1枚あたり数百KBから数MBの文字列が乗るため、API Gatewayのレスポンスサイズ上限やログ基盤を先に確認しておくべきです。

partial_imagesは1枚につき100トークンの追加課金

生成途中の画像を段階的に受け取るストリーミングは、stream を有効にしたうえで partial_images に0から3の値を指定します。0なら最終画像だけ、1以上なら途中経過が届きます。指定した枚数が必ず届くとは限らず、生成が速く終われば少なくなります。

stream = client.images.generate(
    prompt="Draw a river made of white owl feathers in a winter landscape",
    model="gpt-image-2",
    stream=True,
    partial_images=2,
)

for event in stream:
    if event.type == "image_generation.partial_image":
        image_bytes = base64.b64decode(event.b64_json)
        with open(f"river{event.partial_image_index}.png", "wb") as f:
            f.write(image_bytes)

見落とされやすいのは課金です。公式ガイドは、部分画像1枚ごとに画像出力トークンが100トークン追加されると明記しています。体感速度の改善と引き換えのコストなので、ユーザーが待機画面を見るフロー(複雑なプロンプトでは処理に最大2分かかる可能性があると公式が認めています)でのみ有効にし、バッチ処理では0のままにするのが妥当な判断です。

moderationとimage_generation_user_errorの扱い

プロンプトと生成画像はコンテンツポリシーに従ってフィルタされ、厳しさは moderation パラメータで auto(既定)か low の2値から選べます。low は制限の緩いフィルタリングであり、無制限ではありません。

エラー処理では、4295xx のような一時的失敗はリトライしてよい一方、error.typeimage_generation_user_error のものはリトライしてはいけません。プロンプトか入力画像を変えない限り結果は変わらず、リトライは課金と待ち時間を積むだけです。分岐の判定にはメッセージ文字列ではなく error.code を使ってください。公式が安定した識別子として指定しているのはこちらです。

コスト見積もりとレート制限

請求額は、プロンプトのテキスト入力トークン、編集時の画像入力トークン、画像出力トークンの合計です。現行の gpt-image-2 は画像出力が100万トークンあたり30ドル、画像入力が8ドル(キャッシュ時2ドル)、テキスト入力が5ドルです。gpt-image-1 は画像出力40ドル・画像入力10ドル・テキスト入力5ドル、gpt-image-1-mini は画像出力8ドル(5分の1)・画像入力2.5ドル(4分の1)・テキスト入力2ドル(5分の2)で、画像トークンは4分の1から5分の1の水準になります。

gpt-image-2 より前のモデルは画像を専用の画像トークンとして生成するため、トークン数から費用を逆算できます。品質とサイズごとの出力トークン数は次のとおりです。

品質 1024×1024 1024×1536 1536×1024
low 272 408 400
medium 1056 1584 1568
high 4160 6240 6208

スループット側の制約はレート制限です。gpt-image-2gpt-image-1 はいずれもTier1でTPM 100,000・IPM 5、Tier5でTPM 8,000,000・IPM 250が既定です。IPMは1分あたりの画像枚数で、Tier1では毎分5枚しか通りません。検証段階でバッチ生成を回すとすぐ上限に当たるので、初期実装から 429 のバックオフを入れておくべきです。

リアルタイム性が不要な大量生成は Batch API に逃がすのが有効です。生成・編集とも対応しており、単価表では gpt-image-2 の画像出力が100万トークンあたり15ドル、画像入力が4ドル、テキスト入力が2.5ドルと、いずれも標準の半額に設定されています。レート制限の圧力を下げながらコストも半分になるため、夜間の一括生成のような用途では第一候補になります。

ChatGPTの画像生成とAPIの違い

ChatGPTの画面から画像を作る操作とAPIは、同系統のモデルを使っていても提供形態が別です。ChatGPT側はコード無しで生成と修正ができる一方、モデルIDやサイズ、品質、透過背景を出力条件として固定できません。自社サービスの中で画像を量産し、サイズや形式を機械的に揃える必要があるならAPIを選びます。担当者が数枚の素材を作るだけならAPIを組む必要はありません。なお chatgpt-image-latest というモデルIDはAPIに存在しますが、これも2026年12月1日に削除されます。

他社の画像生成APIと比較検討している場合は、Gemini 3.1 Flash Imageとして登場したNano Banana 2の設計思想と基本性能で対抗モデルの仕様を確認しておくと、料金と編集機能の軸で比べやすくなります。

よくある質問

gpt-image-1はいつまで使えますか?

2026年10月23日にAPIから削除されます。同日には gpt-4o4-mini など他の旧モデルスナップショットもまとめて停止するため、画像生成以外の呼び出しも同時に確認してください。移行先は gpt-image-2 です。

生成した画像をURLで受け取れますか?

できません。GPT Imageモデルは常にbase64エンコードされた画像を返し、response_format による url 指定はサポートされません。URL受け取りに対応していた dall-e-2dall-e-3 は2026年5月12日に削除済みです。デコードして自前のストレージに保存する実装が必要です。

seedパラメータで同じ画像を再現できますか?

Images APIに seed パラメータは存在しません。生成結果を再現する手段は提供されていないため、必要な画像は生成時点で保存してください。既存画像を起点に一貫性を保ちたい場合は、images.edit に参照画像として渡す方法を使います。

指定できる画像サイズは決まっていますか?

gpt-image-2 は条件を満たす任意の解像度を受け付けます。長辺3840px以下、縦横とも16の倍数、長辺と短辺の比が3:1以内、総画素数655,360以上8,294,400以下の4条件です。総画素数が3,686,400(2560×1440相当)を超える出力は実験的な扱いとされています。gpt-image-1 など旧モデルは標準の3サイズのみです。

APIキーがあればすぐに画像生成を呼べますか?

GPT Imageモデルの利用には、開発者コンソールでの組織認証(API Organization Verification)の完了が必要になる場合があります。テキスト生成が通るキーでも画像生成が拒否されることがあるため、実装前に組織設定を確認してください。

関連記事

資料請求

RELATED POSTS 関連記事