图片生成与编辑
图片生成和图片编辑都采用异步任务模式:提交请求后立即返回 task_id,再通过 任务查询 或 Webhook 回调 获取最终结果。
POST /v1/images/generations
提交图片生成任务。兼容 OpenAI Images API 的 JSON 请求格式。
请求参数
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | 模型名称,如 gpt-image-2 |
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、auto(默认) |
callback_url | string | 否 | 任务完成后回调地址 |
请求示例
curl https://api.token8.pro/v1/images/generations \
-H "Authorization: Bearer sk-你的AutoKey" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-image-2",
"prompt": "A sunset over mountains, cinematic lighting",
"size": "1024x1024",
"quality": "high",
"callback_url": "https://your-server.com/webhook"
}'
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 | 是 | 模型名称,如 gpt-image-2 |
prompt | string | 是 | 编辑指令 |
image | string | string | 是 | 通过上传接口获取的图片 URL,可传多张 |
mask | string | 否 | 蒙版图片 URL(通过上传接口获取) |
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、auto(默认) |
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",
"prompt": "把图片改成夜晚霓虹风格,保留主体构图",
"image": ["https://r2.token8.pro/uploads/.../abc123.png"],
"size": "1024x1024"
}'
多图编辑:在 image 数组中传多个上传 URL:
{
"model": "gpt-image-2",
"prompt": "融合两张参考图的风格",
"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',
prompt: '把图片改成夜晚霓虹风格,保留主体构图',
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",
"created_at": 1714450000
}
获取结果
任务提交后需等待完成。
Webhook 回调:请求时传 callback_url,任务完成后 Token8 自动 POST 结果到你的服务器。详见 Webhook 回调。
轮询:用 task_id 调用 任务查询接口 主动获取状态。任务查询不要求 API Key;如果你的代码沿用提交请求的 Authorization header,服务端会忽略它。首次查询建议等待 3 秒,之后使用退避间隔;图片编辑可能比生成耗时更长。
状态码
| 状态码 | 说明 |
|---|---|
| 200 | 任务已提交 |
| 400 | 请求参数错误,或图片格式/大小不符合限制 |
| 401 | API Key 无效或已过期 |
| 402 | 余额不足 |
| 403 | 模型不在 Auto Key 允许范围内 |
| 429 | 请求频率或额度限制 |
| 500 | 服务内部错误 |
| 503 | 当前没有可用商家 |