图片生成与编辑

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

可用模型

模型说明质量档位resolution
gpt-image-2GPT Image 2,稳定版low、medium、high、auto不支持
gpt-image-2.5-flareGPT Image 2.5 Flare,速度优先,适合批量出图low、medium、high、xhigh、max、auto1k、2k、4k
gpt-image-2.5-sunburstGPT Image 2.5 Sunburst,细节与编辑精度优先low、medium、high、xhigh、max、auto1k、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 请求格式。

请求参数

参数类型必填说明
modelstring是模型名称,见 可用模型
promptstring是生成提示词(最长 4000 字符)
sizestring否输出尺寸,默认 auto。支持任意 WxH 格式,需满足:两边为 16 的倍数、最大边 ≤ 3840、宽高比 ≤ 3:1、总像素 655,360–8,294,400。常用值:1024x1024、1536x1024、1024x1536、2048x2048、3840x2160
ninteger否生成数量 1-4(默认 1)
qualitystring否质量:low、medium、high、xhigh、max、auto(默认)。xhigh、max 仅 2.5 支持
resolutionstring否分辨率档位:1k、2k、4k。仅 gpt-image-2.5-flare / gpt-image-2.5-sunburst 支持;不传时默认 1k
callback_urlstring否任务完成后回调地址

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

请求参数

参数类型必填说明
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是模型名称,见 可用模型
promptstring是编辑指令
imagestring | string是通过上传接口获取的图片 URL,可传多张
maskstring否蒙版图片 URL(通过上传接口获取)。当前承接 gpt-image-2 / gpt-image-2.5 系列的上游不支持蒙版,带 mask 的任务会失败并自动退还预扣额度
sizestring否输出尺寸,默认 auto。支持任意 WxH 格式,需满足:两边为 16 的倍数、最大边 ≤ 3840、宽高比 ≤ 3:1、总像素 655,360–8,294,400。常用值:1024x1024、1536x1024、1024x1536、2048x2048、3840x2160
ninteger否生成数量;当前图片编辑仅支持 1
qualitystring否质量:low、medium、high、xhigh、max、auto(默认)。xhigh、max 仅 2.5 支持
resolutionstring否分辨率档位:1k、2k、4k。仅 gpt-image-2.5-flare / gpt-image-2.5-sunburst 支持;不传时默认 1k
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.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请求参数错误,或图片格式/大小不符合限制
401API Key 无效或已过期
402余额不足
403API Key 无权调用该模型(兼容显式模型范围配置;当前动态范围 Auto Key 通常不会触发)
429请求频率或额度限制
500服务内部错误
503当前没有可用商家