Skip to Content
API リファレンスOpenAI 互換プロトコルImages

Images API

エンドポイントは 2 つです:生成(テキスト → 画像)と編集(画像 + テキスト → 画像)。レスポンスはいずれも OpenAI 標準構造の data[0].b64_json です。

やりたいことエンドポイント対応モデル
テキストから画像を生成POST /v1/images/generationsGPT Image、Nano Banana(Gemini)、Seedream、Qwen-Image、MAI Image の各シリーズ
画像をアップロードして指示で編集POST /v1/images/editsGPT Image、Nano Banana(Gemini)、MAI Image

Seedream と Qwen-Image は /v1/images/edits に対応していません。画像から画像への変換は generations エンドポイントで行いますが、参照画像のフィールドが異なります。Seedream は image、Qwen は input_images です。取り違えないよう注意してください。Gemini で解像度(512〜4K)を制御する必要がある場合は Gemini ネイティブプロトコルを使います。シリーズごとのパラメーターの違いは各シリーズのページを参照してください。

クイックスタート

最小限の実行可能なリクエストです。1024×1024 の画像を 1 枚生成し、デコードして output.png として保存します。

base_urlhttps://api.ofox.ai/v1
生成エンドポイントhttps://api.ofox.ai/v1/images/generations
編集エンドポイントhttps://api.ofox.ai/v1/images/edits
モデル IDopenai/gpt-image-2.5-flare
gen.py
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 シリーズを参照してください。

必須
model必須string

モデル ID。大文字と小文字を区別します。誤ると 404 model_not_found が返ります。

▸ 詳細

対応モデルはこのページ冒頭の表を参照してください。openai/gpt-image-2.5-flare のように、ベンダープレフィックス付きの完全な ID を指定することを推奨します。

prompt必須string

生成する画像の説明。

よく使うパラメーター
sizestring· デフォルト auto· 有効な値幅x高さauto

出力サイズ。幅と高さは自由に指定できますが、4 つの制約を満たさないと 400 Invalid size が返ります。

▸ 詳細

4 つの制約:

  • 幅・高さともに 16 で割り切れる
  • 長辺 ≤ 3840
  • アスペクト比が 1:3〜3:1 の範囲内
  • 総ピクセル数 ≥ 655,360(768x768 は不可、1024x768 は可)

省略または auto の場合はモデルが決定し、実測では 1254×1254 が返りました。固定サイズが必要な場合は明示的に指定してください。他のシリーズはサイズのルールが異なるため、各シリーズのページを参照してください。詳細は GPT Image · サイズを参照してください。

qualitystring· 有効な値lowmediumhighxhighmaxauto

品質ティア。価格に直接影響します。gpt-image-2 には xhigh / max がありません。

▸ 詳細
  • gpt-image-2 には xhigh / max がなく、指定すると 400 が返ります。
  • DALL·E 時代の standard / hd は受け付けず、指定すると 400 が返ります。
  • 省略は medium と同じではありません。モデルがティアを選びます(実測では low が選ばれました)。品質とコストを安定させるには明示的に指定してください。

他のシリーズの多くにはティアがありません。各シリーズのページを参照してください。詳細は GPT Image · 品質を参照してください。

ninteger· デフォルト 1· 有効な値1–10

生成枚数。1 枚ごとに課金されます。Gemini モデルは非対応のため、指定しないでください。

output_formatstring· デフォルト png· 有効な値pngjpegwebp

出力ファイル形式。

▶高度な設定 · 7output_compression · background · moderation · stream · partial_images · input_images · extra_body.provider.type展开
output_compressioninteger· 有効な値0–100

圧縮率。jpeg / webp でのみ有効です。

backgroundstring· デフォルト opaque· 有効な値opaquetransparentauto

背景。transparent にはアルファチャンネルに対応した形式(png / webp)が必要です。

moderationstring· 有効な値autolow

コンテンツ審査の強度。

streamboolean· 有効な値truefalse

ストリーミングで返すかどうか。partial_images と組み合わせると、生成途中の中間画像を受け取れます。

partial_imagesinteger· 有効な値0–3

ストリーミングで返す中間画像の枚数。stream: true が必要です。OpenAI 公式ドキュメントによると、中間画像 1 枚ごとに出力トークンが 100 追加されます。

input_imagesstring[]· 有効な値1–3 枚

参照画像の配列(URL または base64)。Qwen シリーズのみ対応しており、1〜3 枚です。

▸ 詳細

他のシリーズではエラーにならず、効果もありません。Seedream の参照画像フィールドは image です。

extra_body.provider.typestring· 有効な値azure_foundryopenai

プロバイダーを指定します。任意で、通常は不要です。ゲートウェイが自動でルーティングします。コンテンツ審査に関する要件がある場合に指定を検討してください。指定したプロバイダーが利用できない場合、他のプロバイダーには自動で切り替わりません。

▸ 詳細

ヘッダー X-OfoxAI-Provider-Type と等価です。応用:プロバイダーの指定を参照してください。

レスポンス

