gpt-image-2 APIは、2026年4月21日にChatGPT Images 2.0と同時にリリースされたOpenAIの新しい画像生成エンドポイントです。OpenAIチャットまたは埋め込みAPIをすでに利用している場合、画像生成を追加するには、新しいリクエスト形式、適切なスコープを持つAPIキー、そして約10分あれば十分です。
このガイドはAPIに特化しています。認証、リクエストパラメーター、3つの言語でのコードサンプル、思考モード、バッチ生成、レスポンス処理、エラーコード、レート制限、そして誤ったプロンプトでクレジットを浪費しないためのテストワークフローについて説明します。ChatGPT Images 2.0の新機能に関する製品レベルの概要については、ChatGPT Images 2.0 breakdownをご覧ください。
このガイドを読了すれば、機能する呼び出し、繰り返し作業に使える再利用可能なApidogコレクション、そして各パラメーターのコストに関する明確なイメージが得られるでしょう。
前提条件
最初のリクエストを行う前に、以下の4つが必要です。
- APIアクセス権を持つOpenAIアカウント。開発者アカウントはChatGPT Plusとは別で、ChatGPTのサブスクリプションにはAPIクレジットは含まれません。
- 課金可能な利用ティア。
gpt-image-2はティア1以上で利用可能です。新規アカウントはフリーティアから始まり、画像エンドポイントを解除するには支払い情報を追加する必要があります。 images:writeスコープを持つAPIキー。本番環境では、ユーザー指定のキーよりもプロジェクト指定のキーを推奨します。- 画像レスポンスをプレビューできるテストツール。最初の要求にはターミナルでのcurlが機能しますが、その後は実際のAPIクライアントを使用してください。これについては後述します。
このガイドのすべての例を編集なしで実行できるように、シェルでキーを一度設定します。
export OPENAI_API_KEY="sk-proj-..."
エンドポイントと認証
gpt-image-2は、以前のモデルと同じ画像生成エンドポイントを使用します。
POST https://api.openai.com/v1/images/generations
認証は、Authorizationヘッダーにベアラートークンを使用します。すべてのリクエストは、モデルID、プロンプト、および出力パラメーターを含むJSONボディも持ちます。
curl https://api.openai.com/v1/images/generations \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "APIテストプラットフォームのためのシャープな製品ヒーロー画像、暗い背景",
"size": "1024x1024",
"n": 1,
"quality": "high"
}'
呼び出しが成功すると、画像のdata配列を持つJSONオブジェクトが返されます。失敗した場合は、codeと人間が読めるmessageを含む標準的なOpenAIエラーエンベロープが返されます。このガイドの後の方にあるエラーテーブルで一般的なエラーについて説明します。
リクエストパラメーター
リクエストボディのすべてのフィールドは、支払う金額と得られる結果に影響を与えます。以下は、gpt-image-2の完全なパラメーターマップです。
| パラメーター | タイプ | 値 | 備考 |
|---|---|---|---|
model |
string | gpt-image-2 |
必須。 |
prompt |
string | 最大32,000文字 | 必須。長いプロンプトは、より多くの入力トークンを消費します。 |
size |
string | 1024x1024, 1024x1536, 1536x1024, 2000x1000, 1000x2000, 2000x667, 667x2000 |
出力トークン数を決定します。 |
quality |
string | standard, high |
highはコストが約2倍ですが、細かいテキストやUI要素を処理します。 |
n |
integer | 1–10 | バッチリクエストは、セット全体でスタイルを共有します。 |
thinking |
string | off, low, medium, high |
レンダリング前の推論予算。 |
response_format |
string | url, b64_json |
URLは1時間で期限切れになります。 |
user |
string | 自由形式 | 悪用検出に使用されます。ハッシュ化されたユーザーIDを渡してください。 |
background |
string | auto, transparent, opaque |
透過出力はアルファチャンネル付きPNGとして出荷されます。 |
seed |
integer | 任意のint32 | 緩い制御。同じシードとプロンプトは近い結果を生成しますが、同一ではありません。 |
コストに最も影響を与える3つのパラメーターは、size、quality、thinkingです。thinking: "high"で2000ピクセル幅のhigh品質画像は、ベースラインの1024x1024 standardレンダリングの4〜5倍のコストがかかる場合があります。
Pythonの例
公式SDK(openai>=1.50.0)は、gpt-image-2のネイティブサポートを追加しています。
import base64
from pathlib import Path
from openai import OpenAI
client = OpenAI()
response = client.images.generate(
model="gpt-image-2",
prompt=(
"OAuth 2.1認証コードフロー(PKCE付き)のミニマリストな図。 "
"5つのボックスに英語でラベル付け: User, Client, Auth Server, Resource Server, Token。 "
"シャープなサンセリフテキスト、オフホワイトの背景、ティールアクセントの矢印。"
),
size="1536x1024",
quality="high",
n=2,
thinking="medium",
response_format="b64_json",
)
out_dir = Path("out")
out_dir.mkdir(exist_ok=True)
for i, image in enumerate(response.data):
png_bytes = base64.b64decode(image.b64_json)
(out_dir / f"oauth_{i}.png").write_bytes(png_bytes)
print(f"Generated {len(response.data)} images into {out_dir.resolve()}")
注目すべき点が2つあります。
response.dataは、n=1の場合でもリストです。常にイテレートしてください。b64_jsonはローカルスクリプトには簡単ですが、CDNやS3アップロードに画像を転送する場合、デコードと再エンコードのサイクルをスキップできるため、urlの方が優れています。
Node.js / TypeScriptの例
import fs from "node:fs/promises";
import OpenAI from "openai";
const client = new OpenAI();
const response = await client.images.generate({
model: "gpt-image-2",
prompt:
"RESTクライアントのダッシュボードUIモックアップ、センテンスケースのラベル、右上にレイテンシーのスパークライン、クールグレーのパレット。",
size: "1536x1024",
quality: "high",
n: 4,
thinking: "medium",
response_format: "b64_json",
});
await Promise.all(
response.data.map(async (image, i) => {
if (!image.b64_json) return;
await fs.writeFile(`dash_${i}.png`, Buffer.from(image.b64_json, "base64"));
}),
);
console.log(`Saved ${response.data.length} images`);
特別な理由がない限り、生のfetchではなく公式SDKを使用してください。SDKはリトライ、冪等性ヘッダー、ストリーミングを処理し、モデルのリビジョン間の破壊的スキーマ変更を追跡します。
思考モード:いつ使うか
thinkingは、モデルがレンダリング前にレイアウトの計画にどれだけの計算資源を費やすかを制御します。大まかに言って、4つの値があります。
off: 推論なし。最も高速で安価。構図が正確である必要のない、ゆるやかなクリエイティブプロンプトに最適です。low: 軽い計画。製品写真やヒーロー画像に適したデフォルトです。medium: やや重い計画。図、インフォグラフィック、スライド、および数えられた要素(「4つのパネル」、「3つの矢印」)を持つものに最適な選択です。high: 最大限の推論。複雑な多言語レイアウトや厳密な技術図にのみ効果を発揮します。レイテンシーとコストが著しく高くなることが予想されます。
実用的なルールとして、プロンプトに数字、ラベル、または位置に関する制約が含まれている場合は、1段階上のティアに上げてください。「居心地の良いシーン」とだけ書かれている場合は、1段階下げてください。
思考モードは、画像出力トークンに加えて、推論トークンを課金に追加します。OpenAIの料金ページに現在のトークンあたりの料金が記載されています。mediumまたはhighを使用する場合、ベースラインの画像コストの1.2〜2倍の予算を見込んでください。
バッチ生成
n > 1を設定すると、単一のレスポンスで複数の画像が返され、これらは構図とスタイルを共有します。これは、エンドポイントを並行してn回呼び出すのとは異なります。後者は関連性のない画像を4つ生成します。バッチ出力は一貫性があり、デザインチームが反復作業を行う方法と一致します。
response = client.images.generate(
model="gpt-image-2",
prompt="APIドキュメントランディングページ用の4種類のヒーローイラスト、共有カラーパレット、共有線幅。",
size="1536x1024",
quality="high",
n=4,
thinking="low",
)
料金は画像ごとに発生するため、n=4はn=1の約4倍の費用がかかります。利点は一貫性であり、スループットではありません。
レスポンス形式とストレージ
2つの形式、2つのユースケース:
b64_json: 画像はレスポンスにインラインで含まれます。スクリプトに簡単です。レスポンスペイロードはすぐに大きくなる可能性があります。2000ピクセル幅の高品質PNGは、レスポンスサイズを3MB以上に押し上げる可能性があります。url: 画像はOpenAIのCDNに1時間保存され、自分でダウンロードします。レスポンスサイズの制限があるサーバーレス関数や、画像を独自のストレージに転送するパイプラインに適しています。
本番環境では、URLをダウンロードし、すぐに独自のS3、R2、またはCloudflare Imagesバケットにプッシュしてください。OpenAIのURLをエンドユーザーに提供しないでください。それらは期限切れになります。
エラー処理とレート制限
gpt-image-2は標準的なOpenAIのエラー形式を返します。以下に、遭遇する可能性のあるものを挙げます。
| HTTP | code |
原因 | 修正 |
|---|---|---|---|
| 400 | invalid_request_error |
不正なサイズ、サポートされていない比率、プロンプトが32k文字超 | サイズリストを確認し、プロンプトを短縮します。 |
| 401 | invalid_api_key |
キーの欠落または誤り | OPENAI_API_KEYを再エクスポートします。 |
| 403 | insufficient_quota |
クレジットなし、またはフリーティア | 請求情報を追加し、ティアを確認します。 |
| 429 | rate_limit_exceeded |
1分あたりのリクエストが多すぎる | ジッターを伴うバックオフ。Retry-Afterで再試行します。 |
| 429 | image_generation_user_error |
コンテンツポリシー拒否 | プロンプトを言い換えます。 |
| 500 | server_error |
一時的なOpenAIの問題 | 指数関数的バックオフで2回再試行します。 |
| 503 | overloaded |
地域全体でのスパイク | 待機して再試行します。 |
gpt-image-2のレート制限はティアベースです。ティア1では1分あたり約50リクエストから開始し、より高いティアではスケールアップします。すべてのレスポンスでx-ratelimit-remaining-requestsとx-ratelimit-remaining-tokensヘッダーを常に読み取り、上限に達する前にスロットリングを行ってください。
本番環境での再試行可能なエラー:
import time
from openai import OpenAI, RateLimitError, APIStatusError
client = OpenAI()
def generate_with_retry(prompt: str, tries: int = 3):
delay = 1.0
for attempt in range(tries):
try:
return client.images.generate(
model="gpt-image-2",
prompt=prompt,
size="1024x1024",
quality="high",
n=1,
)
except RateLimitError:
time.sleep(delay)
delay *= 2
except APIStatusError as e:
if 500 <= e.status_code < 600 and attempt < tries - 1:
time.sleep(delay)
delay *= 2
continue
raise
raise RuntimeError("gpt-image-2 retries exhausted")
400番台、401番台、またはコンテンツポリシーによる429番台のエラーは再試行しないでください。これらは理由があって失敗しており、再試行はクレジットの無駄になります。
ApidogでAPIをテストする
ターミナルから画像生成プロンプトを反復処理するのは遅く、結果を確認したり、パラメーターの変更を比較したり、良いプロンプトをバージョン管理したりすることはできません。専用のAPIクライアントがこれらすべてを解決します。

