在 n8n 中使用 GPT Image 2.5,先检查当前 OpenAI 节点能否选择或填写 gpt-image-2.5-flare、gpt-image-2.5-sunburst。能选到且参数满足任务时,可以直接使用原生图片节点;需要自行设置请求参数、保留完整响应,或者当前节点尚未提供模型入口时,再用 HTTP Request。不能仅凭旧版教程中没有 2.5,就判断必须绕过原生节点。
本文依据 2026 年 9 月 21 日核验的官方文档和公开源码整理配置示例,未在本机运行 n8n,也未进行付费生图测试。流程完成的标准是下游取得能够打开的图片文件,而不只是看到请求节点变绿。
先确认你用的是哪一种 OpenAI 节点
n8n 的应用版本和 OpenAI 节点版本不是同一个数字。当前公开实现中,图片生成操作对节点版本 2.2 及以上使用动态模型选择,旧节点版本使用静态列表;这说明不能把某一张旧界面截图推广到所有安装环境。n8n 图片生成源码
还有一条可核查的实例:n8n 的公开 issue 报告在应用版本 2.38.6、OpenAI 节点 typeVersion: 2.3 下使用 gpt-image-2.5-flare,问题是图片用量没有进入统计。这是报告者的环境记录,不能据此保证你当前安装也具有同样的模型列表或权限。图片用量统计 issue
打开自己的工作流后,按下面几个条件决定入口:
| 当前情况 | 合适的做法 | 需要检查的结果 |
|---|---|---|
| OpenAI 的 Image / Generate an Image 能选择准确型号,所需参数也齐全 | 使用原生节点 | 输出的 Binary 中是否出现图片文件 |
| 节点没有型号入口,或需要明确控制原始请求字段 | 使用 HTTP Request | JSON 中是否含图片数据,再转为文件 |
需要把原始 usage 单独存入日志 | 使用能保留完整响应的 HTTP Request | 响应中的实际用量字段是否被保存 |
| 连 API 服务本身也提示无权访问该模型 | 先处理账号、凭据或模型权限 | 换节点不会自动取得模型权限 |
原生节点中选择 OpenAI 凭据、Image、Generate an Image,填写具体型号和提示词,执行后检查输出。n8n 文档说明图片默认放在名为 data 的二进制字段;当前源码也会把 b64_json 解码为二进制文件。因此,原生节点已经输出图片文件时,不要再接一次 Base64 解码。 n8n 图片操作文档
文档里的部分选项仍围绕 DALL-E 或 GPT Image 1 描述。配置 2.5 时,要对照实际模型和当前节点暴露的设置,不要机械照搬旧例中的 response_format: url。
用 HTTP Request 建立一个容易核对的生成请求
HTTP Request 方式把接口响应直接交给你,适合检查型号、请求字段和用量。下面使用 OpenAI 官方接口;凭据应保存在 n8n Credentials 中,选用相应的预定义凭据,或用 Header Auth 配置 Authorization 头,其值为 Bearer <你的 API Key>。不要把真实 key 写进工作流说明、截图或可分享的 JSON。
设置请求:
| 项目 | 值 |
|---|---|
| Method | POST |
| URL | https://api.openai.com/v1/images/generations |
| Send Body | 开启 |
| Body Content Type | JSON |
| Response Format | JSON |
JSON 请求体可以从这个最小例子开始:
json{ "model": "gpt-image-2.5-flare", "prompt": "为中文咖啡店菜单设计一张方形插画:白色陶瓷杯、浅木桌面、柔和晨光,右上方留出空白,不出现文字。", "size": "1024x1024", "quality": "medium", "output_format": "png" }
需要比较 Sunburst 时,仅将 model 换为 gpt-image-2.5-sunburst,先保留其他设置,便于观察任务结果。两者都支持生图与编辑;Flare 的官方定位偏向速度,Sunburst 偏向精确编辑。系列名 gpt-image-2.5 不应代替具体请求型号。Flare 模型页、Sunburst 模型页
这个请求使用 Images API。不要把 Responses API 中的 tools 配置混入这份请求体;两种接口的组织方式不同。官方图片指南的生成示例返回 data[0].b64_json,这里因此选择 JSON 响应,而不是把整份 HTTP 响应直接当图片下载。OpenAI 图片生成指南
把 Base64 字符串变成下游能读取的图片
HTTP Request 请求成功后,如果看到 data 数组中的 b64_json,拿到的仍然是 JSON 内的一段编码文本。邮件附件、对象存储上传等节点通常需要 n8n 的二进制文件,转换过程要单独完成。
一个清晰的连接方式是:HTTP Request → Edit Fields → Convert to File → 保存或上传节点。

