推荐优先使用异步生成接口

gpt-image-2、gpt-image-2-2K 和 gpt-image-2-4K 都支持同步生成与异步生成;耗时较长时推荐使用异步接口。
三个模型都可以调用 POST /v1/images/generations。同步请求会在服务内部等待异步任务完成,客户端超时较短、批量并发或需要可靠轮询时,请改用 POST /v1/images/generations/jobs。
图片生成和 URL 参考图创作推荐使用异步任务接口。异步任务能避免客户端长时间等待单个 HTTP 请求,也更适合并发提交、轮询和失败重试: 如果你使用 Codex、Claude Code 或 Cursor,不想手写请求和轮询代码,可以先打开 Agent 生图 Skill 安装页,复制对应命令后直接用自然语言生成并保存图片。
短耗时或兼容旧客户端时,也可以调用同步接口:

不推荐:图片 Edit 接口

图片 Edit 接口不推荐调用,请使用异步生成接口。
不推荐新接入调用 POST /v1/images/edits。需要参考图改图、换装、合成或多图创作时,请调用异步生成接口,并把图片 URL 或 Base64 放入 JSON image 或 images 数组。
/v1/images/edits 仅保留给必须使用 OpenAI multipart Edit 语义的旧客户端:

异步文生图

创建任务:
响应会返回任务 ID 和初始状态:
轮询结果:
任务完成后状态为 succeeded,结果在 data 数组中;失败时状态为 failed,错误原因在 error.message。

轮询实现细节

图片任务的推荐接入方式是轮询。创建任务后,应用侧应把任务 ID 持久化,而不是只放在浏览器内存里。 建议保存这些字段: 推荐轮询节奏:
  1. 创建任务后立即查询一次,确认任务已记录。
  2. 前 30 秒每 2-3 秒查询一次。
  3. 之后可放慢到每 5-10 秒一次。
  4. 查询到 succeeded 或 failed 后停止轮询。
  5. 页面关闭、刷新或用户稍后回来时,用已保存的任务 ID 继续查询。
不要在轮询超时后自动重新创建同一个任务。更稳的做法是保留任务 ID,把页面显示为“仍在处理中”,并允许用户手动刷新状态。 JavaScript 轮询示例:
结果读取逻辑要同时兼容 URL 和 base64:

异步参考图创作

远程图片应使用公网可访问的 OSS/CDN URL,并放入异步任务 JSON 的 image 数组。需要多张网络 URL 做参考图创作、换装、合成或改图时,推荐直接使用 /v1/images/generations/jobs。

参考图数量限制

  • gpt-image-2-2K:最多 8 张参考图,传入 9 张或更多会返回“参考图过多”错误。
  • gpt-image-2-4K:最多 8 张参考图,传入 9 张或更多会返回“参考图过多”错误。
  • 标准版 gpt-image-2 的上限可能不同,不要在客户端把三个模型统一写死为 8 张;应根据所选模型处理接口返回。
参考图数量按 image 或 images 数组中的图片数量计算,包含 URL 和 Base64 图片。建议在提交前显示已选数量,但最终限制以接口返回为准。

Base64 单图输入

本地参考图可以直接编码为 Base64,放入 images 普通字符串数组。服务会流式解码并上传到临时 COS 存储,再把参考图 URL 传给渠道,不需要客户端先单独上传。 以下示例的 Base64 是输入参考图;response_format: "url" 表示输出仍返回图片 URL。

Base64 多图输入

多张参考图按顺序放入同一个 images 数组,在 prompt 中说明各自用途:
替换图片路径即可。PNG 图片使用 data:image/png;base64,,WebP 使用 data:image/webp;base64,,GIF 使用 data:image/gif;base64,;前缀必须与实际图片格式一致。也支持不带前缀的标准 Base64。 提交成功返回 HTTP 202 和任务 id。使用返回的 ID 每隔约 5 秒查询一次:
查询到 succeeded 或 failed 后停止;成功时结果 URL 在 data[0].url。不要因为轮询超时而自动重新提交任务。

输入格式与上传限制

  • images 支持普通字符串数组,也支持 [{ "image_url": "data:image/jpeg;base64,..." }] 对象数组;可混合 URL 和 Base64,保留输入顺序。
  • image、image[]、images 是参考图字段的兼容写法,一次请求只使用其中一种。
  • Base64 图片支持 PNG、JPEG、WebP、GIF。默认每张解码后最多 10 MiB,每次最多上传 14 张 Base64 图片、合计最多 64 MiB,实际限制以服务配置为准。
  • URL 参考图不占 Base64 上传数量,但总参考图数量仍受模型和渠道限制;14 张上传上限不代表所有模型都支持 14 张参考图。
  • 同一请求中的重复图片分别上传,不会合并;未使用显式幂等键时,不同请求分别创建任务。
  • 多图输入是多张参考图,不是生成多张结果图;Base64 输入与 response_format 输出格式相互独立。

同步兼容调用

如果客户端必须兼容 OpenAI Images 的同步返回格式,可以继续使用:
同步调用会一直等待结果返回。页面、移动端、Serverless、队列 worker 或批量并发场景不建议使用同步等待;这类场景请使用异步任务接口并保存任务 ID。

图片 URL 建议

  • 图片地址必须公网可访问,且在请求期间不会过期。
  • 大图建议先通过 OSS/CDN 图片处理 resize 到合适分辨率,例如长边 1024,再提交给模型。
  • 多张参考图按语义顺序放入 image 数组,并在 prompt 中说明每张图的用途。

常用参数

这里使用 format,不要写成 output_format。gpt-image-2 当前不支持 n 批量生成;一次请求只生成一张图片,需要多张结果时请发起多次请求。

分辨率档位

使用基础模型 gpt-image-2 时,服务主要根据像素 size 的最长边选择模型和计费档位: GPT Image 2 只使用 size 选择分辨率档位,其他图片档位兼容字段不参与选档。未传像素 size、使用 auto 或仅传画幅比例时,基础模型默认按 1K。 档位用于选择模型和计费。size 仍表示实际输出宽高,并继续受下方尺寸限制约束。

推荐尺寸

这些预设尺寸通常出图更快,接入时建议优先使用:

尺寸限制

gpt-image-2-2K 与 gpt-image-2-4K 当前使用相同的尺寸边界。自定义尺寸时需要同时满足:
  • size 使用 WIDTHxHEIGHT 格式,宽高均为正数。
  • 最大边长不超过 3840px。
  • 宽高都是 16px 的倍数。
  • 长边与短边比例不超过 3:1。
  • 总像素数不少于 655,360,且不超过 8,294,400。
常见边界: 3840x2176 会因为总像素超限失败,3856x2048 会因为最长边超限失败,1936x640 会因为比例超过 3:1 失败,1024x1025 会因为不是 16 的倍数失败。
解析后的模型档位决定计费,size 决定实际输出尺寸和优先档位。

排查顺序

  1. 先跑纯文生图,确认模型可用。
  2. 再传一张 OSS/CDN 图片 URL。
  3. 单图正常后测试多图数组。
  4. 没有图片结果时,记录完整响应并确认图片字段位置。
  5. 浏览器、移动端或后端调用超时时,应改为异步任务模式,不要让页面或请求线程长时间等待单个同步请求。