Images API
エンドポイントは2つ:生成(テキスト → 画像)、編集(画像 + テキスト → 画像)。レスポンスはいずれも OpenAI 標準構造の data[0].b64_json です。
| やりたいこと | エンドポイント | 対応モデル |
|---|---|---|
| テキストから画像を生成 | POST /v1/images/generations | openai/gpt-image-2、google/gemini-3.1-flash-image、bailian/qwen-image-3.0-pro |
| 画像をアップロードして指示で編集 | POST /v1/images/edits | OpenAI / Azure のみ:openai/gpt-image-2、openai/gpt-image-1.5 |
画像から画像への変換には例外が2つあります。Qwen 系列は edits ではなく generations エンドポイントの input_images フィールドを使います。Gemini 系列はこのページのどちらのエンドポイントでも編集できないため、Gemini ネイティブプロトコル をご利用ください。
プロバイダーの指定
provider.type はリクエストを特定のプロバイダーに固定します。意味があるのは複数のプロバイダーで提供されるモデルだけで、現時点では openai/gpt-image-2(azure_foundry と openai)です。そのモデルを提供していないプロバイダーを指定すると 400 provider_type_unavailable が返ります。
| プロバイダー | 説明 | コンテンツ審査 |
|---|---|---|
azure_foundry | Microsoft Azure 上でホスト | 厳しめ |
openai | OpenAI 公式 API | 比較的ゆるやか |
openai/gpt-image-2 の 2 つのプロバイダーは審査基準が異なります:azure_foundry は厳しめ、openai は比較的ゆるやかです。プロンプトが繰り返し拒否される場合は provider.type: "openai" を明示的に指定してください —— 指定しないと重み付き分散で azure_foundry に振り分けられることがあります。
完全なリファレンスは API · プロバイダールーティング を参照してください。
テキストから画像 — /v1/images/generations
/v1/images/generations は JSON ボディなので、ボディのフィールドとヘッダーのどちらも使えます。
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 はパラメータオブジェクトに記述したとおりに送信します。Python SDK の extra_body= 引数は内容をボディのトップレベルにマージするため、キーをもう 1 段階深くネストするか、リクエストヘッダーで渡してください。
画像編集 — /v1/images/edits
/v1/images/edits は multipart アップロードで、extra_body をネストできる JSON ボディがありません。したがってここではヘッダーのみ有効です。extra_body をフォームフィールドとして渡しても無視され、制約なしでリクエストが通ります。
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パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
model | string | ✅ | openai/gpt-image-2、google/gemini-3.1-flash-image, bailian/qwen-image-3.0-pro |
prompt | string | ✅ | 自然言語による説明 |
quality | string | ✅ | auto / low / medium / high / standard / hd |
n | number | — | 1〜10、デフォルト 1。Gemini モデルは非対応 |
size | string | — | auto / 1024x1024 / 1536x1024 / 1024x1536 / 256x256 / 512x512 / 1792x1024 / 1024x1792 |
input_images | string[] | — | 参照画像の配列(URL または base64)。Qwen 系列の画像モデルが対応、1〜3 枚。有効時はレスポンスに usage.num_input_images が含まれる |
output_format | string | — | png / jpeg / webp |
background | string | — | transparent / opaque / auto |
stream | boolean | — | デフォルト false |
extra_body.provider.type | string | — | プロバイダーを指定します。複数のプロバイダーが提供するモデルでのみ意味を持ちます(このエンドポイントでは現在 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)
Python
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))実際の出力:

Gemini 系列(gemini-3.1-flash-image)
同じエンドポイントは Gemini 画像モデルにも対応します。n を渡してはいけません——ゲートウェイが n を numberOfImages フィールドへ誤マッピングして 400 エラーになります。1リクエストにつき固定で 1 枚生成されます。
Python
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))実際の出力:

Qwen 系列(qwen-image-3.0-pro)
bailian/qwen-image-3.0-pro などの Qwen 画像モデルは、このエンドポイントで参照画像(1〜3 枚)を直接渡して画像から画像への変換・編集ができます。フィールドは input_images(要素は画像 URL または base64)です:
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"]
}'参照画像が有効な場合、レスポンスの usage に num_input_images(入力画像の枚数)が含まれます。モデルが実際に読み込んだかをプログラムで確認できます。
フィールド名は必ず input_images です。image_urls、image、images などの他の書き方は黙って無視され、リクエストは単なるテキストから画像への生成に退化します(HTTP は 200 のまま)。
画像を編集
POST https://api.ofox.run/v1/images/editsmultipart/form-data で、画像ファイルのアップロードが必要です。
このエンドポイントは OpenAI / Azure OpenAI モデルのみ対応です。google/gemini-3.1-flash-image を呼び出すと Image editing is not supported for model が返ります——Gemini ネイティブプロトコルでの画像編集 に切り替えてください。
パラメータ
| パラメータ | 型 | 必須 | 説明 |
|---|---|---|---|
model | string | ✅ | 推奨は openai/gpt-image-2 |
image | file | ✅ | PNG / JPEG ファイル。1 ファイル最大 15 MB、1 リクエストあたり最大 16 枚、リクエストボディ合計 50 MB。1 ファイル 5 MB 以内を推奨:モデル側で入力画像は約 1024 px 相当のキャンバスに縮小されるため、大きなファイルはアップロード時間が増えるだけです |
prompt | string | ✅ | 編集指示 |
quality | string | ✅ | low / medium / high |
n | number | — | デフォルト 1 |
size | string | — | auto は元画像と同じサイズ |
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 は入力画像の枚数です。
対応モデルと料金は モデルカタログ をご覧ください。
呼び出し
Python
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 ではありません。
実際の比較:
| 元画像 | 編集後 |
|---|---|
![]() | ![]() |
