メインコンテンツへスキップ

n8nでGPT Image 2.5を使うには?ノード設定から画像の保存まで

14 分で読めますAIワークフロー

n8nでGPT Image 2.5を呼び出す方法を、OpenAIノードとHTTP Requestに分けて解説します。モデル選択、Base64のファイル変換、画像編集、使用量が表示されない場合の確認点まで整理しました。

n8nの画像生成ノードからPNGの保存へ進む流れを表した図解

n8nでGPT Image 2.5を使うときは、まずOpenAIノードの「Image → Generate an Image」で目的のモデルを指定できるか確認します。指定でき、必要な設定がそろっていれば、そのまま生成して後続ノードへ画像を渡せます。モデルが選べない場合や、APIの使用量も保存したい場合は、HTTP RequestでImages APIを呼び出す方法が使えます。

「n8nの公式ページにGPT Image 2.5が書かれていないから、HTTP Requestが必須」と判断するのは早計です。現在の生成ノードの公開実装では、ノードのtypeVersionが2.2以上の場合、固定の旧モデル一覧とは別のモデル選択処理を使っています。ただし、手元のn8nに同じ実装が入っているか、利用アカウントでモデルを使えるかは確認が必要です。

以下は2026年9月21日に確認した公式資料と公開実装に基づく設定手順です。本記事ではn8nを接続した有料生成の実行試験は行っていません。

最初にそろえるのはモデル名とAPIの認証情報

OpenAIのImages APIで指定するモデル名は、gpt-image-2.5-flareまたはgpt-image-2.5-sunburstです。Flareは速度を重視し、Sunburstは精密な編集を重視する位置付けですが、両方とも画像生成と編集に対応します。シリーズ名のgpt-image-2.5だけをリクエストへ入れないでください。Flareのモデル情報Sunburstのモデル情報

本記事の接続先はOpenAI公式のhttps://api.openai.com/v1です。この接続先で使うAPIキーをn8nのCredentialsへ保存します。ChatGPTのサブスクリプションや、別のAPI事業者から発行されたキーを同じ認証情報として扱わないでください。ワークフロー内の本文やメモにキーを直接書く必 要はありません。

最初の確認では、モデル、画像サイズ、品質、生成枚数を固定すると失敗の原因を絞りやすくなります。生成できることを確かめてから、フォーム入力やスプレッドシートの行をプロンプトへ渡しましょう。

OpenAIノードで生成し、Binaryの画像を確認する

OpenAIノードを追加し、ResourceをImage、OperationをGenerate an Imageに設定します。ModelでFlareまたはSunburstの正確なIDを指定し、Promptには生成したい画像を入力します。サイズや品質を指定できる場合は、まず1024x1024mediumなどの条件を固定します。実際に表示される選択肢は、インストール済みノードの版に合わせて確認してください。n8nの画像操作ドキュメント

実行後に確認するのは、JSONの文字列だけではなく出力のBinaryです。現在の生成実装は、APIから返ったb64_jsonを画像のバイナリへ変換し、既定ではdataというプロパティに入れます。この出力を保存・アップロードするノードでは、入力のバイナリフィールドにdataを指定します。すでに画像になっているので、後からもう一度Base64の復号処理を足す必要はありません。生成ノードの出力処理

モデル選択欄に2.5が出ないときは、n8nアプリ全体のバージョンとOpenAIノードのバージョンを分けて確認します。typeVersion: 2.3というノード情報は、n8nアプリの「2.3版」という意味ではありません。新しいノードを追加した場合と、古いワークフローに保存されたノードとで設定が異なる可能性もあるため、単に記事の画面と見比べるだけで非対応とは判断しないでください。

一方、必要なパラメーターが表示されない、レスポンスを丸ごと記録したい、といった目的があるなら、次のHTTP Request構成が分かりやすくなります。

HTTP RequestからPNGを受け取る構成

HTTP Requestでは、まずJSONとして生成結果を受け取り、その中の画像データをファイルへ変換します。ここでは1枚の画像を扱い、レスポンスの本文だけを返す設定を使います。

リクエストはImages APIの形式で作る

HTTP Requestの公式設定に従い、次の項目を設定します。

項目設定
MethodPOST
URLhttps://api.openai.com/v1/images/generations
認証OpenAIの定義済み認証、またはCredentialsに保存したHeader Auth
Header Authを使う場合名前はAuthorization、値はBearer に続けてAPIキーを設定
Send Body有効、Body Content TypeはJSON
Response FormatJSON
Include Response Headers and Statusこの例では無効

JSON本文には、次のように指定します。これは公式の画像生成ガイドを基にした例です。

json
{ "model": "gpt-image-2.5-flare", "prompt": "木製の机に置かれた白いマグカップ。朝の柔らかな自然光。文字やロゴは入れない。", "size": "1024x1024", "quality": "medium", "output_format": "png" }

この例にDALL·E用のresponse_format: "url"を追加する必要はありません。また、Responses APIのtools配列をこのエンドポイントへ持ち込まないでください。Images APIを直接呼ぶ方法と、Responses APIで画像生成ツールを使う方法では、リクエストの構造が異なります。

