DEV Community

Cover image for gpt-image-2 API の使い方
Akira
Akira

Posted on • Originally published at apidog.com

gpt-image-2 API の使い方

gpt-image-2 APIは、2026年4月21日にChatGPT Images 2.0と同時にリリースされたOpenAIの新しい画像生成エンドポイントです。OpenAIチャットや埋め込みAPIを既に利用している開発者は、新しいリクエスト形式と適切なスコープ付きAPIキーを準備し、わずか10分程度で画像生成を統合できます。

今すぐApidogを試してみよう

このガイドでは、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-..."
Enter fullscreen mode Exit fullscreen mode

エンドポイントと認証

gpt-image-2は従来モデルと同じエンドポイントです。

POST https://api.openai.com/v1/images/generations
Enter fullscreen mode Exit fullscreen mode

認証は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"
  }'
Enter fullscreen mode Exit fullscreen mode

成功すると画像のdata配列が返ります。失敗時は、codemessageを含む標準の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 シード同一でも完全再現なし。再現性確保はバイトキャッシュ推奨

コストに直結する主要パラメータはsizequalitythinkingです。たとえば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()}")
Enter fullscreen mode Exit fullscreen mode

ポイント:

  • response.datan=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`);
Enter fullscreen mode Exit fullscreen mode

SDK利用推奨。リトライやストリーミング、スキーマの破壊的変更追従など公式SDKが担保します。

思考モード:適切な選択

thinkingパラメータはレンダリング前の計画度合いを制御:

  • off: 推論なし。最速・最安。「居心地の良いシーン」のような自由度の高いプロンプト向き。
  • low: 軽度な計画。製品画像などに最適。
  • medium: より厳密な計画。図やインフォグラフィック、要素数明示に推奨。
  • high: 最大限の推論。多言語レイアウトや高度な技術図向け。コスト・レイテンシー高。

数字・ラベル・位置指定のあるプロンプトは1段階上を推奨。逆に緩い表現は下げてコスト削減。

thinkingは推論トークン分の追加課金あり。OpenAI料金表で最新単価を確認。mediumhighでは画像ベースコストの1.2~2倍を見積もること。

バッチ生成

n > 1で複数画像をバッチ生成。バッチは一貫した構図・スタイルを共有します。

response = client.images.generate(
    model="gpt-image-2",
    prompt="APIドキュメントランディングページ用の4種類のヒーローイラスト、共有カラーパレット、共有線幅。",
    size="1536x1024",
    quality="high",
    n=4,
    thinking="low",
)
Enter fullscreen mode Exit fullscreen mode

料金は画像数に比例(例: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")
Enter fullscreen mode Exit fullscreen mode

400番台・401・コンテンツポリシー違反(429)は再試行せず修正必須です。

ApidogでAPIをテストする

ターミナルでの画像生成は反復や比較に不向きです。専用APIクライアントを活用しましょう。

Apidogのインターフェースでgpt-image-2のレスポンスを表示しているスクリーンショット

Apidogなら、gpt-image-2エンドポイントをGUIから直感的にテストできます。ワークフロー例:

  1. OpenAIコレクションで新規リクエスト作成。メソッドPOST、URLはhttps://api.openai.com/v1/images/generations
  2. ヘッダーにAuthorization: Bearer {{OPENAI_API_KEY}}を追加し、キーは環境変数で管理。
  3. JSONボディにプロンプトやパラメータを記入。型不一致は送信前に検証されます。
  4. 送信ボタンで実行。画像はインラインで表示。良い結果は保存、悪いものはタグ付けやフォークでバリエーション管理。
  5. 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)