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も参照してください。
本記事を読み終えると、API呼び出しの実装、再利用可能なApidogコレクション作成、各パラメータのコスト最適化ができるようになります。
前提条件
最初のリクエストを送るには以下が必要です。
- APIアクセス権を持つOpenAIアカウント(ChatGPT Plusとは別。APIクレジットはサブスクリプションに含まれません)
- 課金可能な利用ティア(
gpt-image-2はティア1以上が必要。フリーティアは画像生成不可) -
images:writeスコープ付きAPIキー(本番ではプロジェクト指定キー推奨) - 画像レスポンスをプレビューできるテストツール(初回はcurlで十分。その後はAPIクライアント推奨)
すべての例は、下記コマンドでAPIキーを環境変数に設定しておけば編集不要です。
export OPENAI_API_KEY="sk-proj-..."
エンドポイントと認証
gpt-image-2は従来モデルと同じエンドポイントです。
POST https://api.openai.com/v1/images/generations
認証はAuthorizationヘッダーでベアラートークンを送信します。リクエストボディはJSONで、モデルID、プロンプト、出力パラメータを指定します。
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配列が返ります。失敗時は、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 | シード同一でも完全再現なし。再現性確保はバイトキャッシュ推奨 |
コストに直結する主要パラメータはsize、quality、thinkingです。たとえばthinking: "high" + 2000px幅 + high品質は、1024x1024 + standardの約4–5倍コストです。
Pythonの例
公式SDK(openai>=1.50.0)での実装例です。
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()}")
ポイント:
-
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`);
SDK利用推奨。リトライやストリーミング、スキーマの破壊的変更追従など公式SDKが担保します。
思考モード:適切な選択
thinkingパラメータはレンダリング前の計画度合いを制御:
-
off: 推論なし。最速・最安。「居心地の良いシーン」のような自由度の高いプロンプト向き。 -
low: 軽度な計画。製品画像などに最適。 -
medium: より厳密な計画。図やインフォグラフィック、要素数明示に推奨。 -
high: 最大限の推論。多言語レイアウトや高度な技術図向け。コスト・レイテンシー高。
数字・ラベル・位置指定のあるプロンプトは1段階上を推奨。逆に緩い表現は下げてコスト削減。
thinkingは推論トークン分の追加課金あり。OpenAI料金表で最新単価を確認。mediumやhighでは画像ベースコストの1.2~2倍を見積もること。
バッチ生成
n > 1で複数画像をバッチ生成。バッチは一貫した構図・スタイルを共有します。
response = client.images.generate(
model="gpt-image-2",
prompt="APIドキュメントランディングページ用の4種類のヒーローイラスト、共有カラーパレット、共有線幅。",
size="1536x1024",
quality="high",
n=4,
thinking="low",
)
料金は画像数に比例(例:n=4なら4倍)。一貫性確保に有効。
レスポンス形式とストレージ
-
b64_json: 画像がインラインで返る。スクリプト向き。ただしペイロード肥大化に注意。 -
url: OpenAI CDNに1時間保存。自前ストレージ転送やサーバーレス関数で有用。
運用Tips: URL形式で受け取った画像は即座にS3等に保存しなおす。OpenAI CDNのURLは絶対にエンドユーザーへ露出しないよう注意。
エラー処理とレート制限
gpt-image-2の主なエラーと対応方法:
| HTTP | code |
原因 | 修正方法 |
|---|---|---|---|
| 400 | invalid_request_error |
不正なサイズ/比率/プロンプト32k超 | サイズリスト確認、プロンプト短縮 |
| 401 | invalid_api_key |
キー欠落/誤り |
OPENAI_API_KEY再エクスポート |
| 403 | insufficient_quota |
クレジット不足/フリーティア | 請求情報追加、利用ティア確認 |
| 429 | rate_limit_exceeded |
リクエスト過多 | ジッター付きバックオフ、Retry-After利用 |
| 429 | image_generation_user_error |
コンテンツポリシー違反 | プロンプト修正 |
| 500 | server_error |
一時的なOpenAI側障害 | 指数バックオフで再試行(2回まで) |
| 503 | overloaded |
地域全体の過負荷 | 待機し再試行 |
レート制限はティアベース。ティア1で1分あたり約50リクエストから。全レスポンスでx-ratelimit-remaining-requests等のヘッダーを確認し、上限前にスロットリング。
リトライ可能エラーの例(Python):
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エンドポイントをGUIから直感的にテストできます。ワークフロー例:
- OpenAIコレクションで新規リクエスト作成。メソッド
POST、URLはhttps://api.openai.com/v1/images/generations。 - ヘッダーに
Authorization: Bearer {{OPENAI_API_KEY}}を追加し、キーは環境変数で管理。 - JSONボディにプロンプトやパラメータを記入。型不一致は送信前に検証されます。
- 送信ボタンで実行。画像はインラインで表示。良い結果は保存、悪いものはタグ付けやフォークでバリエーション管理。
-
thinking: off/medium/highの環境を切り替えて、同一プロンプトで比較実験。
Apidogのリクエスト差分比較は特に便利です。パラメータ変更前後で画像を並べて確認し、最適なプロンプトをチームライブラリにコミット可能。ターミナルでは実現できないワークフローです。
一般的な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
Q: gpt-image-2はgpt-image-1と何が違う?
A: エンドポイント・認証は共通。新パラメータとしてthinking(off/low/medium/high)、最大2000pxのsize、最大10枚バッチ(n)が追加。既存SDK統合もモデルID差し替えで動作。詳細はChatGPT Images 2.0の概要参照。
Q: プロトタイプ最速の方法は?
A: Apidogでリクエスト作成→2つの環境(標準/思考モード)保存→ノーコードで反復。最終リクエストはcurlやSDKコードでエクスポート。
Q: 画像編集・インペインティング対応は?
A: 編集・バリエーションエンドポイントは新モデルIDで従来と同様。最新スキーマはgpt-image-2モデルリファレンスで確認。マスクや入力画像パラメータも記載。
Q: 商用利用は可能?
A: はい、OpenAI標準利用規約に準拠。画像の所有権は発行者に帰属。著名人・商標キャラはガードレール有り。
Q: 本番時のコスト目安は?
A: 標準1024×1024高品質で1枚約0.21ドル。月1万枚で思考モード無しなら約2,100ドル。思考モード利用時は20~80%上乗せ。コスト重視ならGLM 5V Turbo APIガイドやQwen 3.5 Omni統合も要検討。
Q: 安価な代替で同等の多言語テキスト品質は?
A: 現時点で同品質は未登場。オープンウェイトモデルは構図面で進化中だが、CJKやインド系文字には課題残。

Top comments (0)