Skip to Content

Images API

两个端点:生成(文字 → 图)、编辑(图 + 文字 → 图)。响应都是 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/edits仅 OpenAI / Azure:openai/gpt-image-2openai/gpt-image-1.5

两个「图生图」的例外:Qwen 系列的图生图走 generations 端点的 input_images 字段,不走 editsGemini 系列在本页两个端点都不能编辑,需走 Gemini 原生协议

指定供应商

provider.type 用于将请求锁定到指定供应商。它只对由多个供应商承载的模型有意义 —— 目前是 openai/gpt-image-2azure_foundryopenai)。指定未承载该模型的供应商会返回 400 provider_type_unavailable

供应商说明内容审核
azure_foundry微软云托管较严格
openaiOpenAI 官方 API相对宽松

openai/gpt-image-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 在参数对象中直接书写 extra_body 即可;Python SDK 的 extra_body= 参数会将其内容合并至请求体顶层,因此需额外嵌套一层,或改用请求头传递。

图生图 /v1/images/edits

/v1/images/edits 是 multipart 上传,没有 JSON 请求体可供嵌套 extra_body,因此此处只能使用请求头。把 extra_body 作为表单字段传会被忽略,请求将在无约束的情况下继续执行。

Terminal
curl https://api.ofox.io/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.io/v1/images/generations

参数

参数类型必填说明
modelstringopenai/gpt-image-2google/gemini-3.1-flash-imagebailian/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.io/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——网关会把 n 错误映射为 numberOfImages 字段并报 400,每次固定生成 1 张。

gen_gemini.py
import base64 from openai import OpenAI client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.io/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.io/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_imagesimage_urlsimageimages 等其他写法会被静默忽略,请求会退化为纯文生图(HTTP 仍返回 200)。

编辑图像

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

multipart/form-data,需上传图片文件。

此端点仅支持 OpenAI / Azure OpenAI 模型gpt-image-2gpt-image-1.5)。google/gemini-3.1-flash-image 调用会返回 Image editing is not supported for model——改走 Gemini 原生协议编辑图像

参数

参数类型必填说明
modelstringopenai/gpt-image-2openai/gpt-image-1.5(为编辑优化,支持 input_fidelity 保真控制)
imagefilePNG / JPEG 文件
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 是输入图片消耗的 token,num_input_images 是输入图片张数。

支持的模型与价格见 模型目录 

调用

edit.py
import base64 from openai import OpenAI client = OpenAI(api_key="YOUR_OFOX_API_KEY", base_url="https://api.ofox.io/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