GPT Image(gpt-image-2 / gpt-image-1.5)图像生成 / 编辑(OpenAI Images 原生协议)
| 模型 | 接口 | 缺省档输出 token(1024x1024 + quality: auto,实测) |
|---|---|---|
gpt-image-2 | generations / edits | 196 |
gpt-image-1.5 | generations / edits | 4444 |
| 接口 | 能力 | 请求体 | 必填字段 |
|---|---|---|---|
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.com/v1、api_key换成 ModelGo API Key 即可。
1. 创建图像
文生图
POST https://api.modelgo.com/v1/images/generations
bash
curl https://api.modelgo.com/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.com/v1/images/edits(multipart/form-data)
bash
curl https://api.modelgo.com/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[]可重复出现,一次传入多张参考图。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.com/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 | 全部 | 1024x1024 / 1536x1024 / 1024x1536 / auto,缺省 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不在上表内、缺prompt→ HTTP400,不计费。- 按可交付档位选路。 网关只把请求交给能按所声明
size/quality交付的供应商;若当前无供应商能出该档位,返回400,不产生费用。
输出 token 参考(实测)
| 模型 | size | quality | output_tokens_details.image_tokens |
|---|---|---|---|
gpt-image-2 | 1024x1024 | auto(缺省) | 196 |
gpt-image-2 | 1536x1024 | high | 5488 |
gpt-image-1.5 | 1024x1024 | auto(缺省) | 4444 |
输出 token 由模型、尺寸与质量档共同决定:gpt-image-2 的 high 档比缺省档高一个数量级以上;同为缺省档,gpt-image-1.5 的输出 token 是 gpt-image-2 的 20 倍以上。两个模型的 token 数与单价都不同,换模型前请核算成本。
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.com/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 数差异显著(缺省档 196 对 4444),同一请求在两个模型上的费用不可互推。
- 请求时预授权冻结,响应返回后按
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 不在参数表内;缺 prompt;edits 缺 image[] 或 mask 尺寸与图像不一致;当前无供应商能出所请求档位 | 按参数表修正或换档位 |
传了 response_format: "url" 仍返回 b64_json | gpt-image 系列不支持该字段,网关静默剥离 | 从 data[].b64_json 解码保存 |
返回 429 | 触发速率限制 | 退避重试;如需更高配额联系平台 |
返回 401 | API Key 无效或未带 Authorization 头 | 核对 Key |