Images API
エンドポイントは 2 つです:生成(テキスト → 画像)と編集(画像 + テキスト → 画像)。レスポンスはいずれも OpenAI 標準構造の data[0].b64_json です。
Seedream と Qwen-Image は /v1/images/edits に対応していません。画像から画像への変換は generations エンドポイントで行いますが、参照画像のフィールドが異なります。Seedream は image、Qwen は input_images です。取り違えないよう注意してください。Gemini で解像度(512〜4K)を制御する必要がある場合は Gemini ネイティブプロトコルを使います。シリーズごとのパラメーターの違いは各シリーズのページを参照してください。
クイックスタート
最小限の実行可能なリクエストです。1024×1024 の画像を 1 枚生成し、デコードして output.png として保存します。
https://api.ofox.ai/v1https://api.ofox.ai/v1/images/generationshttps://api.ofox.ai/v1/images/editsopenai/gpt-image-2.5-flarePython
import base64
from openai import OpenAI
client = OpenAI(
api_key="YOUR_OFOX_API_KEY",
base_url="https://api.ofox.ai/v1",
timeout=600, # 画像 API は同期型で、時間がかかる
)
resp = client.images.generate(
model="openai/gpt-image-2.5-flare",
prompt="白いテーブルの上に置かれた赤いリンゴ",
size="1024x1024",
quality="low",
)
with open("output.png", "wb") as f:
f.write(base64.b64decode(resp.data[0].b64_json))API は同期型です。クライアントのタイムアウトは 600 秒に設定してください。 高品質・大きいサイズ・編集のリクエストは数分かかる場合があります。実測の所要時間を参照してください。
どのシリーズも呼び出し方は同じで、モデルを変えるときは model だけを変更します。受け付ける値とシリーズ固有のパラメーターは異なるため、以下の各パラメーターの説明を参照してください。
画像を生成
POST https://api.ofox.ai/v1/images/generationsリクエストパラメーター
以下の有効な値とデフォルト値は GPT Image シリーズ(gpt-image-2.5-flare、gpt-image-2.5-sunburst、gpt-image-2)に適用されます。他のシリーズで異なる点はその都度記載しています。実測の詳細は GPT Image シリーズを参照してください。
出力サイズ。幅と高さは自由に指定できますが、4 つの制約を満たさないと 400 Invalid size が返ります。
▸ 詳細
4 つの制約:
- 幅・高さともに 16 で割り切れる
- 長辺 ≤ 3840
- アスペクト比が 1:3〜3:1 の範囲内
- 総ピクセル数 ≥ 655,360(
768x768は不可、1024x768は可)
省略または auto の場合はモデルが決定し、実測では 1254×1254 が返りました。固定サイズが必要な場合は明示的に指定してください。他のシリーズはサイズのルールが異なるため、各シリーズのページを参照してください。詳細は GPT Image · サイズを参照してください。
品質ティア。価格に直接影響します。gpt-image-2 には xhigh / max がありません。
▸ 詳細
gpt-image-2にはxhigh/maxがなく、指定すると 400 が返ります。- DALL·E 時代の
standard/hdは受け付けず、指定すると 400 が返ります。 - 省略は
mediumと同じではありません。モデルがティアを選びます(実測ではlowが選ばれました)。品質とコストを安定させるには明示的に指定してください。
他のシリーズの多くにはティアがありません。各シリーズのページを参照してください。詳細は GPT Image · 品質を参照してください。
生成枚数。1 枚ごとに課金されます。Gemini モデルは非対応のため、指定しないでください。
出力ファイル形式。
▶高度な設定 · 7output_compression · background · moderation · stream · partial_images · input_images · extra_body.provider.type展开
圧縮率。jpeg / webp でのみ有効です。
背景。transparent にはアルファチャンネルに対応した形式(png / webp)が必要です。
コンテンツ審査の強度。
ストリーミングで返すかどうか。partial_images と組み合わせると、生成途中の中間画像を受け取れます。
ストリーミングで返す中間画像の枚数。stream: true が必要です。OpenAI 公式ドキュメントによると、中間画像 1 枚ごとに出力トークンが 100 追加されます。
参照画像の配列(URL または base64)。Qwen シリーズのみ対応しており、1〜3 枚です。
▸ 詳細
他のシリーズではエラーにならず、効果もありません。Seedream の参照画像フィールドは image です。
プロバイダーを指定します。任意で、通常は不要です。ゲートウェイが自動でルーティングします。コンテンツ審査に関する要件がある場合に指定を検討してください。指定したプロバイダーが利用できない場合、他のプロバイダーには自動で切り替わりません。
▸ 詳細
ヘッダー X-OfoxAI-Provider-Type と等価です。応用:プロバイダーの指定を参照してください。
レスポンス
{
"created": 1777385517,
"data": [
{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…", "index": 0 }
],
"model": "openai/gpt-image-2.5-flare",
"size": "1024x1024",
"quality": "low",
"usage": {
"input_tokens": 13,
"input_tokens_details": { "text_tokens": 13 },
"output_tokens": 196,
"output_tokens_details": { "image_tokens": 196 },
"total_tokens": 209
}
}画像の base64 エンコード。data:image/png;base64, プレフィックスは付きません。
▸ 詳細
デコードしてファイルに書き込んでください。ブラウザで表示する場合はプレフィックスを自分で付けてください。レスポンスに url フィールドはありません。
画像の番号。n > 1 のときに複数の画像を区別します。
実際の出力サイズ。size を省略した場合や auto を指定した場合は、ここで実際のサイズを確認してください。
実際に使用された品質ティア。quality を省略した場合は、ここで使用されたティアを確認できます。
実際に使用された背景と形式。常に返るとは限らないため、これらのフィールドに依存しないでください。
課金対象の使用量。output_tokens は出力画像のトークン、input_tokens_details.text_tokens はプロンプトのトークンです。
▸ 詳細
1 回の呼び出しのコストはこれらの数値から計算してください。
画像を編集
POST https://api.ofox.ai/v1/images/editsこのエンドポイントは GPT Image、Nano Banana(Gemini)、MAI Image に対応しています。Seedream と Qwen-Image で呼び出すと 400 endpoint_not_supported が返ります。生成エンドポイントの参照画像フィールドを使ってください。Seedream、Qwen-Image を参照してください。
リクエストパラメーター
multipart/form-data のフォームフィールドとして送信し、画像ファイルをアップロードします。有効な値とデフォルト値は、こちらも GPT Image シリーズに適用されます。
インペインティング用マスク。アルファチャンネル付きの PNG で、image と同じサイズにします。透明な部分 = 描き直される部分です。
▸ 詳細
このエンドポイントでのみ有効で、生成エンドポイントに送っても黙って無視されます。作り方と実測結果は GPT Image · マスクによるインペインティングを参照してください。
出力サイズ。制約は生成エンドポイントと同じです。
▸ 詳細
省略または auto の場合はモデルが決定するため、元画像と同じになるとは限りません。元のサイズを保つには明示的に指定してください。
品質ティア。ルールは生成エンドポイントと同じで、gpt-image-2 には xhigh / max がありません。
生成枚数。1 枚ごとに課金されます。
▶高度な設定 · 1X-OfoxAI-Provider-Type展开
プロバイダーを指定します。任意で、通常は不要です。ゲートウェイが自動でルーティングします。コンテンツ審査に関する要件がある場合に指定を検討してください。指定したプロバイダーが利用できない場合、他のプロバイダーには自動で切り替わりません。
▸ 詳細
このエンドポイントは multipart アップロードのため、プロバイダーを固定するにはヘッダーのみ有効です。フォームフィールドの extra_body は黙って無視されます。応用:プロバイダーの指定を参照してください。
レスポンス
構造は生成エンドポイントと同じで、usage に参照画像の入力トークンが加わります:
{
"created": 1777385669,
"data": [
{ "b64_json": "iVBORw0KGgoAAAANSUhEUgAA…", "index": 0 }
],
"model": "openai/gpt-image-2",
"size": "auto",
"quality": "low",
"usage": {
"input_tokens": 1041,
"input_tokens_details": { "image_tokens": 1024, "text_tokens": 17 },
"num_input_images": 1,
"output_tokens": 358,
"total_tokens": 1399
}
}参照画像を換算した入力トークン。実測では 1024×1024 の参照画像 1 枚で 1,024 でした。編集が同じサイズのテキストからの画像生成より高くなる主な理由はこの項目です。
参照画像の枚数。モデルが参照画像を実際に読み取ったことの確認に使えます。
その他のフィールドは生成エンドポイントのレスポンスと同じです。
対応モデルと価格は モデルカタログ を参照してください。
呼び出し
Python
import base64
from openai import OpenAI
client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.ai/v1", timeout=600)
with open("apple.png", "rb") as f:
resp = client.images.edit(
model="openai/gpt-image-2",
image=f,
prompt="リンゴを緑色に変え、それ以外はそのままにする",
size="auto",
quality="low",
)
with open("apple_edited.png", "wb") as out:
out.write(base64.b64decode(resp.data[0].b64_json))image フィールドにはローカルファイルパスを渡します(cURL では @ を前置)。URL ではありません。
実測の比較:
エラー
エラー時は HTTP エラーステータスと次の構造が返ります(実測):
{
"error": {
"code": null,
"message": "The model 'gpt-image-2' does not support quality 'xhigh'.",
"param": null,
"request_id": "fbe4f24c-779d-41a0-8b3a-c62886cdd1ae",
"type": "image_generation_user_error"
}
}code は null の場合があります。HTTP ステータスと message で判定してください。
サポートに問い合わせる際は、レスポンスの request_id とエラー情報(HTTP ステータスと error.message)を添えてください。これらはログに記録しておくことを推奨します。
応用:プロバイダーの指定
任意で、通常は不要です。 GPT Image の 3 モデル(gpt-image-2.5-flare、gpt-image-2.5-sunburst、gpt-image-2)はいずれも azure_foundry と openai の両方で提供されており、生成と編集の両方に対応しています。指定しない場合はゲートウェイが自動でルーティングします。
コンテンツ審査に関する要件がある場合はプロバイダーを指定できます。指定するとリクエストはそのプロバイダーにのみ送られ、利用できない場合でも他のプロバイダーには自動で切り替わりません。
そのモデルを提供していないプロバイダーを指定すると 400 provider_type_unavailable が返ります。
openai/gpt-image-2 の 2 つのプロバイダーは審査基準が異なります。プロンプトが繰り返し拒否される場合は、openai を明示的に指定できます。指定しない場合、リクエストは重み付きで振り分けられ、azure_foundry に送られることがあります。
テキストから画像 /v1/images/generations
JSON ボディのため、ボディのフィールド extra_body.provider.type とヘッダー X-OfoxAI-Provider-Type のどちらも使えます。
Python
resp = client.images.generate(
model="openai/gpt-image-2",
prompt="A simple red apple on a white table",
size="1024x1024",
extra_body={"extra_body": {"provider": {"type": "openai"}}},
)公式 OpenAI SDK を使う場合、extra_body はリクエストボディ内にリテラルのキーとして存在する必要があります。TypeScript SDK ではパラメーターオブジェクトに extra_body をそのまま書けば送信されます。Python SDK の extra_body= 引数は内容をボディの最上位にマージするため、1 段深くネストするか、ヘッダーを使ってください。
画像から画像 /v1/images/edits
multipart アップロードには extra_body をネストできる JSON ボディがないため、ヘッダーのみ使用できます。
curl https://api.ofox.ai/v1/images/edits \
-H "Authorization: Bearer $OFOX_API_KEY" \
-H "X-OfoxAI-Provider-Type: openai" \
-F "model=openai/gpt-image-2" \
-F "prompt=..." \
-F "image=@input.png"SDK の場合:Python では extra_headers={"X-OfoxAI-Provider-Type": "openai"} を渡し、TypeScript では第 2 引数に { headers: { 'X-OfoxAI-Provider-Type': 'openai' } } を渡します。
/v1/images/edits では、フォームフィールドとして送った extra_body は黙って無視されます。画像は通常どおり生成されますが、制約は適用されません。代わりに X-OfoxAI-Provider-Type を使ってください。
完全なリファレンスは API · プロバイダールーティングを参照してください。
公式ドキュメントと関連資料
公式ドキュメントは OpenAI を直接呼び出す場合の動作を説明しています。OfoxAI での実測と異なる場合は、本サイトの実測を優先してください。
OpenAI 公式
- 画像生成ガイド · 画像の生成
- 画像生成ガイド · 画像の編集
- 画像生成ガイド · マスクを使った部分編集
- 画像生成ガイド · サイズと品質
- 画像生成ガイド · コストの計算
- Images API リファレンス
OfoxAI シリーズページ
- GPT Image シリーズ概要:モデル選択、サイズ、品質、所要時間、エラー
- テキストから画像生成
- 画像編集と複数画像
- インペインティング
- Nano Banana シリーズ(Gemini Image)とエラー対処
- Seedream シリーズ
- Qwen-Image シリーズ
- MAI Image シリーズ

