n8n에서 GPT Image 2.5를 연결할 때는 OpenAI 노드에서 사용할 모델을 선택할 수 있는지 먼저 확인하세요. 현재 공개 구현은 새 노드 버전에서 동적 모델 목록을 사용하고, 생성된 이미지를 기본적으로 data라는 바이너리 속성에 담습니다. 이 경로로 필요한 설정과 파일 출력을 얻을 수 있다면 HTTP Request로 다시 만들 필요가 없습니다. 모델이 목록에 없거나 원본 응답의 사용량까지 보관해야 한다면 HTTP Request를 사용하면 됩니다. n8n 이미지 작업 문서, 이미지 생성 노드 구현
정확한 모델 ID는 gpt-image-2.5-flare와 gpt-image-2.5-sunburst입니다. 아래 설정은 2026년 9월 21일 확인한 공식 문서와 공개 소스를 바탕으로 작성한 예시입니다. 실제 n8n 인스턴스에서 실행하거나 유료 API로 결과를 측정한 기록은 아닙니다.
OpenAI 노드가 이미 파일을 만든다면 그대로 사용하세요
OpenAI 노드에서 리소스 Image, 작업 Generate an Image를 선택하고 모델 목록을 살펴보세요. Flare 또는 Sunburst를 선택할 수 있고 작업에 필요한 크기·품질 옵션이 있다면, 프롬프트를 입력한 뒤 한 건으로 연결을 확인하는 방식이 단순합니다. 이미지 내용에 대한 설명을 돌려주는 이미지 분석 작업과 혼동하지 마세요.
설치된 n8n의 버전 번호만으로 모델 지원 여부를 단정하기는 어렵습니다. 공개 소스에서 동적 모델 선택은 노드 버전 2.2 이상에 적용됩니다. 이 값은 애플리케이션 버전과 다른 typeVersion입니다. 실제로 n8n 2.38.6, OpenAI 노드 typeVersion: 2.3에서 Flare를 사용했다는 공개 이슈가 있지만, 모든 설치 환경과 계정에서 동일하게 작동한다는 보장은 아닙니다.
기존 워크플로에서는 노드 설정을 열어 모델과 옵션을 직접 확인하세요. 공식 문서에 남아 있는 DALL-E나 GPT Image 1 설명만 보고 2.5를 지원하지 않는다고 결론 내리지 않는 편이 좋습니다. 반대로 최신 소스에 기능이 있다는 이유로 자신의 오래된 노드에도 같은 설정이 있다고 가정해서는 안 됩니다.
기본 OpenAI 노드가 성공하면 실행 결과의 Binary 영역에서 data 파일이 보이는지 확인합니다. 이 파일을 다음 업로드·첨부 노드의 입력 바이너리 필드로 지정하면 됩니다. 이미 바이너리인 결과를 Convert to File로 다시 base64 디코딩할 필요는 없습니다.
| 지금 확인한 상태 | 다음 작업 |
|---|---|
모델 선택 가능, 필요한 옵션 존재, Binary의 data에 이미지 있음 | 다음 노드에 data를 전달 |
| 설치된 노드에 모델이나 필요한 옵션이 없음 | 업그레이드 가능 여부를 확인하거나 HTTP Request 구성 |
이미지 파일과 함께 원본 usage를 기록해야 함 | HTTP Request에서 JSON 응답을 보관 |
| 모델은 보이지만 인증·접근 오류가 발생함 | 사용 중인 API 계정과 모델 접근 권한 확인 |
HTTP Request는 JSON 응답으로 받아야 합니다
HTTP Request에서 OpenAI Images API를 직접 호출하면 요청 본문과 반환된 JSON을 확인하기 쉽습니다. 다음은 이미지 한 장을 만드는 최소 설정 예시입니다. OpenAI 이미지 생성 가이드
| 항목 | 설정 |
|---|---|
| Method | POST |
| URL | https://api.openai.com/v1/images/generations |
| Authentication | 사용 가능한 OpenAI 자격 증명 또는 Header Auth |
| Header Auth를 쓸 때 | 이름 Authorization, 값은 자격 증명에 저장한 Bearer API 키 |
| Send Body | 켜기, JSON 사용 |
| Response Format | JSON |
| Include Response Headers and Status | 이 예시에서는 끄기 |
실제 API 키는 n8n의 자격 증명에 보관하세요. 요청 본문이나 공유할 워크플로 JSON에 직접 적지 않습니다. 본문에는 다음 값을 넣습니다.
json{ "model": "gpt-image-2.5-flare", "prompt": "온라인 문구점의 새 공책을 소개하는 정사각형 이미지. 밝은 책상 위에 파란 공책 한 권과 연필을 배치하고, 위쪽에는 나중에 제목을 넣을 여백을 남겨 주세요. 글자는 넣지 마세요.", "size": "1024x1024", "quality": "medium", "output_format": "png", "n": 1 }
Sunburst를 사용하려면 model을 gpt-image-2.5-sunburst로 바꿉니다. 두 모델 모두 생성과 편집을 지원합니다. Flare는 속도, Sunburst는 정밀한 편집에 초점을 둔 공식 설명이 있으나, 특정 작업에서의 결과는 직접 확인해야 합니다. 작업 선택 기준은 Flare와 Sunburst 비교에서 더 자세히 다룹니다.
위 요청은 이미지 바이트 자체가 아닌 base64 문자열이 들어 있는 JSON을 받는 예시입니다. 따라서 HTTP Request의 응답을 File로 설정하면 원하는 PNG 파일이 바로 생기는 구조가 아닙니다. 또한 예전 DALL-E 예제의 response_format: "url"을 그대로 붙이지 마세요. 현재 n8n 구현도 GPT Image 모델에서는 response_format을 제외합니다.
base64 문자열을 다음 노드가 읽을 파일로 바꾸기

