GPT Image 2.6
用提示词生成 1–4 张图片,可以出 PNG、JPEG、WebP、GIF 动图或 SVG,可以按比例或指定宽高,按张计费。
GPT Image 2.6(产品 gpt_image)用提示词生成图片,可以带最多 16 张参考图。和 GPT Image 2.5 一样有两个版本(flare、sunburst)、五档质量,可以出透明背景,价格也一样;另外可以选出图格式(png、jpeg、webp、gif 动图、svg 矢量图),可以直接指定宽高(size)。一个任务出 1–4 张,按质量和分辨率按张计费。
创建任务
https://api.nanoapi.ai/v1/tasks用所有模型共用的创建任务接口,model 传 "gpt-image-2.6"。接口通常不到 1 秒返回,几秒内按 num_outputs 张冻结费用;任务结束后获取结果。
请求头
| 请求头 | 必填 | 说明 |
|---|---|---|
Authorization | 是 | Bearer <API Key>,见鉴权 |
Content-Type | 是 | application/json |
Idempotency-Key | 否 | 每个新任务一个唯一字符串,建议用 UUID(1–255 个字符),见防止重复创建 |
请求体
| 参数 | 类型 | 必填 | 说明 |
|---|---|---|---|
model | string | 是 | gpt-image-2.6 |
prompt | string | 是 | 描述要生成的图片,最长 8000 字符。引用参考图写 @Image1、@Image2…,见在提示词里引用图片 |
image_urls | string[] | 否 | 参考图,最多 16 张;不传就是只用提示词生成。svg 不能带。见素材 |
variant | string | 是 | flare 或 sunburst,参数和价格完全一样。flare 速度快,适合日常创作和批量出图;sunburst 细节更精准,适合精修和高质量成片,生成稍慢 |
quality | string | 是 | low、medium、high、xhigh 或 max,决定价格 |
resolution | string | 是 | 1k、2k 或 4k,决定价格。gif、svg 只能用 1k |
output_format | string | 是 | png、jpeg、webp、gif(动图)或 svg(矢量图),不影响价格;各格式的限制见出图格式 |
aspect_ratio | string | 见说明 | auto、1:1、3:2、2:3、4:3、3:4、16:9、9:16、21:9、27:16、16:27、9:8、8:9、4:5 或 5:4。auto:有参考图时跟随第一张参考图的比例,没有时按 1:1。不是 gif 时和 size 传一个,不能两个都传;gif 不能传 |
size | string | 见说明 | 指定宽高,写成 宽x高(小写 x),例如 1024x768,不支持 auto,要符合尺寸规则。不是 gif 时和 aspect_ratio 传一个;gif 必传,是每一帧的尺寸 |
frame_count | integer | gif 必传 | 帧数,2–64。只有 gif 能传 |
frame_duration_ms | integer | gif 必传 | 每帧的时长,20–2000 毫秒。只有 gif 能传 |
background | string | 否 | auto、opaque 或 transparent。不传、auto、opaque 都出不透明背景;要透明背景必须传 transparent(带参考图也支持):png、webp 带透明通道,gif 带透明色,svg 不画背景。jpeg 不支持透明背景。只在提示词里写「透明背景」不行:模型会把灰白棋盘格画进画面,看起来像透明,其实不透明 |
num_outputs | integer | 是 | 出几张,1–4。按这个张数冻结,只按生成出来的张数扣费,见价格 |
webhook_url | string | 否 | 任务成功或失败时通知该地址:https,最长 2048 字符,不能指向内网、回环或保留地址。见回调 |
传了其他参数(例如别的图片模型才有的 seed、remove_bg)返回 400 invalid_request,见错误。
出图格式
output_format | resolution | 画面尺寸 | 其他 |
|---|---|---|---|
png、webp | 1k、2k、4k | aspect_ratio 或 size | background: "transparent" 保留透明通道 |
jpeg | 1k、2k、4k | aspect_ratio 或 size | 不能传 background: "transparent" |
gif | 1k | size(每一帧) | frame_count、frame_duration_ms 必传,不能传 aspect_ratio |
svg | 1k | aspect_ratio 或 size | 不能带 image_urls |
frame_count、frame_duration_ms 只有 gif 能传,换成别的格式时要去掉。
尺寸规则
size 不符合下面的规则时返回 400 invalid_request,param 为 "size":
| 规则 | 不是 gif | gif |
|---|---|---|
| 宽、高 | 都是 16 的倍数 | 都是 16 的倍数 |
| 长边 | 不超过短边的 3 倍,最大 3840 | 不超过短边的 3 倍,最大 1280 |
| 总像素(宽 × 高) | 655360–8294400 | 72818–921600 |
总像素不能超过 resolution 档位的上限(只看总像素,不看长边):
resolution | 最多像素 | 例如 |
|---|---|---|
1k | 1075200 | 1024x1024、1024x768、1120x960、1536x512 |
2k | 4194304 | 2048x2048、2048x1152 |
4k | 8294400 | 3840x2160、2160x3840 |
要出大尺寸请调高 resolution(svg 只能用 1k,最多 1075200 像素)。size 比档位小也可以,但按所传的档位收费:4k 配 1024x768 出的是 1024×768 的图,收的是 4k 的钱,请选放得下的最低档。gif 可用的尺寸例如 288x288、512x512、768x768、512x288、288x512、912x304。
用 1 张参考图生成 2 张 16:9 的 WebP,指定 2048×1152,high 质量:
curl https://api.nanoapi.ai/v1/tasks \
-H "Authorization: Bearer $NANOAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 7c3f1e92-4a6b-4d0e-9b8f-5e2a1c7d9f34" \
-d '{
"model": "gpt-image-2.6",
"prompt": "Put a red apple next to the mug in @Image1",
"image_urls": ["https://example.com/mug.jpg"],
"variant": "flare",
"quality": "high",
"resolution": "2k",
"output_format": "webp",
"size": "2048x1152",
"num_outputs": 2
}'GIF 动图:4 帧、每帧 512×512、每帧 100 毫秒(gif 要 1k,size、frame_count、frame_duration_ms 都必传,不能传 aspect_ratio):
curl https://api.nanoapi.ai/v1/tasks \
-H "Authorization: Bearer $NANOAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 1b8d4f60-2e7a-4c93-a5d1-8f0e6b3c2a17" \
-d '{
"model": "gpt-image-2.6",
"prompt": "A red ball bouncing up and down, simple looping animation",
"variant": "flare",
"quality": "low",
"resolution": "1k",
"output_format": "gif",
"size": "512x512",
"frame_count": 4,
"frame_duration_ms": 100,
"num_outputs": 1
}'方形的 SVG 标志(svg 要 1k,不能带 image_urls):
curl https://api.nanoapi.ai/v1/tasks \
-H "Authorization: Bearer $NANOAPI_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: 9e2a7c15-6d3b-4f8e-b0a4-3c1f5d7e9b62" \
-d '{
"model": "gpt-image-2.6",
"prompt": "A flat minimalist fox logo",
"variant": "flare",
"quality": "medium",
"resolution": "1k",
"output_format": "svg",
"aspect_ratio": "1:1",
"num_outputs": 1
}'响应:200 OK。data 是刚创建的任务,只有下面这几个字段,各字段的含义见创建任务的返回。保存 data.id,用它获取结果。任务创建后仍可能失败(例如余额不够这次的费用),以查询或回调的结果为准。
{
"code": 200,
"message": "success",
"data": {
"object": "task",
"id": "tk_01jbm2r7c5x8v1n4q6t9w3e0y2",
"model": "gpt-image-2.6",
"status": "queued",
"error": null,
"created_at": "2026-11-05T08:30:00Z"
}
}获取结果
耗时仅供参考(开始生成到出图,不含排队,另加几秒转存;上游忙时会更慢):png 1k 约 20 秒,gif、svg 约 25–45 秒;质量越高、用 sunburst、带参考图都会更慢。同一个任务的多张图并行生成,出多张的总耗时和单张差不多。任务结束(成功或失败)后用下面任一方式拿结果:
- 回调(生产环境推荐):创建时传了
webhook_url,任务结束时会把完整的任务推送一次,见回调。 - 轮询:用
data.id调用GET /v1/tasks/{task_id},间隔 15 秒以上,直到status为succeeded或failed;多个任务用列出任务的ids一次查询。
上面的 WebP 请求成功后(省略了其他字段):
{
"status": "succeeded",
"input": {
"prompt": "Put a red apple next to the mug in @Image1",
"image_urls": ["https://example.com/mug.jpg"],
"variant": "flare",
"quality": "high",
"resolution": "2k",
"output_format": "webp",
"size": "2048x1152"
},
"num_outputs": 2,
"outputs": [
{
"index": 0,
"type": "image",
"url": "https://cdn.nanoapi.ai/h/tk_01jbm2r7c5x8v1n4q6t9w3e0y2_1_1793867400.webp",
"preview_url": "https://cdn.nanoapi.ai/h/tk_01jbm2r7c5x8v1n4q6t9w3e0y2_1_1793867400_compressed.jpg"
},
{
"index": 1,
"type": "image",
"url": "https://cdn.nanoapi.ai/h/tk_01jbm2r7c5x8v1n4q6t9w3e0y2_2_1793867400.webp",
"preview_url": "https://cdn.nanoapi.ai/h/tk_01jbm2r7c5x8v1n4q6t9w3e0y2_2_1793867400_compressed.jpg"
}
],
"billing": {
"currency": "USD",
"frozen": "…", // 2 × high 2k 的每张单价
"charged": "…", // 一样:2 张都生成出来了
"refunded": "0.00",
"billed_seconds": null
}
}| 字段 | GPT Image 2.6 |
|---|---|
outputs | 每张生成出来的图片一项,最多 num_outputs 项 |
outputs[].type | image,每种格式都是 |
outputs[].url | output_format 对应格式的原文件,后缀也对应(.png、.jpeg、.webp、.gif、.svg),保存时用这个后缀。用于下载或查看大图,gif 要看动图也用它 |
outputs[].preview_url | JPEG 预览图,长边不超过 1024(小图不放大),透明背景铺成白底;列表、缩略图请用它,为 null 时再用 url。gif 的预览图只是第一帧。svg 一定是 null,直接用 url |
billing.billed_seconds | 一直是 null:图片按张计费 |
input | 你传的参数:一定有 variant、quality、resolution、output_format,aspect_ratio 和 size 只有其中一个(gif 是 size、frame_count、frame_duration_ms);可选的 image_urls、background 传了才有 |
SVG 文件里可以带脚本。在网页上展示请用 <img src="…"> 引用,不要把 SVG 的内容直接插进页面。如果要转存到你自己的域名,下载时请带 Content-Disposition: attachment。
失败时冻结的钱全额退回,原因在 data.error.type,见错误。完整的字段见任务对象。
出图尺寸
传 aspect_ratio 时尺寸和 GPT Image 2.5 一样,见 GPT Image 2.5 → 出图尺寸;quality、variant、output_format 不影响尺寸,auto 的尺寸取决于参考图。传 size 时按 size 出图(gif 是每一帧的尺寸)。
张数比请求的少
每张图单独生成。有几张没生成出来(例如被内容审核拦下)时,任务仍是 succeeded,outputs 里只有生成出来的那几张,比 num_outputs 少。只按这几张扣费,冻结的其余部分退回(billing.refunded)。一张都没生成出来时任务才是 failed,冻结的钱全额退回:其中只要有 1 张是被内容审核拦下的,失败原因就是 content_policy(不一定每张都被拦),否则一般是 generation_failed。outputs[].index 按生成出来的那几张从 0 连续编号,张数比请求的少时不对应请求里的第几张,不要按它去对位。
素材
参考图以公开的 http(s) 链接放在 image_urls 里提交。不提供上传接口,请自行托管文件。链接最长 4096 字符,必须能直接下载,不能指向 localhost 或内网、回环、保留地址。
参考图(image_urls) | |
|---|---|
| 数量 | 0–16 张(GET /v1/products 的 limits.max_reference_images);output_format 为 svg 时不能带 |
| 格式 | JPEG、PNG、WebP、AVIF、GIF(取第一帧)、BMP、TIFF。不支持 HEIC / HEIF:iPhone 照片默认是 HEIC,请先转成 JPEG |
| 透明背景 | 透明背景的 PNG 会铺成白底再使用 |
| 有问题时 | 生成时才读取,这时已经冻结过费用:下载不了、格式不支持时任务失败(invalid_media),冻结的钱全额退回 |
任务结束前所有链接都要保持可访问,有有效期的链接也不能提前过期。
在提示词里引用图片
prompt 里写 | 指代 |
|---|---|
@Image1、@Image2… | image_urls 里的图片,按顺序编号 |
- 引用超出了传入的张数(例如只传了 1 张却写了
@Image2,或者没传image_urls却写了@Image):返回400 invalid_request,param为"prompt",任务不会创建。 @前面是字母、数字或点的不算引用,所以提示词里写邮箱(例如bob@image2go.com)没有问题。
价格
冻结 = 所选质量和分辨率的每张单价 × num_outputs
扣费 = 所选质量和分辨率的每张单价 × 生成出来的张数正在读取当前价格…
- 和 GPT Image 2.5 同价:两个模型都在产品
gpt_image里,共用它的价格行。 - 只有
quality和resolution影响价格;variant、output_format、size、aspect_ratio、帧数和每帧时长、background、参考图都不影响。 size不会让价格变低:比resolution档位小的尺寸按档位收费,见尺寸规则。- 创建后几秒内按
num_outputs张冻结。成功后按生成出来的张数扣费,其余退回,见张数比请求的少;失败全额退回。
例如上面的 WebP 请求(high、2k,num_outputs 为 2)冻结 2 × high 2k 的每张单价,2 张都生成出来时扣同样的金额;GIF 请求冻结 1 × low 1k 的每张单价,和帧数无关。冻结和扣费的通用规则见计费。
价格只看请求就能算出来,可以在提交前显示:用 GET /v1/products 返回的当前单价计算(产品 gpt_image,prices 里每个 quality 和分辨率一行)。价格会调整,不要写死;实际费用以查询任务返回的 billing.frozen 为准。
错误
这个模型特有的错误和失败原因。创建任务的全部错误见创建任务 → 错误,全部失败原因见失败原因。
创建请求出错:请求返回 HTTP 错误,任务不会创建。param 是对应的参数名,message 是英文说明,可以直接展示给你的用户。
| 状态码 | error.type | 何时出现 | 怎么处理 |
|---|---|---|---|
400 | invalid_request | 少传了必填参数(Field required,param 是缺的那个),或者 prompt 是空的(prompt is required) | 必填参数都要传,见创建任务 |
400 | invalid_request | 提示词引用了没传的图片,param 为 "prompt"(例如 prompt references @Image2, but image_urls has 1 image: use @Image1) | 改正引用,或者把图片加进 image_urls |
400 | invalid_request | variant、quality、resolution、output_format、aspect_ratio、background 不是上面列出的值,frame_count 不是 2–64,frame_duration_ms 不是 20–2000,num_outputs 不是 1–4,或者 image_urls 超过 16 张 | 改成允许的值 |
400 | invalid_request | aspect_ratio 和 size 都传了(Provide either aspect_ratio or size, not both),或者都没传 | 只传其中一个;gif 只传 size |
400 | invalid_request | size 不符合尺寸规则,param 为 "size"(例如 size 1024x1536 has 1572864 pixels, more than resolution 1k allows (1075200): use a higher resolution or a smaller size) | 调高 resolution,或者换小一点的尺寸 |
400 | invalid_request | 和格式搭配不对:gif、svg 用了 1k 以外的分辨率(Input should be '1k' for output_format gif),gif 传了 aspect_ratio 或者少了 size、frame_count、frame_duration_ms,不是 gif 却传了帧参数,svg 带了 image_urls(image_urls is not allowed for output_format svg),jpeg 要透明背景(background transparent is not supported for output_format jpeg) | 按出图格式调整 |
400 | invalid_request | 传了这个模型没有的参数:别的图片模型的参数(thinking_level、enable_web_search、enable_image_search、seed、remove_bg)或视频模型的参数(Extra inputs are not permitted) | 去掉这个参数 |
创建接口的其他错误(401、402、429 等)见创建任务 → 错误。
任务失败:创建请求成功(200),任务之后变成 failed。这种情况没有 HTTP 状态码,原因在任务的 error.type,通过查询任务或回调拿到。
error.type | 何时出现 | 怎么处理 |
|---|---|---|
insufficient_balance | 可用余额不够 num_outputs × 每张单价。创建后几秒内出现,不冻结费用 | 充值,或者少出几张、降低质量,再重新创建 |
spend_limit_exceeded | 加上这个任务的费用会超出 Key 的消费限额。创建后几秒内出现,不冻结费用 | 在控制台 → API Keys 调高限额,或者等限额重置后重新创建 |
invalid_media | 参考图下载不了或读不了(例如 HEIC 照片、文件损坏)。生成时才发现,这时已经冻结过费用,全额退回 | 按 error.message 换掉那张图(HEIC 先转成 JPEG),重新创建 |
content_policy | 一张图都没生成出来,并且至少 1 张是因为提示词或参考图不符合内容政策被拦下的(不一定每张都被拦)。只有部分张被拦下时任务仍然成功,返回其余的张,见张数比请求的少 | 原样重新提交还会失败,请更换提示词或图片 |
generation_failed | 一张图都没生成出来 | 稍后重新创建,或者换一份提示词、图片 |
queue_timeout / internal_error | 排队超过 30 分钟未开始 / 内部错误 | 稍后重新创建 |
所有失败的任务都已全额退回冻结金额,billing.charged 为 "0.00"。