Base64を名前付きの欄へ移し、ファイルに変換する

HTTP RequestのJSONからimage_base64を取り出し、画像ファイルへ変換する流れ

成功したレスポンスのdata[0].b64_jsonに文字列があることを確認します。その後にEdit Fieldsノードを置き、文字列フィールドimage_base64を作成します。値には次の式を指定します。

text
{{ $json.data[0].b64_json }}

もし「Include Response Headers and Status」を有効にした場合は、本文がbodyの下に入るため、式を次のように変えます。

text
{{ $json.body.data[0].b64_json }}

続いてConvert to Fileノードを追加し、OperationをMove Base64 String to Fileにします。Convert to Fileの公式説明にあるBase64 Input Fieldは、文字列そのものではなく、文字列が入っているフィールドの名前を指定する欄です。

項目この例での値
Base64 Input Fieldimage_base64
Put Output File in Fielddata
File Namegenerated.png
MIME Typeimage/png

ここまで進むと、後続ノードへ渡す対象はJSONのimage_base64ではなく、Binaryのdataです。出力をダウンロードして画像として開けることを確認してから、クラウドストレージへのアップロードやメール添付を接続します。APIの成功、開けるファイルへの変換、保存先への到着は、それぞれ別に確認する必要があります。

参照画像を使う編集では、送信するファイルの欄を確認する

文章だけから生成する場合と違い、画像編集では入力ファイルが必要です。ネイティブノードのEdit Imageで目的のモデルと設定を扱えるなら、そのUIに従って入力画像を指定します。HTTP Requestで直接設定する場合は、送信先をhttps://api.openai.com/v1/images/editsに 変え、Body Content TypeをForm-Dataにします。OpenAIの画像編集ガイドn8nのForm-Data設定

たとえば前のノードが画像をBinaryのdataに持っているなら、ファイル項目のParameter Typeをn8n Binary File、Nameをimage、Input Data Field Nameをdataにします。imageはAPIへ送る項目名、dataはn8n内の入力バイナリ名です。ここを同じものだと考えると、画像があるのに送信できない原因になります。

modelpromptは通常のForm Data項目として追加します。マスクなどを使う場合は入力画像との条件も確認し、まず画像1枚の編集から試してください。Content-Type: multipart/form-dataを手動で固定すると、ファイルを区切るboundaryが欠けることがあります。Form-Dataの構築はノードに任せます。

画像は届くのに使用量が見えないとき

n8nの表示に使用量がないことと、APIで課金されないことは別です。2026年9月21日時点で確認した公開Issue #38482では、n8n 2.38.6、OpenAIノードtypeVersion: 2.3でFlareを使った際、Evaluations/Insightsに画像生成の使用量が反映されないという報告がありました。これは報告者の環境の情報であり、すべてのn8n環境で同じ結果になると検証されたものではありません。

現行の生成実装もAPIレスポンスからdataを取り出して画像を返す構造で、元のusageをそのまま後続へ渡していません。原レスポンスの使用量を記録する必要があるなら、HTTP RequestでJSONを受け取り、画像変換に進む前にusageと実行時刻、モデル名、指定した品質・サイズを別途保存する構成が候補になります。Edit Fieldsで画像だけを残すと、その時点で他の値を落とす場合があるため、使用量の記録は先に分岐させると整理しやすくなります。

自動実行へ移す前の切り分け

API応答、画像を開けること、保存先への到着を別々に確認する図解

症状次に確認するところ
モデルが指定できないOpenAIノードの版、モデル欄、アカウントのモデル利用可否
HTTPは成功するが画像が開けないJSON内にb64_jsonがあるか、Base64をファイルへ変換したか
Base64が見つからないレスポンスが本文だけか、bodyで包まれているか
添付・アップロードで画像が見つからない後続ノードが参照するBinaryフィールド名
同じ画像生成が複数回走る上流の入力件数、再試行、タイムアウト後の手動再実行
使用量が表示されないネイティブ出力と原JSONの違い、API側の利用記録

HTTP RequestのTimeoutはミリ秒単位ですが、公式説明ではレスポンスヘッダーや本文の開始を待つ時間です。画像生成の所要時間を保証する設定ではありません。タイムアウトしたときに無条件で再送すると、元の処理が進んでいた場合に重複生成へつながるため、返ってきたエラーとAPI側の状況を確認してから再試行します。HTTP RequestのTimeout

また、過去のn8nとComfyUIを連携させる作例にある固定の待ち時間は、その作例のローカルモデルと環境での工夫です。GPT Image 2.5でも「1分待てば必ず完了する」と読み替えることはできません。まず1件の入力で、生成結果が返り、画像を開けて、保存先へ到着するところまで確認する。その後に入力件数や再試行条件を増やすと、問題が起きた場所を追いやすくなります。

モデルの選択自体で迷う場合は、FlareとSunburstの使い分けも参照してください。接続の成功を確認したうえで、自分の画像に必要な精度と待ち時間を比較する順番が実用的です。

#GPT Image 2.5#n8n#画像生成API#ワークフロー
Share: