完成条件与适用入口
需要提交 GPT Image 1.5 或其他本目录模型的蒙版请求时,先阅读蒙版局部编辑。本页说明调用完成后如何读取与保存图片。
本页适用于 Images 生成与编辑接口。普通请求在一次 HTTP 响应中返回完整 JSON;首先检查 HTTP 状态及 error,然后确认 data 为非空数组,并逐项读取图片。流式请求使用完成事件。
这些接口不返回供本目录轮询的图像任务 ID。created 是时间戳,不是 ID;不要拼接 /images/{id}、/videos/{id} 或任意任务查询地址。
响应字段
| 字段、类型与位置 | 填写规则与限制 |
|---|---|
created;integer;响应顶层 | 必填;未指定默认值。创建时间,Unix 秒;不是任务 ID,也不表示可用来查询或下载。 |
data;array;响应顶层 | 可选;未指定默认值。图片结果数组;应用应检查数组非空,再逐项读取 b64_json。 |
background;string;响应顶层 | 可选;未指定默认值。实际背景类型;可缺省,不作为判断成功的唯一条件。 |
output_format;string;响应顶层 | 可选;未指定默认值。实际图片编码;可缺省,缺省时按请求明确指定的编码保存。 |
size;string;响应顶层 | 可选;未指定默认值。实际尺寸;可缺省,不保证总是与请求字符串完全相同。 |
quality;string;响应顶层 | 可选;未指定默认值。实际质量档位;可缺省。 |
usage;object;响应顶层 | 可选;未指定默认值。用量对象;可能缺省,各细分字段以实际返回为准。它是 token 用量,不是人民币金额。 |
数组项字段如下。官方 GPT Image 主要使用 b64_json,不要依赖 DALL·E 的可选返回字段。
| 字段、类型与位置 | 填写规则与限制 |
|---|---|
b64_json;string;data[] 内 | 可选;未指定默认值。Base64 图片内容;解码为二进制后保存,不包含 data:image/... 前缀。GPT Image 使用这一结果字段。 |
url;string;data[] 内 | 可选;未指定默认值。官方 GPT Image 不保证返回此字段。某些兼容入口返回临时链接时应尽快下载,不能套用 DALL·E 的固定有效期。 |
revised_prompt;string;data[] 内 | 可选;未指定默认值。可缺省;官方 Images 定义主要用于 DALL·E 3。GPT Image 应自行保存原始 prompt,不依赖此字段。 |
下面是结构示意,用一张 1×1 PNG 的 Base64 作为合成占位图片,仅展示解码位置,不代表真实模型输出或计费用量:
{
"created": 1789862400,
"data": [
{
"b64_json": "iVBORw0KGgoAAAANSUhEUgAAAAEAAAABCAQAAAC1HAwCAAAAC0lEQVR42mP8/x8AAwMCAO+j5k0AAAAASUVORK5CYII="
}
],
"output_format": "png"
}保存 Base64 图片
文生图、本地编辑和 JSON 编辑的 Python/Node.js 示例已经逐张保存文件。cURL 保存的是 response.json,可在保存后用以下 Python 脚本离线解码;该脚本不会发送网络请求,不需要 API Key。
import base64
import json
from pathlib import Path
result = json.loads(Path("response.json").read_text(encoding="utf-8"))
if result.get("error"):
raise RuntimeError(result["error"])
images = result.get("data")
if not isinstance(images, list) or not images:
raise RuntimeError("响应中没有图片结果")
extension = result.get("output_format") or "png"
if extension not in ("png", "jpeg", "webp"):
raise RuntimeError("未知的图片编码")
for index, item in enumerate(images):
if not item.get("b64_json"):
raise RuntimeError("缺少 b64_json,请检查原始响应")
content = base64.b64decode(item["b64_json"], validate=True)
filename = f"output-{index + 1}.{extension}"
Path(filename).write_bytes(content)
print(filename)文件后缀应与真实编码一致,不要把 JPEG 的 Base64 解码后命名为 PNG。用于网页预览时,可以按编码在 Base64 前加上相应的 Data URL 前缀;不要把原始 JSON 当作图片。
兼容入口返回 URL 时
官方 GPT Image 不支持用 response_format=url 选择 URL 输出。若实际使用的兼容入口返回 data[].url,以该入口的说明为准:尽快下载并自行存储,不假定长期有效,也不要套用其他图像模型的“60 分钟”有效期。
临时图片下载地址可能位于独立文件域名。不要把青云TOP API Key 发送给第三方图片域名;遇到失效或下载失败时保存请求信息与脱敏错误联系支持,不反复重新生成同一张图片。
用量、结果数量和异常
usage.input_tokens、output_tokens、total_tokens 及输入图片/文本细分表示用量,不是金额。部分响应不含完整用量,不能把字段缺失解释成免费。账单以控制台记录为准。
按实际 data 数组逐项保存;数量少于请求的 n、HTTP 200 但没有图片、无法解码时,记录响应并检查错误,不把空文件算作成功。接口返回可能较大,生产应用应限制日志中 Base64 和素材内容的输出。
官方参考:OpenAI Images 响应结构,排错入口:常见错误与迁移。