Images API
两个端点:生成(文字 → 图)、编辑(图 + 文字 → 图)。响应都是 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 |
两个「图生图」的例外:Qwen 系列的图生图走 generations 端点的 input_images 字段,不走 edits;Gemini 系列在本页两个端点都不能编辑,需走 Gemini 原生协议。
指定供应商
provider.type 用于将请求锁定到指定供应商。它只对由多个供应商承载的模型有意义 —— 目前是 openai/gpt-image-2(azure_foundry 与 openai)。指定未承载该模型的供应商会返回 400 provider_type_unavailable。
| 供应商 | 说明 | 内容审核 |
|---|---|---|
azure_foundry | 微软云托管 | 较严格 |
openai | OpenAI 官方 API | 相对宽松 |
openai/gpt-image-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 在参数对象中直接书写 extra_body 即可;Python SDK 的 extra_body= 参数会将其内容合并至请求体顶层,因此需额外嵌套一层,或改用请求头传递。
图生图 /v1/images/edits
/v1/images/edits 是 multipart 上传,没有 JSON 请求体可供嵌套 extra_body,因此此处只能使用请求头。把 extra_body 作为表单字段传会被忽略,请求将在无约束的情况下继续执行。
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参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
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.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))实测输出:

Gemini 系列生图(gemini-3.1-flash-image)
同一端点也接受 Gemini 图像模型。不要传 n——网关会把 n 错误映射为 numberOfImages 字段并报 400,每次固定生成 1 张。
Python
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))实测输出:

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.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_images。image_urls、image、images 等其他写法会被静默忽略,请求会退化为纯文生图(HTTP 仍返回 200)。
编辑图像
POST https://api.ofox.io/v1/images/editsmultipart/form-data,需上传图片文件。
此端点仅支持 OpenAI / Azure OpenAI 模型(gpt-image-2、gpt-image-1.5)。google/gemini-3.1-flash-image 调用会返回 Image editing is not supported for model——改走 Gemini 原生协议编辑图像。
参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | ✅ | openai/gpt-image-2、openai/gpt-image-1.5(为编辑优化,支持 input_fidelity 保真控制) |
image | file | ✅ | PNG / JPEG 文件 |
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 是输入图片消耗的 token,num_input_images 是输入图片张数。
支持的模型与价格见 模型目录 。
调用
Python
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。
实测对比:
| 原图 | 编辑后 |
|---|---|
![]() | ![]() |
