GPT Image

接口能力请求体必填字段
POST /v1/images/generations文生图JSONmodel、prompt
POST /v1/images/edits图生图 / 蒙版编辑(多参考图)multipart/form-datamodel、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. 参数说明

字段类型适用说明
modelstring全部gpt-image-2 / gpt-image-1.5
promptstring全部必填。画面内容描述;edits 中描述要如何修改
image[]fileedits必填。一张或多张参考图(png / jpeg / webp)
maskfileedits可选。PNG 蒙版,尺寸与图像一致,透明区域为重绘区
input_fidelitystringedits对参考图的保真度,low / high
nint全部生成张数,缺省 1
sizestring全部缺省 auto。gpt-image-2:支持常见 宽x高(例如 1024x1024、1536x1024、3840x2160),更细的宽高/像素限制以上游官方文档为准,不通过时 400 的报错信息会写明原因。gpt-image-1.5:仅 1024x1024 / 1536x1024 / 1024x1536 / auto
qualitystring全部low / medium / high / auto,缺省 auto。直接决定输出 token 数
output_formatstring全部png / jpeg / webp
output_compressionint全部0–100,仅对 jpeg / webp 生效
backgroundstring全部opaque / transparent / auto
moderationstring全部内容审核强度,透传
  • 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)或生成失败不计费,预授权自动释放。
  • 各价目以控制台「模型列表」中的价格为准。

常见错误

现象原因处理
返回 400size / quality 等取值不受支持(例如超出上游的宽高/像素限制);edits 缺 image[] 或 mask 尺寸与图像不一致;缺 prompt;n 不是整数按报错信息修正参数或换档位
传了 response_format: "url" 仍返回 b64_jsongpt-image 系列不支持该字段,网关静默剥离从 data[].b64_json 解码保存
返回 429触发速率限制退避重试;如需更高配额联系平台
返回 401API Key 无效或未带 Authorization 头核对 Key