Skip to Content

Images API

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

やりたいことエンドポイント対応モデル
テキストから画像を生成POST /v1/images/generationsopenai/gpt-image-2google/gemini-3.1-flash-imagebailian/qwen-image-3.0-pro
画像をアップロードして指示で編集POST /v1/images/editsOpenAI / Azure のみ:openai/gpt-image-2openai/gpt-image-1.5

画像から画像への変換には例外が2つあります。Qwen 系列は edits ではなく generations エンドポイントの input_images フィールドを使います。Gemini 系列はこのページのどちらのエンドポイントでも編集できないため、Gemini ネイティブプロトコル をご利用ください。

プロバイダーの指定

provider.type はリクエストを特定のプロバイダーに固定します。意味があるのは複数のプロバイダーで提供されるモデルだけで、現時点では openai/gpt-image-2azure_foundryopenai)です。そのモデルを提供していないプロバイダーを指定すると 400 provider_type_unavailable が返ります。

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

openai/gpt-image-2 の 2 つのプロバイダーは審査基準が異なります:azure_foundry は厳しめ、openai は比較的ゆるやかです。プロンプトが繰り返し拒否される場合は provider.type: "openai" を明示的に指定してください —— 指定しないと重み付き分散で azure_foundry に振り分けられることがあります。

完全なリファレンスは API · プロバイダールーティング を参照してください。

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

/v1/images/generations は JSON ボディなので、ボディのフィールドとヘッダーのどちらも使えます。

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 はパラメータオブジェクトに記述したとおりに送信します。Python SDK の extra_body= 引数は内容をボディのトップレベルにマージするため、キーをもう 1 段階深くネストするか、リクエストヘッダーで渡してください。

画像編集 — /v1/images/edits

/v1/images/edits は multipart アップロードで、extra_body をネストできる JSON ボディがありません。したがってここではヘッダーのみ有効ですextra_body をフォームフィールドとして渡しても無視され、制約なしでリクエストが通ります。

Terminal
curl https://api.ofox.run/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"

/v1/images/edits では、フォームフィールドとして渡した extra_body黙って無視されます —— 画像は生成されますが制約は効きません。X-OfoxAI-Provider-Type を使ってください。

画像を生成

POST https://api.ofox.run/v1/images/generations

パラメータ

パラメータ必須説明
modelstringopenai/gpt-image-2google/gemini-3.1-flash-image, bailian/qwen-image-3.0-pro
promptstring自然言語による説明
qualitystringauto / low / medium / high / standard / hd
nnumber1〜10、デフォルト 1。Gemini モデルは非対応
sizestringauto / 1024x1024 / 1536x1024 / 1024x1536 / 256x256 / 512x512 / 1792x1024 / 1024x1792
input_imagesstring[]参照画像の配列(URL または base64)。Qwen 系列の画像モデルが対応、1〜3 枚。有効時はレスポンスに usage.num_input_images が含まれる
output_formatstringpng / jpeg / webp
backgroundstringtransparent / opaque / auto
streambooleanデフォルト false
extra_body.provider.typestringプロバイダーを指定します。複数のプロバイダーが提供するモデルでのみ意味を持ちます(このエンドポイントでは現在 openai/gpt-image-2)。ヘッダー X-OfoxAI-Provider-Type と等価です

レスポンス

{ "created": 1777385517, "data": [ { "b64_json": "<画像 Base64>", "index": 0 } ], "model": "openai/gpt-image-2", "size": "1024x1024", "quality": "low", "usage": { "input_tokens": 14, "input_tokens_details": { "text_tokens": 14 }, "output_tokens": 208, "total_tokens": 222 } }

画像は data[0].b64_json に格納されているので、Base64 デコードして保存してください。

OpenAI 系列(gpt-image-2)

gen.py
import base64 from openai import OpenAI client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.run/v1") resp = client.images.generate( model="openai/gpt-image-2", prompt="A simple red apple on a white table", size="1024x1024", quality="low", output_format="png", # 任意:プロバイダーを指定。省略するとプラットフォームが自動で振り分けます # extra_body={"extra_body": {"provider": {"type": "openai"}}}, ) with open("output.png", "wb") as f: f.write(base64.b64decode(resp.data[0].b64_json))

