适用模型与事件含义

本页适用于 GPT Image 2.5 Sunburst、2.5 Flare、2、1.5 和 1 的 Images 请求。stream=true 改变响应方式,不会把图像请求变成可轮询的异步任务。

响应 Content-Type 为 text/event-stream。一个事件由空行分隔,可能跨越多个网络 chunk;不要对每个 chunk 直接执行 JSON 解析。预览图片不等于最终结果,也不是进度百分比。某些情况下只会收到最终事件,不能依赖一定有预览。

第一步:设置鉴权

请求头使用 Authorization: Bearer YOUR_API_KEY。将 YOUR_API_KEY 替换为青云TOP API 的 API Key,保留 Bearer 后的一个空格。基础地址为 https://top.qingyuntop.ai;使用 SDK 时,base_url 通常填写 https://top.qingyuntop.ai/v1。

第二步:开启流式请求

生成入口为 POST https://top.qingyuntop.ai/v1/images/generations,使用 JSON。编辑入口仍为 POST https://top.qingyuntop.ai/v1/images/edits,可使用 JSON 图片引用或文件表单。

请求参数

字段、类型与位置填写规则与限制
model;string;JSON 顶层必填;明确填写。本站调用请明确填写模型 ID;见模型表。不要省略,也不要填写不带 sunburst/flare 的 gpt-image-2.5。
prompt;string;JSON 顶层必填;未指定默认值。必填,最多 32000 字符;描述主体、构图、文字与约束。编辑时说明修改目标和应保留内容。
n;integer;JSON 顶层可选;默认 1。1–10 的整数;指输出图片数量,与输入素材数量不同。推荐先用 1。不要填写 0、小数或把通用上限当成模型上限。
size;string;JSON 顶层可选;默认 auto。尺寸字符串使用半角 x;常用 1024x1024、1536x1024、1024x1536。2/2.5 的自定义尺寸规则见下文;示例均显式设置尺寸。
quality;string;JSON 顶层可选;默认 auto。1/1.5/2 使用 auto、low、medium、high;2.5 的两个型号还支持 xhigh、max。不要使用 DALL·E 的 hd 或 standard。
output_format;string;JSON 顶层可选;默认 png。png、jpeg、webp;控制图片文件编码。字段名不是 format;与 Base64 返回方式不是同一概念。
stream;boolean;JSON 顶层可选;默认 false。false 返回完整 JSON;true 返回 SSE 事件。流式编辑仍使用相同的 edits 地址。
partial_images;integer;JSON 顶层可选;默认 0。0–3 的整数,配合 stream=true;0 不请求中间预览,默认 0。最终结果可能提前完成,实际预览数可少于请求数。

下面示例使用 2.5 Flare、n=1、partial_images=2。预览索引从 0 开始,实际数量可能小于 2;只有完成事件中的图片用于最终交付。

三语言流式示例

cURL 使用 Bash 并支持 --fail-with-body,将完整 SSE 保存为 stream.sse;这是事件文本文件,不是图片。Python 需安装 requests;Node.js 需 20 或更新版本并保存为 .mjs。Python/Node.js 按 SSE 的行与空行边界解析、识别错误、保存最终图片,并检查最终图片是否齐全。

超时 600 秒是示例客户端设置;Python 的读取超时指没有收到数据的等待时间,Node.js/cURL 的总时限指本次请求持续时间,都不是服务端的生成时限。

curl --fail-with-body --connect-timeout 30 --max-time 600 --no-buffer "https://top.qingyuntop.ai/v1/images/generations" \
  -H "Authorization: Bearer YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
  "model": "gpt-image-2.5-flare",
  "prompt": "一只坐在窗边读书的橘猫,温暖的水彩插画。",
  "n": 1,
  "size": "1024x1024",
  "quality": "medium",
  "output_format": "png",
  "stream": true,
  "partial_images": 2
}' \
  --output stream.sse

事件和完成判断

类型含义与处理
image_generation.partial_image生成预览;读取 b64_json、partial_image_index,可临时展示,不标记最终完成
image_edit.partial_image编辑预览,按相同方式处理
image_generation.completed最终图片可用;解码 b64_json 并保存
image_edit.completed编辑最终图片;处理方式与生成完成一致
error、upstream_error 或非空 error 字段记录脱敏错误并结束本次消费;HTTP 200 也可能出现流内错误
data: [DONE] 或正常 EOF流结束信号;仍需检查是否收到最终图片,不能单凭结束信号判定成功

完成事件通常带 created_at、output_format、size、quality、background 或 usage;兼容响应可能缺少部分辅助字段。程序应兼容两类完成事件,不依赖编辑请求一定使用 image_edit.completed。保存格式优先使用事件的 output_format,缺省时采用请求中明确设置的编码。

如何改为流式编辑

将图片上传或 JSON 编辑的请求体补充 stream=true、partial_images=2,保留原始图片和蒙版结构,再使用本页的事件消费逻辑。multipart 中这两个值是表单文本;JSON 中分别是布尔值和整数。

只把流式请求的 URL 改为 edits 而没有提供图片,会导致缺少输入错误。不要把图像 SSE 当作 Chat Completions 的 choices[].delta,也不要等待 Responses 的 response.completed 事件。

断线、超时与恢复

Images 流没有本目录可用的任务查询、断点续传或取消入口。断线、停止读取和本地超时不自动等于上游取消或生成失败;不要立即自动重发,否则可能重复生成并计费。

保留已收到的最终图片、请求时间、模型和脱敏错误;未收到最终结果时检查控制台记录,必要时联系本站支持确认,再决定是否重新提交。预览图不能替代丢失的最终结果。

官方参考:OpenAI Images 流事件定义。