图片生成与编辑

图片生成和图片编辑都采用异步任务模式:提交请求后立即返回 task_id,再通过 任务查询Webhook 回调 获取最终结果。

POST /v1/images/generations

提交图片生成任务。兼容 OpenAI Images API 的 JSON 请求格式。

请求参数

参数类型必填说明
modelstring模型名称,如 gpt-image-2
promptstring生成提示词(最长 4000 字符)
sizestring输出尺寸,默认 auto。支持任意 WxH 格式,需满足:两边为 16 的倍数、最大边 ≤ 3840、宽高比 ≤ 3:1、总像素 655,360–8,294,400。常用值:1024x10241536x10241024x15362048x20483840x2160
ninteger生成数量 1-4(默认 1)
qualitystring质量:lowmediumhighauto(默认)
callback_urlstring任务完成后回调地址

请求示例

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,无需重复传文件。

请求参数

参数类型必填说明
filefile图片文件(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 → 提交编辑任务

请求参数

参数类型必填说明
modelstring模型名称,如 gpt-image-2
promptstring编辑指令
imagestring | string通过上传接口获取的图片 URL,可传多张
maskstring蒙版图片 URL(通过上传接口获取)
sizestring输出尺寸,默认 auto。支持任意 WxH 格式,需满足:两边为 16 的倍数、最大边 ≤ 3840、宽高比 ≤ 3:1、总像素 655,360–8,294,400。常用值:1024x10241536x10241024x15362048x20483840x2160
ninteger生成数量 1-4(默认 1)
qualitystring质量:lowmediumhighauto(默认)
callback_urlstring任务完成后回调地址

完整示例

第 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请求参数错误,或图片格式/大小不符合限制
401API Key 无效或已过期
402余额不足
403模型不在 Auto Key 允许范围内
429请求频率或额度限制
500服务内部错误
503当前没有可用商家