GPT Image 2
単一の非同期画像エンドポイントで、画像の生成・参照画像の編集・マスクの適用を行います。
GPT Image 2 はテキストプロンプトと、任意で参照画像を受け付けます。一度送信したら、返されたタスク ID を保持し、そのタスクを照会して完成した画像を取得します。2 つのチャネルで提供され、それぞれに専用のモデル ID がありますが、パラメータは同じです。
モデル ID
| モデル ID | チャネル | 課金方式 |
|---|---|---|
gpt-image-2 | Standard | サイズや品質にかかわらず、納品した画像 1 枚ごとの固定料金 |
gpt-image-2-official | Official | レンダリングごとに報告されるトークン(テキスト入力と画像出力) |
どちらの ID も同じパラメータを受け付け、すべてのモードに対応します。違うのは課金方式だけです。現在の価格はモデルページを参照してください。以下の例は gpt-image-2 を使っています。トークン課金にするには gpt-image-2-official に置き換えてください。
クイックサンプル
curl https://api.seedrouter.ai/v1/images/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "An amber glass bottle on a cream background, studio lighting",
"size": "1024x1024",
"quality": "low"
}'エンドポイント
POST https://api.seedrouter.ai/v1/images/generations| ヘッダー | 値 |
|---|---|
| Authorization | Bearer YOUR_API_KEY |
| Content-Type | application/json |
生成・参照画像の編集・マスク編集は、いずれも同じエンドポイントで処理されます。レスポンスに含まれるのはタスク ID であり、完成した画像ではありません。API キーはサーバー側のコードに保管してください。
パラメータ
| 名前 | 型 | 必須 | 既定値 | 説明 |
|---|---|---|---|---|
model | string | はい | — | gpt-image-2 または gpt-image-2-official |
prompt | string | はい | — | 空文字は不可。最大 32,000 文字。 |
images | object[] | いいえ | — | {"image_url":"https://..."} 形式のオブジェクトを 1〜16 個。images を渡すと編集モードになります。 |
mask | object | いいえ | — | {"image_url":"https://..."}。images と併用が必須です。 |
size | string | いいえ | auto | auto または WIDTHxHEIGHT。下記の規則に従います。 |
quality | enum | いいえ | auto | auto、low、medium、high。 |
background | enum | いいえ | auto | auto、opaque、transparent。 |
output_format | enum | いいえ | png | png、jpeg。 |
output_compression | integer | いいえ | JPEG は 100 | 0〜100。jpeg のときのみ指定します。0 も有効な値です。 |
n | integer | いいえ | 1 | 1〜10 枚。 |
moderation | enum | いいえ | auto | auto、low。 |
user | string | いいえ | — | 任意のアプリケーション側エンドユーザー識別子。個人情報は入れないでください。 |
サイズの規則
よく使われるのは 1024x1024、1536x1024、1024x1536 です。カスタムサイズは次の条件をすべて満たす必要があります:
- 幅と高さが 16 の倍数であること。
- どちらの辺も 3840 ピクセルを超えないこと。
- アスペクト比が 1:3 から 3:1 の範囲内であること。
- 総面積が 655,360 から 8,294,400 ピクセルの範囲内(両端を含む)であること。
auto は出力サイズをモデルに任せます。16:9 のようなアスペクト比を size として送信しないでください。
Playground には Auto・比率・カスタムのコントロールがあります。比率モードはアスペクト比と 1K・2K・4K のピクセル予算プリセットを組み合わせ、算出された size のみを送信します。これらは UI 上のプリセットであり、独立した API パラメータではありません。resolution や aspect_ratio を送信しないでください。例えば 16:9 + 4K は size: "3840x2160"、9:16 + 4K は "2160x3840"、1:1 + 2K は "2048x2048" を送信します。丸め処理と辺の上限により、選択した段階より実際のピクセル数が少なくなることがあります。正確なサイズは送信前に表示されます。
OpenAI は 2560×1440 を超える解像度を実験的なものと位置づけています。上記の制限内であれば受け付けられますが、解像度が高いほどディテールが良くなるとは限りません。
品質の段階
下書きには low を使い、結果を比較してから上位の段階を選んでください。auto はモデルに選択を任せるもので、特定の段階やコストを保証するものではありません。
透過背景
GPT Image 2 の透過はプレビュー段階です。透過背景にするには background: "transparent" を指定し、PNG を使用してください。JPEG は透過に対応していません。圧縮が適用されるのは JPEG のみです。
user は API 連携向けに利用できますが、Playground では表示も自動入力もされません。
任意のスカラー設定(n、size、quality、background、output_format、output_compression、moderation)は、省略を表す null を受け付けます。未知のフィールドは拒否されます。GPT Image 2 では input_fidelity は設定できず、参照入力は常に高忠実度で処理されます。style と response_format は他の画像モデルのもので、ここでは受け付けられません。
モード
モードを指定するパラメータも、選択すべき編集用エンドポイントもありません。
| 操作 | パラメータ |
|---|---|
| テキストから画像 | prompt |
| 参照画像の編集 | prompt + images |
| マスク編集 | prompt + images + mask |
参照画像を編集する
curl https://api.seedrouter.ai/v1/images/generations \
-H "Authorization: Bearer $SEEDROUTER_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "Make the bottle blue. Preserve the composition and lighting.",
"images": [{"image_url": "https://example.com/reference.png"}],
"mask": {"image_url": "https://example.com/mask.png"},
"output_format": "jpeg",
"output_compression": 90
}'例の 2 つの URL は、ご自身のアクセス可能な画像に置き換えてください。編集範囲を指定しない参照画像編集では mask を省略します。
メディア入力
この API は URL 参照のみを受け付けます。OpenAI Files の ID、base64 の data URL、multipart アップロードは受け付けません。Playground は選択されたファイルをストレージにアップロードしてから、その URL を送信します。
参照画像は、1 ファイル 50 MB 未満の PNG・JPEG・WebP を指す公開 HTTP(S) URL である必要があります。マスクは 4 MB 未満の PNG で、最初の参照画像と同じサイズである必要があります。その透明部分が編集対象を示します。マスクはモデルへの指示であり、ピクセル単位で正確な境界を保証するものではありません。参照画像が複数ある場合、マスクは最初の画像に適用されます。URL のメディアは処理中に検証されるため、無効またはアクセスできないメディアはタスクの失敗につながることがあります。
Playground は選択されたファイルをアップロードし、その URL を送信します。API リクエストでは JSON の URL オブジェクトを使用します。ファイルのバイト列、base64、data: URL、blob: URL、multipart フォームデータは送信しないでください。
課金に影響する要素
現在のレートはモデルの料金セクションで確認してください。gpt-image-2(Standard)は、品質・サイズ・プロンプトにかかわらず、納品した画像 1 枚ごとの固定料金です。gpt-image-2-official(Official)の最終的な費用は入力と出力の使用量で決まり、品質・出力サイズ・参照画像・プロンプトの長さ・画像の枚数のいずれもが影響します。
Playground の見積もりは実測サンプルと現在のレートに基づくもので、確定金額ではありません。最終的な課金額はアカウントの使用履歴で確認してください。失敗したタスクは課金されません。
出力スキーマ
送信するとタスクの参照が返ります:
{
"id": "task_...",
"model": "gpt-image-2",
"status": "processing",
"created_at": 1789970508
}タスクをポーリングする
curl https://api.seedrouter.ai/v1/tasks/YOUR_TASK_ID \
-H "Authorization: Bearer $SEEDROUTER_API_KEY"status が completed または failed になるまで、3 秒ごとなど控えめな間隔でポーリングしてください。ポーリング中のネットワークタイムアウトは生成の失敗を意味しません。タスク ID を保持して確認を再開してください。進捗確認のために別のタスクを作成しないでください。
ポーリングの完全な例
上記の Python 送信例のあとに実行してください。返された task_id を使い、最大 10 分間待機します。このローカルの期限に達してもポーリングが止まるだけです。ID を保持して同じタスクの照会を再開してください。
import time
print(f"Task ID: {task_id}")
deadline = time.monotonic() + 600
while time.monotonic() < deadline:
result = requests.get(
f"https://api.seedrouter.ai/v1/tasks/{task_id}",
headers={"Authorization": f"Bearer {os.environ['SEEDROUTER_API_KEY']}"},
timeout=30,
)
result.raise_for_status()
task = result.json()
if task["status"] == "completed":
for image in task["output"]["data"]:
print(image["url"])
break
if task["status"] == "failed":
raise RuntimeError(task["error"]["message"])
time.sleep(3)
else:
raise TimeoutError(f"Still waiting. Resume polling task {task_id}.")完了したタスク
完了したタスクは、ホストされた画像 URL と使用量を返します:
{
"id": "task_...",
"model": "gpt-image-2",
"status": "completed",
"created_at": 1789970508,
"finished_at": 1789970538,
"output": {
"created": 1789970532,
"data": [{"url": "https://static.seedrouter.ai/media/tasks/task_example/0.png"}],
"usage": {
"input_tokens": 29,
"output_tokens": 196,
"total_tokens": 225
}
}
}| フィールド | 意味 |
|---|---|
id | 以降の照会のためにこの ID を保持してください。 |
status | processing、completed、failed のいずれか。 |
created_at、finished_at | 秒単位の Unix タイムスタンプ。処理中は完了時刻は未設定または 0 です。 |
output.data[].url | 生成された画像の URL。完了時に利用できます。 |
output.size | 報告される場合の実際の出力サイズ。 |
output.quality | 報告される場合の実際の品質段階。 |
output.background | 報告される場合の実際の背景。 |
output.output_format | 報告される場合の実際の画像フォーマット。 |
output.usage | 利用可能な場合に報告されるトークン使用量。詳細オブジェクトにはテキストと画像のトークン数が含まれることがあります。 |
error | 失敗したタスクの構造化エラー。 |
この API は非同期のタスク配信方式です。同期的な Images SDK の代替ではなく、stream と partial_images には対応していません。
エラー
タスク作成前に拒否されたリクエストは、HTTP エラーと error オブジェクトを返します。受理後に失敗したタスクは、照会時に HTTP 200 と status: "failed"、そして error オブジェクトを返します。
コード・HTTP ステータス・リトライの指針は共通エラーカタログを参照してください。すべてのモデル API は同じエラー構造を使用します。
{
"id": "task_...",
"status": "failed",
"error": {
"code": 60002,
"message": "Generation could not be completed. Please try again."
}
}送信自体がタイムアウトした場合は、再送信の前にタスク履歴を確認してください。最初のリクエストが受理されている可能性があります。
ヒント
- プロンプトでは素材・構図・照明を具体的に記述してください。
- 編集では、変更する点と変更しない点の両方を指定してください。
- 選択した範囲だけを変更したい場合はマスクを使用してください。
- 長期保存が必要な場合は、返された画像をご自身のストレージに保存してください。