- 检查响应中确实有非空的
data[0].b64_json。先排除错误响应,不要对空值执行转换。 - 在 Edit Fields 新建字符串字段
image_base64,值使用表达式{{ $json.data[0].b64_json }}。 - 添加 Convert to File,选择 Move Base64 String to File。
- 将 Base64 Input Field 填为
image_base64。这里需要的是字段名,不是刚才那段很长的 Base64 值。 - 将文件名设为
cafe-menu.png,MIME Type 设为image/png;把 Put Output File in Field 设为data,下游使用这个二进制字段。
这些选项依据 Convert to File 官方说明。文件后缀和 MIME 类型应对应请求中的 output_format;仅把文件名改为 .jpg 并不会将 PNG 内容转换成 JPEG。
默认情况下,HTTP Request 只输出响应体。如果开启 Include Response Headers and Status,图片响应会被包装在 body 下,此时第二步的表达式应改为 {{ $json.body.data[0].b64_json }}。字段路径必须以本次执行的实际 JSON 为准。HTTP Request 响应选项
转换完成后,在输出的 Binary 中查看或下载文件,确认能够打开。再把 data 交给保存或上传节点,并核对目标位置确实出现文件。上游生图成功、n8n 已生成二进制文件、远端已接收图片,是三个需要分别确认的结果。
如果一次响应包含多张图片,上面的 [0] 只处理第一张。要保存全部结果,需要先逐项拆分响应数组,再为每一项生成独立文件名,不能把第一张成功当作整批已完成。
需要参考图或局部编辑时,调整请求形式
图像编辑使用 /v1/images/edits,需要将输入图片随请求提交。HTTP Request 中选择 Form-Data,并将图片参数设为 n8n Binary File;参数的 Name 按接口要求填写,Input Data Field Name 则指向上游图片所在的二进制字段,例如 data。model、prompt 等文本参数作为普通表单字段提交。OpenAI 图片编辑说明、n8n multipart 参数说明
这里容易混淆的是两种“名字”:接口需要的上传参数名,和 n8n 内部保存图片的字段名。它们可以不同;不要把文件路径或 Base64 字符串填进要求二进制字段名的位置。也不要手工写一个没有 boundary 的 Content-Type: multipart/form-data,让节点生成完整表单请求头。
原生 OpenAI 节点也有 Edit Image 操作,但是否能在你的节点版本中选到所需 2.5 模型及参数,应当单独检查,不能根据 Generate an Image 可用就推定编辑配置完全相同。对于需要严格保留商品细节的任务,可结合 Flare 与 Sunburst 的编辑选型说明 制定输出检查项。
节点变绿后,仍可能漏掉什么

最常见的故障不需要先更换模型。按输出停在哪一步检查,更容易定位:
| 现象 | 优先检查 |
|---|---|
| 模型不存在或没有权限 | 准确模型 ID、所用 API 服务、凭据所属账号的权限 |
转换节点找不到 image_base64 | Edit Fields 输出,以及是否开启了响应包装 |
| 有很长的文本,却没有可上传的文件 | 是否完成 Convert to File,而不是直接传递 JSON |
| 原生节点已经有 Binary,后接解码却失败 | 删除重复解码,直接读取二进制字段 |
| 上传节点成功但找不到预期图片 | 目标目录、文件名、上传节点实际返回值与远端文件 |
| 统计面板没有图片用量 | 原生节点是否保留 usage,不要据此认为免费 |
截至本次查看,原生生成源码提取图片 data 后,没有把响应中的 usage 一并交付,相关 issue 仍未关闭。需要按任务计算消耗时,可在 HTTP Request 返回后另存原始 usage、模型、尺寸、质量和任务编号,再把图片数据送去转换;账单仍以实际服务的计费记录为准。n8n 用量问题记录
耗时较长时,检查 HTTP Request 的 Timeout 设置,单位是毫秒;文档将其定义为等待响应头或响应体开始的时间。不要把一个固定等待时长当成图片已经完成的证据。发生超时且无法判断服务端是否已经生成时,先保留执行记录并核对状态,避免无条件重试产生重复任务或重复费用。
完成第一次连接后,保留一份能够查看原始响应、打开图片并确认保存位置的执行记录。后续再增加批量处理和业务分支,这样遇到问题时能清楚区分是请求、文件转换,还是交付环节出了错。



