Skip to main content

OpenAI 图片生成 / 编辑

本页覆盖两种能力:
  • 文生图 POST /v1/images/generations
  • 图生图 / 编辑 POST /v1/images/edits
两者都走 OpenAI 兼容协议。新接入推荐使用 gpt-image-2.5-flare 或 gpt-image-2.5-sunburst;已有业务仍可继续使用 gpt-image-2-2026-04-21、gpt-image-1 / gpt-image-1.5。

接口与传图方式速查

OpenAI 标准的图片编辑使用 multipart/form-data。为方便服务端直接传 URL 或 Base64,平台额外支持 JSON body;不需要先把远程图片下载成本地文件。

GPT Image 2.5(推荐)

平台提供两个独立模型名,请按场景明确选择,不要使用 gpt-image-2.5 作为模型名: 两个模型都支持 low、medium、high、xhigh、max 和 auto 六档质量。当前平台接入支持 PNG 和 JPEG 输出;WebP 暂不支持。

文生图

cURL

图片编辑

精细编辑推荐使用 Sunburst。图片编辑同时支持 multipart/form-data 和 application/json。

multipart/form-data:上传本地图片

以下示例上传本地图片并要求以 JPEG 返回:
cURL

application/json:传入 URL 或 Base64

JSON 请求中的 image 是字符串数组,每个元素可以是 HTTP(S) URL、纯 Base64,或带 data:image/...;base64, 前缀的 Base64。即使只有一张图片也需要使用数组。可选的 mask 是单个 URL 或 Base64 字符串。
cURL
如需局部编辑,可在 JSON body 中增加 "mask": "https://example.com/mask.png"。使用 Base64 时,建议避免在日志中记录完整字符串。
input_fidelity=high 仅用于 gpt-image-2.5-sunburst。向 gpt-image-2.5-flare 传该值会返回 HTTP 400。
response_format 是平台返回格式:b64_json(默认)直接返回图片 Base64;url 会先转存到平台云存储,再返回签名 URL。它不影响模型生成的 token 用量。

GPT Image 2.5 参数

同步文生图每次返回一张图片。建议优先使用表格中的标准尺寸;其他自定义尺寸是否可用以接口实际校验结果为准,不支持的尺寸会返回 HTTP 400。

响应与计费

返回字段矩阵

b64_json 与 url 按 response_format 二选一,不应假设两者同时存在。所有标记为“条件”的字段都应使用可选字段方式解析;字段缺失不等于数值为 0。
响应会保留模型返回的 usage token 总量与输入/输出明细。这两个模型分别按文本输入 token、图片输入 token 和图片输出 token 计费;缓存命中时使用对应的缓存输入计费项。当前 Images API 响应没有稳定约定 cached_tokens 返回字段,客户端不应通过重复请求或费用差额自行推断是否命中缓存。具体单价、币种、折扣和舍入规则以模型广场展示及实际账单为准,不要根据本页示例数字直接推算最终扣费。

图片生成(文生图)

Content-Type 仅支持 application/json。multipart/form-data 会被拒绝。
本接口也能做图生图:在 body 里加 image 字段(URL 或 base64 字符串数组)即可,平台会自动等效转发到 /v1/images/edits。适合业务方用一个接口统一管理所有图片生成能力(不想区分”文生图 / 图生图”两个 endpoint 时)。适用于 gpt-image-2.5-flare、gpt-image-2.5-sunburst、gpt-image-2 和 gpt-image-1 家族。详见下方 图片编辑 - 方式 C。

快速开始

只需替换 <API-KEY> 为你的实际 API Key。

图片编辑(图生图)

基于一张或多张参考图 + 可选 mask + prompt,生成编辑后的图片。 两种 Content-Type 都支持,按需选择:
  • multipart/form-data:传统 OpenAI 兼容写法,直接上传本地文件
  • application/json:平台扩展写法,image / mask 字段传 URL 或 base64 字符串(业务端接入更方便,不用 form-data 库)

方式 A:multipart/form-data

方式 B:application/json(推荐,接入更简单)

image 是字符串数组,每个元素可以是 http(s):// URL、纯 Base64,或带 data:image/...;base64, 前缀的 Base64。mask 是单个字符串,同样规则。平台会自动下载 / 解码,再透传到底层模型。

方式 C:/v1/images/generations + image 字段(平台扩展)

和方式 B 效果完全等价,但 endpoint 是 /v1/images/generations。用途是让业务方用同一个 endpoint 覆盖”文生图 + 图生图”两种用法(参考 doubao-seedream 的接口风格):传 image 字段就是图生图,不传就是文生图。平台会在 provider 层自动把带 image 的 generations 请求转发到 edits 实现。
方式 C 的限制:
  • 仅 gpt-image-2.5-flare / gpt-image-2.5-sunburst、gpt-image-1 / gpt-image-1-mini / gpt-image-1.5 / gpt-image-2 + 各自日期快照生效,其他模型(如 dall-e-3)传 image 会被上游直接忽略,退化为纯文生图。
  • 不支持 mask:/v1/images/generations 请求体没有 mask 字段。需要用 mask 精修的场景请用方式 A 或 B。
  • 用量计费和方式 B 一致(input_tokens_details.image_tokens 会出现),不会因为换了 endpoint 就免费。

支持的参数

共用参数(generations / edits)

图片输入参数(edits 必用;generations 的方式 C 也支持 image)

JSON body 下 Base64 字符串约定:纯 Base64 和带 data:image/...;base64, 前缀的 Base64 均支持。

尺寸约束(gpt-image-2)

gpt-image-2 / gpt-image-2-2026-04-21 支持任意 宽x高 分辨率,但必须同时满足以下约束:
  • 宽和高都必须是 16 的倍数
  • 宽高比需在 1:3 ~ 3:1 之间
  • 单边 ≤ 3840px
  • 像素总量在 655,360 ~ 8,294,400 之间(即 ≤ 3840×2160)
  • 超过 2560x1440 的分辨率为实验性支持,最大支持到 3840x2160
  • 常用值:1024x1024(方)/ 1536x1024(横)/ 1024x1536(纵)/ 1536x864 等
  • 超出约束会被上游 400 拒绝

响应示例

  • 当请求 response_format=b64_json(或不传),data[i] 里会是 b64_json 字段
  • 当请求 response_format=url,服务端会把图上传到云存储并返回签名 URL
  • GPT Image 2.5 的 usage.input_tokens_details 区分文本和图片输入,usage.output_tokens_details.image_tokens 表示图片输出 token;平台按模型广场对应计费项结算

常见问题

  1. quality 不要传 auto:gpt-image-2 的 Azure 部署不接受,会返 HTTP 500。显式传 low / medium / high,或整个字段留空走服务端默认。
  2. 不支持 style 参数:vivid / natural 是 dall-e-3 专属;gpt-image-1/2 都不支持。
  3. 不支持 transparent 背景(gpt-image-2):OpenAI 官方文档明确不支持透明背景。
  4. 输入图片限制(edits):推荐 PNG,单文件 < 20MB;多图场景时总量也有上限。
  5. 耗时预期:quality=low 约 20-30s,medium 约 60-80s,high 约 200s+。按 token 计费,high 耗费显著更高。
  6. 返回的 URL 有签名过期时间:如果业务侧需要长期保存,建议请求 response_format=b64_json 自行落库,或下载 URL 对应图片另存。

应用场景