본문만 반환하는 기본 응답에서는 이미지 데이터가 data[0].b64_json에 있습니다. 헤더와 상태 코드를 함께 받는 옵션을 켜면 응답이 감싸지므로 body.data[0].b64_json을 사용해야 합니다. 두 형태를 섞으면 API 호출은 성공했는데 파일 변환 노드에서 빈 값을 읽게 됩니다. HTTP Request 응답 옵션
처음 연결할 때는 다음 순서로 필드명을 명확히 정하세요.
- HTTP Request 실행 결과에서
data배열과 첫 항목의b64_json이 있는지 확인합니다. 오류 응답이나 빈 배열이면 여기서 중단합니다. - Edit Fields에서
image_base64라는 문자열 필드를 만들고 값에{{ $json.data[0].b64_json }}를 지정합니다. 응답 래핑을 켰다면{{ $json.body.data[0].b64_json }}로 바꿉니다. - Convert to File에서
Move Base64 String to File을 선택합니다. Base64 Input Field에는 필드명image_base64를 적습니다. 긴 base64 문자열 자체를 붙여 넣는 칸이 아닙니다.- 출력 바이너리 필드를
data, 파일 이름을notebook.png, MIME Type을image/png로 설정합니다. - 결과의 Binary 영역에서 파일을 내려받아 실제로 열리는지 확인한 뒤, 다음 노드가
data를 읽도록 연결합니다.
Convert to File의 필드명과 파일 옵션은 공식 변환 문서를 기준으로 합니다. 이 예시는 n: 1이므로 첫 이미지만 처리합니다. 여러 장을 요청하는 워크플로로 확장한다면 각 data 항목을 나누어 별도 파일로 변환하고 파일 이름이 겹치지 않도록 해야 합니다.
파일이 생겼다는 사실과 업로드가 끝났다는 사실도 구분하세요. 이미지 생성 노드의 성공, 바이너리 파일 열기, 저장·업로드 대상에서 파일 확인까지 이어져야 자동화의 마지막 결과를 확인할 수 있습니다.
사용량이 보이지 않아도 생성 비용은 발생할 수 있습니다
현재 OpenAI 이미지 생성 노드 구현은 응답에서 data를 꺼내 파일로 바꾸며 usage를 출력에 보존하지 않습니다. 위에서 언급한 공개 이슈도 이미지 생성 사용량이 Evaluations와 Insights에 반영되지 않는 문제를 보고합니다. 이는 무료 호출을 뜻하지 않습니다. 사용량 누락 이슈와 재현 환경
비용을 별도로 관리하려면 HTTP Request 직후의 원본 JSON에서 존재하는 usage와 모델, 요청 시각, 내부 작업 번호를 저장하세요. 응답에 없는 값을 0으로 채우지 말고 미확인으로 남기는 편이 정확합니다. Convert to File 뒤에서 사용량을 찾으려 하지 말고, 이미지 변환과 사용량 기록을 각각 이어 가면 기록이 사라지는 문제를 줄일 수 있습니다.