実際の出力:

gpt-image-2 で生成した赤いリンゴ

Gemini 系列(gemini-3.1-flash-image)

同じエンドポイントは Gemini 画像モデルにも対応します。n を渡してはいけません——ゲートウェイが nnumberOfImages フィールドへ誤マッピングして 400 エラーになります。1リクエストにつき固定で 1 枚生成されます。

gen_gemini.py
import base64 from openai import OpenAI client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.run/v1") resp = client.images.generate( model="google/gemini-3.1-flash-image", prompt="A simple red apple on a white table, photorealistic", size="1024x1024", quality="low", output_format="png", ) with open("output.png", "wb") as f: f.write(base64.b64decode(resp.data[0].b64_json))

実際の出力:

Gemini で生成した赤いリンゴ

Qwen 系列(qwen-image-3.0-pro)

bailian/qwen-image-3.0-pro などの Qwen 画像モデルは、このエンドポイントで参照画像(1〜3 枚)を直接渡して画像から画像への変換・編集ができます。フィールドは input_images(要素は画像 URL または base64)です:

Terminal
curl -X POST 'https://api.ofox.run/v1/images/generations' \ -H 'Authorization: Bearer YOUR_OFOX_API_KEY' \ -H 'Content-Type: application/json' \ -d '{ "model": "bailian/qwen-image-3.0-pro", "prompt": "リンゴを青くして、他はそのままにしてください", "size": "1024x1024", "input_images": ["https://example.com/ref-apple.png"] }'

参照画像が有効な場合、レスポンスの usagenum_input_images(入力画像の枚数)が含まれます。モデルが実際に読み込んだかをプログラムで確認できます。

フィールド名は必ず input_images です。image_urlsimageimages などの他の書き方は黙って無視され、リクエストは単なるテキストから画像への生成に退化します(HTTP は 200 のまま)。

画像を編集

POST https://api.ofox.run/v1/images/edits

multipart/form-data で、画像ファイルのアップロードが必要です。

このエンドポイントは OpenAI / Azure OpenAI モデルのみ対応です。google/gemini-3.1-flash-image を呼び出すと Image editing is not supported for model が返ります——Gemini ネイティブプロトコルでの画像編集 に切り替えてください。

パラメータ

パラメータ必須説明
modelstring推奨は openai/gpt-image-2
imagefilePNG / JPEG ファイル。1 ファイル最大 15 MB、1 リクエストあたり最大 16 枚、リクエストボディ合計 50 MB。1 ファイル 5 MB 以内を推奨:モデル側で入力画像は約 1024 px 相当のキャンバスに縮小されるため、大きなファイルはアップロード時間が増えるだけです
promptstring編集指示
qualitystringlow / medium / high
nnumberデフォルト 1
sizestringauto は元画像と同じサイズ
X-OfoxAI-Provider-Typeヘッダープロバイダーを指定します。このエンドポイントは multipart アップロードのためヘッダーのみ有効で、フォームフィールドの extra_body は黙って無視されます

レスポンス

生成と同じ構造です:

{ "created": 1777385669, "data": [ { "b64_json": "<編集後画像 Base64>", "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 } }

usage.input_tokens_details.image_tokens は入力画像が消費したトークン数、num_input_images は入力画像の枚数です。

対応モデルと料金は モデルカタログ  をご覧ください。

呼び出し

edit.py
import base64 from openai import OpenAI client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.run/v1") with open("apple.png", "rb") as f: resp = client.images.edit( model="openai/gpt-image-2", image=f, prompt="リンゴを緑色に変えて、それ以外はそのままにしてください", size="auto", quality="low", # 任意:プロバイダーを指定。このエンドポイントは multipart のためヘッダーのみ有効 # extra_headers={"X-OfoxAI-Provider-Type": "openai"}, ) with open("apple_edited.png", "wb") as out: out.write(base64.b64decode(resp.data[0].b64_json))

image フィールドにはローカルファイルパスを渡します(cURL では @ を前置)。URL ではありません。

実際の比較:

元画像編集後
元の赤いリンゴ編集後の緑のリンゴ
Last updated on