Apidogはgpt-image-2エンドポイントをファーストクラスのリクエストとして扱います。一般的なワークフローは以下の通りです。
- OpenAIコレクションで新しいリクエストを作成し、メソッドを
POST、URLをhttps://api.openai.com/v1/images/generationsに設定します。 - ヘッダーとして
Authorization: Bearer {{OPENAI_API_KEY}}を追加し、OPENAI_API_KEYを環境変数に設定して、ソースコードに含めないようにします。 - プロンプトを含むJSONボディを貼り付けます。ApidogはOpenAPI仕様に対して検証し、送信する前に型不一致を表面化します。
- 送信ボタンを押します。画像のレスポンスはインラインでレンダリングされます。良いものを保存し、悪いものにタグを付け、バリアントのためにリクエストをフォークします。
thinking: off、thinking: medium、thinking: highの環境を保存して、同じプロンプトを異なる推論レベルで比較します。
Apidogのリクエストの差分比較機能がここで最も重要です。1つのパラメーターを調整すると、変更前と変更後の画像が並べて表示されます。そして、チーム全体で共有するプロンプトライブラリに最適なものをコミットします。これはターミナルでは提供できないワークフローです。
一般的なHTTPクライアントやクラッシュしたPostmanワークスペースから移行する場合、ApidogをダウンロードしてOpenAIキーに接続してください。セットアップは5分もかかりません。代替ツールを検討しているチームは、PostmanなしでのAPIテストガイドやApidog VS Code拡張機能の概要もご覧ください。
よくある落とし穴
gpt-image-2を使い始めて最初の週にクレジットと時間を浪費するいくつかの間違いがあります。
- テキスト量の多いプロンプトに
quality: "standard"を使用すること。 標準品質では、小さなテキストが読み取りにくくなります。ラベル、アイコン、またはUIコピーが重要な場合は、highに切り替えてください。 - オーバプロンプティング。 32k文字は上限であり、目標ではありません。数百トークンを超えると、モデルは以前の指示を無視し始めます。プロンプトは500語以内に保ち、
thinkingを使用して複雑な制約を適用してください。 seedからの再現性を期待すること。 シードは分散を減らしますが、出力を固定するわけではありません。まったく同じ画像が必要な場合は、バイトをキャッシュしてください。再生成しないでください。- OpenAIのURLを公開すること。 これらは1時間で期限切れになります。下流に提供する前に、常に独自のストレージにコピーしてください。
- エンドポイントをタイトなループで呼び出すこと。 画像生成は遅いです。ワーカー間で並列化し、レート制限ヘッダーを尊重してください。シーケンシャルなタイトループはキューに入れてタイムアウトするだけです。
FAQ
APIレベルでgpt-image-2はgpt-image-1とどう異なりますか?同じエンドポイント、同じ認証です。新しいパラメーターとして、thinking(off/low/medium/high)、最大2000pxの追加のsize値、およびスタイルを共有する最大10のnが追加されました。既存のSDK統合は、モデルIDを交換した後も機能し続けます。新しいパラメーターは役立つ場合にのみ追加してください。完全な違いについては、ChatGPT Images 2.0の概要をご覧ください。
gpt-image-2の統合をプロトタイプ化する最速の方法は何ですか?Apidogでリクエストを作成し、2つの環境(標準と思考モード)を保存して、コードに触れることなくプロンプトを反復処理します。コミットする準備ができたら、最終的なリクエストをcurlまたはSDKコードとしてエクスポートします。
APIは画像編集やインペインティングをサポートしていますか?編集およびバリエーションのエンドポイントは、新しいモデルIDの下で以前の世代と同じパターンに従います。gpt-image-2モデルリファレンスで最新のスキーマを確認してください。マスクと入力画像のパラメーターはそこに文書化されています。
gpt-image-2を商用出力に使用できますか?はい、OpenAIの標準使用ポリシーに従って使用できます。生成された画像の所有権はあなたにあります。OpenAIは、悪用監視のために入力および出力を使用する権利を保持します。商標登録されたキャラクターや名前のある著名人は、引き続きガードレールによって制限されます。
本番ワークロードのコストはどうなりますか?標準モードの1024×1024高品質画像1枚あたり約0.21ドルで、月に10,000枚の画像は、思考モードなしで約2,100ドルかかります。思考モードでは20~80%追加してください。予算が最高品質よりも重要である場合は、GLM 5V Turbo APIガイドやQwen 3.5 Omni統合のような自己ホスト型代替ソリューションと比較してください。
同様のテキストレンダリングでより安価な代替手段はありますか?多言語テキストの同じ品質ではまだありません。オープンウェイトモデルは構図のギャップを埋めていますが、CJKやインド系文字ではまだ遅れをとっています。