대량 작업에서는 같은 작업 번호에 재시도가 몇 번 있었는지도 남겨야 합니다. 응답 대기 시간이 초과되었다고 해서 서버가 생성 요청을 처리하지 않았다는 뜻은 아닙니다. 실패마다 무조건 다시 호출하면 중복 생성과 추가 비용이 발생할 수 있으므로, 재시도 횟수와 수동 확인 조건을 정하세요. HTTP Request의 Timeout은 밀리초 단위이며 응답 헤더나 본문 수신이 시작될 때까지의 시간과 관련됩니다. 임의의 고정 대기 시간을 “생성 완료 시간”으로 사용하지 마세요. HTTP Request 시간 제한 설명
참고 이미지로 편집할 때 바뀌는 설정
이미지 편집은 /v1/images/edits를 사용하며 입력 이미지가 필요합니다. HTTP Request에서는 multipart/form-data를 선택하고 이미지 항목을 n8n Binary File로 추가합니다. 여기서 Name은 API가 받는 파일 필드명이고, Input Data Field Name은 이전 노드가 가진 바이너리 속성 이름입니다. 이미지 한 장을 전달하는 경우 Name에 image, 입력 파일이 data에 있다면 Input Data Field Name에 data를 지정하는 방식입니다. 나머지 model과 prompt 등은 해당 API의 편집 요청 형식에 맞춥니다. OpenAI 편집 요청, n8n Form-Data 설정
Content-Type: multipart/form-data를 헤더에 수동으로 고정하지 마세요. 파일과 필드를 나누는 boundary가 함께 필요하므로 n8n이 본문에 맞게 생성하도록 두는 편이 안전합니다. 입력이 JSON의 이미지 URL인지 실제 바이너리 파일인지도 확인해야 합니다. URL 문자열을 가지고 있다는 것만으로 업로드할 파일이 준비된 것은 아닙니다.
OpenAI 기본 노드의 Edit Image를 쓰려는 경우에도 설치된 노드가 노출하는 모델과 옵션을 먼저 확인하세요. 생성 작업의 지원 여부가 편집 작업의 모든 설정까지 보장하지는 않습니다.
연결이 멈췄을 때 먼저 볼 곳
| 증상 | 먼저 확인할 내용 |
|---|---|
| 모델을 찾을 수 없다는 오류 | 정확한 ID, 해당 계정의 모델 접근 권한, 요청을 보낸 서비스 |
| HTTP 성공 뒤 Convert to File 실패 | data와 body.data의 차이, b64_json 존재 여부, 입력 칸에 넣은 필드명 |
| 파일이 열리지 않음 | JSON 전체를 파일로 저장했는지, 실제 출력 형식과 확장자·MIME Type이 맞는지 |
| 업로드 노드가 파일을 찾지 못함 | 이전 노드의 Binary 속성명과 업로드 노드의 입력 필드명 |
| 사용량 통계가 비어 있음 | 기본 OpenAI 노드에서 usage가 누락된 상황인지, 원본 JSON 보관 여부 |
OpenAI 호환 서비스를 이미 사용 중이라면 요청 URL과 키, 모델 ID, 과금 그룹을 한 세트로 확인하세요. 예를 들어 LaoZhang의 현재 안내는 https://api2.laozhang.ai/v1에서 Flare·Sunburst의 토큰 과금 경로를 설명하고, Sora2Official 또는 기업용 그룹을 구분합니다. 두 -vip 모델은 2026년 9월 16일부터 중단되었으므로 오래된 장당 고정 요금 예제의 ID를 복사하면 안 됩니다. gpt-image-2.5-web은 별도 경로이며 Flare와 Sunburst를 선택하는 동일한 인터페이스로 취급할 수 없습니다.
처음부터 여러 장을 병렬로 생성하기보다, 한 건이 모델 호출 → 열리는 이미지 파일 → 저장 대상 확인까지 이어지는지 확인한 뒤 배치 작업으로 확장하세요. 이 세 지점을 확인할 수 있으면 모델 접근 문제, 데이터 변환 문제, 후속 노드 문제를 구분하기 쉬워집니다.



