GPT Image
| 接口 | 能力 | 请求体 | 必填字段 |
|---|---|---|---|
POST /v1/images/generations | 文生图 | JSON | model、prompt |
POST /v1/images/edits | 图生图 / 蒙版编辑(多参考图) | multipart/form-data | model、prompt、image[] |
两个模型参数集相同、走同一组接口,仅 model 字段不同;输出 token 数与单价各不相同(见「计费口径」)。
ModelGo 按 OpenAI Images API 的官方路径与请求/响应格式原样接收 gpt-image-2 / gpt-image-1.5 请求,网关负责路由到供应商并计费;由哪家供应商渲染对调用方不可见。图像同步返回,无需轮询。
使用 OpenAI 官方 SDK 时,把
base_url指向https://api.modelgo.ai/v1、api_key换成 ModelGo API Key 即可。
1. 创建图像
文生图
POST https://api.modelgo.ai/v1/images/generations
bash
curl https://api.modelgo.ai/v1/images/generations \
-H "Authorization: Bearer $MODELGO_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "一只毛茸茸的橘猫坐在阳光下的窗台上,胶片质感",
"size": "1536x1024",
"quality": "high",
"output_format": "png"
}'图生图 / 蒙版编辑
POST https://api.modelgo.ai/v1/images/edits(multipart/form-data)
bash
curl https://api.modelgo.ai/v1/images/edits \
-H "Authorization: Bearer $MODELGO_API_KEY" \
-F "model=gpt-image-2" \
-F "prompt=把背景换成霓虹夜景,保留猫的姿态" \
-F "image[]=@./cat.png" \
-F "mask=@./mask.png" \
-F "size=1024x1024" \
-F "quality=medium" \
-F "input_fidelity=high"image[]可重复出现,一次传入多张参考图。model、prompt、size、quality、n等文本字段只能出现一次,且必须是普通表单字段(不能作为文件上传),否则返回 400。mask可选,PNG,尺寸必须与第一张image[]一致;透明区域为需要重绘的区域。
响应
json
{
"created": 1757318400,
"data": [{"b64_json": "iVBORw0KGgoAAAANSUhEUgAA..."}],
"usage": {
"input_tokens": 17,
"input_tokens_details": {"text_tokens": 17, "image_tokens": 0},
"output_tokens": 5488,
"output_tokens_details": {"image_tokens": 5488, "text_tokens": 0},
"total_tokens": 5505
}
}图像始终以 data[].b64_json(base64)返回。保存到文件:
bash
curl -s https://api.modelgo.ai/v1/images/generations \
-H "Authorization: Bearer $MODELGO_API_KEY" -H "Content-Type: application/json" \
-d '{"model":"gpt-image-2","prompt":"a red ball on a wooden table"}' \
| python3 -c 'import sys,json,base64; open("out.png","wb").write(base64.b64decode(json.load(sys.stdin)["data"][0]["b64_json"]))'2. 参数说明
| 字段 | 类型 | 适用 | 说明 |
|---|---|---|---|
model | string | 全部 | gpt-image-2 / gpt-image-1.5 |
prompt | string | 全部 | 必填。画面内容描述;edits 中描述要如何修改 |
image[] | file | edits | 必填。一张或多张参考图(png / jpeg / webp) |
mask | file | edits | 可选。PNG 蒙版,尺寸与图像一致,透明区域为重绘区 |
input_fidelity | string | edits | 对参考图的保真度,low / high |
n | int | 全部 | 生成张数,缺省 1 |
size | string | 全部 | 缺省 auto。gpt-image-2:支持常见 宽x高(例如 1024x1024、1536x1024、3840x2160),更细的宽高/像素限制以上游官方文档为准,不通过时 400 的报错信息会写明原因。gpt-image-1.5:仅 1024x1024 / 1536x1024 / 1024x1536 / auto |
quality | string | 全部 | low / medium / high / auto,缺省 auto。直接决定输出 token 数 |
output_format | string | 全部 | png / jpeg / webp |
output_compression | int | 全部 | 0–100,仅对 jpeg / webp 生效 |
background | string | 全部 | opaque / transparent / auto |
moderation | string | 全部 | 内容审核强度,透传 |
response_format不适用于 gpt-image 系列。 网关会在转发前剥离该字段,不报错;图像始终以b64_json返回,不提供url形态。- 参数取值以实际交付能力为准。 上表是模型能力说明,不是网关的准入白名单;
size/quality/output_format/background等取值会原样透传给实际路由到的供应商。取值不受支持时返回400,报错信息写明原因,不计费。 - 按可交付档位选路。 网关优先选择能按所声明
size/quality交付的供应商,以减少请求被拒的概率;最终能否交付由供应商决定。
输出 token
输出 token 由模型、size 和 quality 共同决定,具体数值以响应中的 usage 为准。quality: high 通常明显高于缺省档,gpt-image-1.5 通常也显著高于同档位的 gpt-image-2;两个模型的单价不同,换模型前请核算成本。
3. 完整示例(Python,OpenAI 官方 SDK)
python
import base64, os
from openai import OpenAI
client = OpenAI(api_key=os.environ["MODELGO_API_KEY"], base_url="https://api.modelgo.ai/v1")
# 文生图
r = client.images.generate(model="gpt-image-2", prompt="一只橘猫坐在窗台上,胶片质感",
size="1536x1024", quality="high", output_format="png")
open("cat.png", "wb").write(base64.b64decode(r.data[0].b64_json))
print(r.usage.output_tokens_details.image_tokens)
# 图生图(蒙版编辑)
with open("cat.png", "rb") as img, open("mask.png", "rb") as mask:
e = client.images.edit(model="gpt-image-2", prompt="把背景换成霓虹夜景",
image=[img], mask=mask, size="1024x1024", quality="medium")
open("cat-neon.png", "wb").write(base64.b64decode(e.data[0].b64_json))4. 计费口径
- 按 token 计费,三个价目:文本输入(
input)、图像输入(image_input)、图像输出(image_output),单位为每百万 token。输出中的图像部分按image_output单价计。 - gpt-image-2 与 gpt-image-1.5 各有独立价卡,同一档位的输出 token 数也可能差异显著,同一请求在两个模型上的费用不可互推。
- 请求时预授权冻结,响应返回后按
usage中的实际 token 结算:input_tokens_details.text_tokens→input,input_tokens_details.image_tokens→image_input,output_tokens_details.image_tokens→image_output。 - 请求被拒(
400)或生成失败不计费,预授权自动释放。 - 各价目以控制台「模型列表」中的价格为准。
常见错误
| 现象 | 原因 | 处理 |
|---|---|---|
返回 400 | size / quality 等取值不受支持(例如超出上游的宽高/像素限制);edits 缺 image[] 或 mask 尺寸与图像不一致;缺 prompt;n 不是整数 | 按报错信息修正参数或换档位 |
传了 response_format: "url" 仍返回 b64_json | gpt-image 系列不支持该字段,网关静默剥离 | 从 data[].b64_json 解码保存 |
返回 429 | 触发速率限制 | 退避重试;如需更高配额联系平台 |
返回 401 | API Key 无效或未带 Authorization 头 | 核对 Key |