GPT Image 图片生成与编辑 API 参数教程
最后更新:
生图模型(gpt-image-2、gpt-image-2.5-flare 等)和聊天模型不是同一个接口,很多人直接塞进聊天客户端就报错。这一页把参数一个个讲清楚,代码可以直接复制。


以上两张图都是用本页的示例代码在本站实际生成的。
准备工作
- 创建一个分组为
vip-1-image的 Key(或default分组,价格 2 倍)。见 创建 API Key。 - 生图是按次计费:每次请求固定价格,和图片内容、token 无关,具体价格看 模型广场。
n填几就按几张计费。 - 生成一张图通常要 20 秒 ~ 2 分钟,客户端 / 代码的超时请设置到 300 秒以上。
最常见的错误
不能用
/v1/chat/completions(聊天接口)调用生图模型,会返回 Unknown endpoint。在聊天客户端里选 gpt-image-2 发消息是不行的,要用下面的「图片生成」接口,或者使用支持「绘图 / Image」功能的客户端。图片生成:/v1/images/generations
请求地址:POST https://ai-api.site/v1/images/generations,请求体是 JSON。
| 参数 | 必填 | 说明 | 示例 |
|---|---|---|---|
model | ✅ | 生图模型 ID | "gpt-image-2" |
prompt | ✅ | 图片描述,中文英文都行,越具体越好(主体、风格、构图、光线、颜色) | "一只橘猫坐在窗台上看雨,水彩风格" |
size | 图片尺寸:1024x1024(方图)、1536x1024(横图)、1024x1536(竖图)、auto。注意中间是小写字母 x,不是乘号 × | "1536x1024" | |
quality | 画质:low / medium / high / auto。越高越慢 | "high" | |
n | 一次生成几张,默认 1。每张单独计费 | 1 | |
background | 背景:auto / transparent(透明,需配合 png)/ opaque | "transparent" | |
output_format | 输出格式:png / jpeg / webp | "png" |
cURL
curl https://ai-api.site/v1/images/generations \
-H "Authorization: Bearer sk-你的Key" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "一只橘猫坐在窗台上看雨,水彩风格",
"size": "1024x1024",
"n": 1
}' > result.jsonPython(推荐)
# pip install openai
import base64
from openai import OpenAI
client = OpenAI(base_url="https://ai-api.site/v1", api_key="sk-你的Key", timeout=300)
resp = client.images.generate(
model="gpt-image-2",
prompt="一只橘猫坐在窗台上看雨,水彩风格",
size="1024x1024", # 1024x1024 / 1536x1024(横) / 1024x1536(竖) / auto
quality="medium", # low / medium / high / auto
n=1,
)
# 返回的是 base64,需要自己解码保存
with open("cat.png", "wb") as f:
f.write(base64.b64decode(resp.data[0].b64_json))
print("已保存 cat.png")Node.js
// Node.js 18+,无需安装依赖
import { writeFileSync } from "node:fs";
const r = await fetch("https://ai-api.site/v1/images/generations", {
method: "POST",
headers: {
"Authorization": "Bearer sk-你的Key",
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "gpt-image-2",
prompt: "赛博朋克风格的城市夜景,霓虹灯,雨夜",
size: "1536x1024",
}),
});
const data = await r.json();
if (!r.ok) throw new Error(JSON.stringify(data));
writeFileSync("city.png", Buffer.from(data.data[0].b64_json, "base64"));返回结果怎么用?(b64_json)
接口返回的不是图片链接,而是 base64 编码的图片数据,放在 data[0].b64_json 里。传 response_format: "url" 也一样返回 base64。需要自己解码保存成文件:
{
"created": 1793965352,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAA...(很长的一串,就是图片本身)",
"revised_prompt": "一只橘猫坐在窗台上看雨,水彩风格",
"output_format": "png",
"width": "1254",
"height": "1254"
}
],
"model": "gpt-image-2",
"quality": "medium",
"size": "1254x1254"
}# 已经拿到 result.json,用一行 Python 把图片解出来
python3 -c "import json,base64;d=json.load(open('result.json'));open('out.png','wb').write(base64.b64decode(d['data'][0]['b64_json']))"提示
想在网页里直接显示,不用存文件:
<img src="data:image/png;base64,这里放b64_json">。图片编辑 / 参考图生图:/v1/images/edits
上传一张(或多张)图片,让模型在此基础上修改:换背景、加东西、改风格、多图合成等。请求地址:POST https://ai-api.site/v1/images/edits,请求体是 multipart/form-data(表单上传文件),不是 JSON。
| 参数 | 必填 | 说明 |
|---|---|---|
model | ✅ | 如 gpt-image-2 |
image | ✅ | 要编辑的图片文件(png / jpg / webp)。多张参考图时重复传多个 image[] |
prompt | ✅ | 想怎么改。写清楚「改什么」和「哪些保持不变」效果最好 |
mask | 蒙版 png(透明区域 = 要修改的区域),只想改局部时使用 | |
size / quality / n | 同上 |
cURL
curl https://ai-api.site/v1/images/edits \
-H "Authorization: Bearer sk-你的Key" \
-F model=gpt-image-2 \
-F image=@cat.png \
-F "prompt=给这只猫戴上一顶红色毛线帽,其他保持不变" \
-F size=1024x1024 > edit.jsonPython
import base64
from openai import OpenAI
client = OpenAI(base_url="https://ai-api.site/v1", api_key="sk-你的Key", timeout=300)
resp = client.images.edit(
model="gpt-image-2",
image=open("cat.png", "rb"), # 多张参考图:image=[open("a.png","rb"), open("b.png","rb")]
prompt="给这只猫戴上一顶红色毛线帽,其他保持不变",
size="1024x1024",
)
with open("cat_hat.png", "wb") as f:
f.write(base64.b64decode(resp.data[0].b64_json))生图模型怎么选
| 模型 ID | 说明 |
|---|---|
gpt-image-2 | 默认推荐,效果和速度均衡 |
gpt-image-2.5-flare / gpt-image-2.6-flare | 新版本,flare 系列 |
gpt-image-2.5-sunburst / gpt-image-2.6-sunburst | 新版本,sunburst 系列 |
参数完全一样,只换 model 即可。可以用同一个提示词各生成一张对比,挑你喜欢的风格。
生图常见错误
| 报错 / 现象 | 原因和解决 |
|---|---|
Unknown endpoint | 用了聊天接口。改用 /v1/images/generations |
No available channel for the current group | Key 的分组不是 vip-1-image / default,去编辑 Key 改分组 |
| 请求一直转圈然后超时 | 生图要几十秒到两分钟,把超时调到 300 秒;Python SDK 用 timeout=300 |
| 拿到一大串乱码字符 | 那就是 base64 图片,按上面的方法解码保存 |
Invalid size 之类 | size 写成了 1024*1024 或 1024×1024,要用小写字母 x |
| 编辑接口报参数错误 | edits 要用表单(-F)上传文件,不能用 JSON |
| 提示内容违规 / 被拒绝 | 提示词或图片触发了上游安全审核,修改描述后重试 |
还有问题?看 常见问题 →