200 OK(b64_json は省略)
{ "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 のときに複数の画像を区別します。

sizestring

実際の出力サイズ。size を省略した場合や auto を指定した場合は、ここで実際のサイズを確認してください。

qualitystring

実際に使用された品質ティア。quality を省略した場合は、ここで使用されたティアを確認できます。

実際に使用された背景と形式。常に返るとは限らないため、これらのフィールドに依存しないでください。

usageobject

課金対象の使用量。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 シリーズに適用されます。

必須
model必須stringform

モデル ID。ルールは生成エンドポイントと同じです。対応モデルはこのページ冒頭の表を参照してください。

image必須fileform· 有効な値PNGJPEG

参照画像。URL ではなくローカルファイルを渡します(cURL では @ を前置)。

▸ 詳細

複数の場合はフィールド名を image[] として繰り返し渡します。1 ファイル ≤ 15 MB、リクエストボディ ≤ 50 MB です。枚数はゲートウェイ側では制限しませんが、16 枚以内を推奨します。

prompt必須stringform

編集指示。

よく使うパラメーター
maskfileform· 有効な値PNG(アルファ付き)

インペインティング用マスク。アルファチャンネル付きの PNG で、image と同じサイズにします。透明な部分 = 描き直される部分です。

▸ 詳細

このエンドポイントでのみ有効で、生成エンドポイントに送っても黙って無視されます。作り方と実測結果は GPT Image · マスクによるインペインティングを参照してください。

sizestringform· デフォルト auto· 有効な値幅x高さauto

出力サイズ。制約は生成エンドポイントと同じです。

▸ 詳細

省略または auto の場合はモデルが決定するため、元画像と同じになるとは限りません。元のサイズを保つには明示的に指定してください。

qualitystringform· 有効な値lowmediumhighxhighmaxauto

品質ティア。ルールは生成エンドポイントと同じで、gpt-image-2 には xhigh / max がありません。

nintegerform· デフォルト 1· 有効な値1–10

生成枚数。1 枚ごとに課金されます。

▶高度な設定 · 1X-OfoxAI-Provider-Type展开
X-OfoxAI-Provider-Typestringheader· 有効な値azure_foundryopenai

プロバイダーを指定します。任意で、通常は不要です。ゲートウェイが自動でルーティングします。コンテンツ審査に関する要件がある場合に指定を検討してください。指定したプロバイダーが利用できない場合、他のプロバイダーには自動で切り替わりません。

▸ 詳細

このエンドポイントは multipart アップロードのため、プロバイダーを固定するにはヘッダーのみ有効です。フォームフィールドの extra_body は黙って無視されます。応用:プロバイダーの指定を参照してください。

レスポンス

構造は生成エンドポイントと同じで、usage に参照画像の入力トークンが加わります:

200 OK(b64_json は省略)
{ "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 でした。編集が同じサイズのテキストからの画像生成より高くなる主な理由はこの項目です。

参照画像の枚数。モデルが参照画像を実際に読み取ったことの確認に使えます。

その他のフィールドは生成エンドポイントのレスポンスと同じです。

対応モデルと価格は モデルカタログ を参照してください。

呼び出し

edit.py
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 エラーステータスと次の構造が返ります(実測):

400 Bad Request
{ "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 で判定してください。

ステータスエラー原因対処
400Invalid size '…'サイズが 4 つの制約を満たしていないsize のルールに従って調整する
400does not support quality '…' または無効な値gpt-image-2 に xhigh / max を指定した、または standard / hd を指定したquality に記載の値を使う
400Unknown parameter: '…'DALL·E の style など、非対応のフィールドを指定したそのフィールドを削除する
400Invalid image file or mode for image 1参照画像が PNG / JPEG でない、またはマスクがアルファ付き PNG でない・元画像とサイズが一致しないimage と mask を確認する
400provider_type_unavailable指定したプロバイダーがこのモデルを提供していないプロバイダー指定を外し、ゲートウェイに自動でルーティングさせる
404model_not_foundモデル ID の綴り誤り、または大文字・小文字の誤りこのページの表から完全な ID をコピーする
429rate_limit_exceededチームあたり 100 RPM を超えた。Key を増やしても上限は上がらない同時実行数を下げ、バックオフしてから再試行する

サポートに問い合わせる際は、レスポンスの 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 が返ります。

プロバイダー説明コンテンツ審査(gpt-image-2)
azure_foundryMicrosoft Azure 上でホスト厳しめ
openaiOpenAI 公式 API比較的ゆるやか

openai/gpt-image-2 の 2 つのプロバイダーは審査基準が異なります。プロンプトが繰り返し拒否される場合は、openai を明示的に指定できます。指定しない場合、リクエストは重み付きで振り分けられ、azure_foundry に送られることがあります。

テキストから画像 /v1/images/generations

JSON ボディのため、ボディのフィールド extra_body.provider.type とヘッダー X-OfoxAI-Provider-Type のどちらも使えます。

gen_pinned.py
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 ボディがないため、ヘッダーのみ使用できます。

Terminal
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 公式

OfoxAI シリーズページ

最終更新日