图片生成与编辑
图片生成和图片编辑都采用异步任务模式:提交请求后立即返回 task_id,再通过 任务查询 或 Webhook 回调 获取最终结果。
可用模型
| 模型 | 说明 | 质量档位 | resolution |
|---|---|---|---|
gpt-image-2 | GPT Image 2,稳定版 | low、medium、high、auto | 不支持 |
gpt-image-2.5-flare | GPT Image 2.5 Flare,速度优先,适合批量出图 | low、medium、high、xhigh、max、auto | 1k、2k、4k |
gpt-image-2.5-sunburst | GPT Image 2.5 Sunburst,细节与编辑精度优先 | low、medium、high、xhigh、max、auto | 1k、2k、4k |
resolution只对gpt-image-2.5-flare/gpt-image-2.5-sunburst生效。xhigh和max也只属于 2.5;对gpt-image-2传这两个值会返回400。
2k、4k是否可用取决于商家渠道配置;如果当前渠道未开放该档位,任务会失败并提示该分辨率档位未启用,此时可改用1k或联系客服开通。
POST /v1/images/generations
提交图片生成任务。兼容 OpenAI Images API 的 JSON 请求格式。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名称,见 可用模型 |
prompt | string | 是 | 生成提示词(最长 4000 字符) |
size | string | 否 | 输出尺寸,默认 auto。支持任意 WxH 格式,需满足:两边为 16 的倍数、最大边 ≤ 3840、宽高比 ≤ 3:1、总像素 655,360–8,294,400。常用值:1024x1024、1536x1024、1024x1536、2048x2048、3840x2160 |
n | integer | 否 | 生成数量 1-4(默认 1) |
quality | string | 否 | 质量:low、medium、high、xhigh、max、auto(默认)。xhigh、max 仅 2.5 支持 |
resolution | string | 否 | 分辨率档位:1k、2k、4k。仅 gpt-image-2.5-flare / gpt-image-2.5-sunburst 支持;不传时默认 1k |
callback_url | string | 否 | 任务完成后回调地址 |
size与resolution同时传入时,size决定画面比例,resolution决定像素档位。例如size: "1024x1024"+resolution: "2k"得到 2K 方形图;只传size时由size推断档位。
请求示例
curl https://api.token8.pro/v1/images/generations \
-H "Authorization: Bearer sk-你的AutoKey" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-flare",
"prompt": "A sunset over mountains, cinematic lighting",
"size": "1024x1024",
"resolution": "1k",
"quality": "high",
"callback_url": "https://your-server.com/webhook"
}'
指定 2K 档位:
curl https://api.token8.pro/v1/images/generations \
-H "Authorization: Bearer sk-你的AutoKey" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-sunburst",
"prompt": "产品海报,浅灰工作室背景",
"resolution": "2k",
"quality": "high"
}'
继续使用
gpt-image-2时,请求格式与本文档完全兼容,无需携带resolution。
POST /v1/uploads/images
图片编辑需要先上传参考图。调用此接口上传图片到 Token8,获取可复用的 URL,然后在 edits 请求中引用。上传本身不计费。
- 返回的 URL 有效期 24 小时,期间可在多次 edits 请求中重复引用同一张图。
- 同一张参考图只需上传一次,多次编辑直接传 URL,无需重复传文件。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
file | file | 是 | 图片文件(PNG、JPEG、WebP,最大 25MB) |
请求示例
curl https://api.token8.pro/v1/uploads/images \
-H "Authorization: Bearer sk-你的AutoKey" \
-F "file=@./input.png"
响应
{
"url": "https://r2.token8.pro/uploads/.../abc123.png",
"filename": "input.png",
"content_type": "image/png",
"bytes": 235680,
"width": 1024,
"height": 1024,
"created_at": 1714450000,
"expires_at": 1714536400
}
文件限制
| 限制项 | 说明 |
|---|---|
| 文件类型 | PNG、JPEG、WebP |
| 单文件大小 | 最大 25 MB |
| 输入图片数量 | 每次上传 1 张 |
POST /v1/images/edits
提交图片编辑任务。需要先通过 上传接口 上传参考图,拿到 URL 后在请求中引用。
推荐流程:上传图片 → 拿到 URL → 提交编辑任务
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名称,见 可用模型 |
prompt | string | 是 | 编辑指令 |
image | string | string | 是 | 通过上传接口获取的图片 URL,可传多张 |
mask | string | 否 | 蒙版图片 URL(通过上传接口获取)。当前承接 gpt-image-2 / gpt-image-2.5 系列的上游不支持蒙版,带 mask 的任务会失败并自动退还预扣额度 |
size | string | 否 | 输出尺寸,默认 auto。支持任意 WxH 格式,需满足:两边为 16 的倍数、最大边 ≤ 3840、宽高比 ≤ 3:1、总像素 655,360–8,294,400。常用值:1024x1024、1536x1024、1024x1536、2048x2048、3840x2160 |
n | integer | 否 | 生成数量;当前图片编辑仅支持 1 |
quality | string | 否 | 质量:low、medium、high、xhigh、max、auto(默认)。xhigh、max 仅 2.5 支持 |
resolution | string | 否 | 分辨率档位:1k、2k、4k。仅 gpt-image-2.5-flare / gpt-image-2.5-sunburst 支持;不传时默认 1k |
callback_url | string | 否 | 任务完成后回调地址 |
完整示例
第 1 步:上传参考图
curl https://api.token8.pro/v1/uploads/images \
-H "Authorization: Bearer sk-你的AutoKey" \
-F "file=@./input.png"
# 返回 → {"url": "https://r2.token8.pro/uploads/.../abc123.png", ...}
第 2 步:提交编辑任务
curl https://api.token8.pro/v1/images/edits \
-H "Authorization: Bearer sk-你的AutoKey" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2.5-sunburst",
"prompt": "把图片改成夜晚霓虹风格,保留主体构图",
"image": ["https://r2.token8.pro/uploads/.../abc123.png"],
"size": "1024x1024",
"resolution": "2k"
}'
多图编辑:在 image 数组中传多个上传 URL:
{
"model": "gpt-image-2.5-sunburst",
"prompt": "融合两张参考图的风格",
"resolution": "1k",
"image": [
"https://r2.token8.pro/uploads/.../subject.png",
"https://r2.token8.pro/uploads/.../style.png"
]
}
JavaScript 示例
// 第 1 步:上传图片
const uploadForm = new FormData()
uploadForm.append('file', fileInput.files[0])
const uploadRes = await fetch('https://api.token8.pro/v1/uploads/images', {
method: 'POST',
headers: { Authorization: `Bearer ${TOKEN8_API_KEY}` },
body: uploadForm,
})
const { url: imageUrl } = await uploadRes.json()
// 第 2 步:提交编辑任务
const editRes = await fetch('https://api.token8.pro/v1/images/edits', {
method: 'POST',
headers: {
Authorization: `Bearer ${TOKEN8_API_KEY}`,
'Content-Type': 'application/json',
},
body: JSON.stringify({
model: 'gpt-image-2.5-sunburst',
prompt: '把图片改成夜晚霓虹风格,保留主体构图',
resolution: '2k',
image: [imageUrl],
}),
})
const task = await editRes.json()
console.log(task.task_id)
// 第 3 步:轮询结果 → GET /v1/tasks/{task_id}
响应 200
生成和编辑提交成功后返回相同结构:
{
"task_id": "task_abc123def456",
"status": "pending",
"model": "gpt-image-2.5-flare",
"created_at": 1714450000
}
计费
Token8 的图片接口按每张成功生成的图片固定计费,与上游实际 token 用量无关。当前 gpt-image-2.5-flare 和 gpt-image-2.5-sunburst 与 gpt-image-2 使用相同价格档位,resolution 和 quality 不会改变扣费金额。
resolution | 输出档位 |
|---|---|
1k(默认) | 与 gpt-image-2 默认档位一致 |
2k | 更高分辨率,按同一固定价计费 |
4k | 最高分辨率,按同一固定价计费 |
- 提交任务时按所选模型预扣额度,任务失败会自动退还。
- 各模型的对外单价以 模型广场 展示为准,工作台用量记录中可以逐笔核对。
- 本阶段 2.5 的定价与 2.0 对齐,用于观察期对比;如果后续按实际用量调整计费方式,价格页和本文档会同步更新。
获取结果
任务提交后需等待完成。
Webhook 回调:请求时传 callback_url,任务完成后 Token8 自动 POST 结果到你的服务器。详见 Webhook 回调。
轮询:用 task_id 调用 任务查询接口 主动获取状态。任务查询不要求 API Key;如果你的代码沿用提交请求的 Authorization header,服务端会忽略它。首次查询建议等待 3 秒,之后使用退避间隔;图片编辑可能比生成耗时更长。
状态码
| 状态码 | 说明 |
|---|---|
| 200 | 任务已提交 |
| 400 | 请求参数错误,或图片格式/大小不符合限制 |
| 401 | API Key 无效或已过期 |
| 402 | 余额不足 |
| 403 | API Key 无权调用该模型(兼容显式模型范围配置;当前动态范围 Auto Key 通常不会触发) |
| 429 | 请求频率或额度限制 |
| 500 | 服务内部错误 |
| 503 | 当前没有可用商家 |