zhenzhen-gpt-image-2.5(6合1·AI工坊)
GPT Image 2.5 in One Node — Six Model IDs and a Key You Have to Paste In
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- mask
- image
- image_urls
- response
GPT Image 2.5 is one of those models you cannot download, so if you want it inside a ComfyUI graph your only move is a node that phones out. That's the entire job of this one. It's a single node sitting in the zhenzhen/OpenAI category, and unlike almost everything else in the pack it doesn't need the API Settings node wired in - it takes an api_key string and goes.
The Chinese display name says 6-in-1 (六合一), and that's just the model dropdown: two codenames, flare and sunburst, each at three resolutions - gpt-image-2.5-flare, -flare-2k, -flare-4k, and the three sunburst twins. What separates flare from sunburst isn't documented anywhere you can read, and I looked: this pack has essentially no English-language footprint, so there's no forum answer waiting. Run both and decide with your eyes.
How it actually works
One synchronous HTTP call. No task ID, no polling, no second job to babysit.
Leave the image slots empty and the node POSTs JSON to /v1/images/generations. Connect even one image1–image14 frame, or a mask, and it flips to a multipart POST to /v1/images/edits - same fields, now form data. Worth knowing, because it's why adding one reference image changes how long a run takes and how it fails.
The base URL is the author's overseas workshop endpoint and can't be pointed elsewhere; there's no api_config input here. It does fail over: the pack probes the .org host and transparently swaps to .cn if DNS, TCP or TLS fails, caching that for ten minutes. So a 443/connection-refused from this node usually means your network - the pack's README is blunt that the overseas API wants a proxy in TUN mode.
The inputs worth touching
prompt is the only required field and it's a big one - up to 32,000 characters, so a full structured edit brief fits.
api_key is the one that trips people. Empty is an immediate error, and the message tells you to paste it in the workflow or feed it from the API Settings node (whose first output is a plain apikey STRING - right-click → convert api_key to an input and wire it). A hand-typed key is fine and simpler; just don't commit the JSON anywhere.
Then model, quality (auto through max), and size - nine presets ending in custom, which switches to custom_width/custom_height: multiples of 16, nothing over 3840, ratio between 1:3 and 3:1, 655k–8.3M pixels total, or the node refuses before spending anything. n goes to 10 images per call and every one of those is billed, which is the easiest way to surprise yourself.
image1–image14 are ordered references (a batch on one socket gets split into frames). mask gives you inpainting-adjacent editing, but only with exactly one reference image beside it, matching its dimensions - internally your mask becomes the transparency of an RGBA PNG. Wrong sizes fail cleanly instead of producing a garbage edit. background is auto or opaque; no alpha here. moderation is auto or low, and seed only controls ComfyUI's cache - never sent upstream, so don't expect a seed to reproduce a cloud render.
Outputs
image is the batch, all frames forced to identical dimensions. image_urls is a newline-joined string, and it's empty when the API answers with base64 instead of links. response is the raw JSON with base64 blobs stripped out - that's your debugging surface when something looks off.
Install
ComfyUI Manager → search Comfyui-zhenzhen → install → restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
The README is a changelog rather than an install guide, and there's no model download step to hunt for - genuinely none: this pack ships no weights. requirements.txt is ordinary stuff (requests, Pillow, numpy, torch, aiohttp, openai, opencv). What you need instead is an account and a key.
Where people get burned
Empty api_key is error one, two and three. After that: 429s and 500s from upstream, which the vendor's docs call overload rather than your mistake - a second run usually clears it. Big 4K results fail at download more often than generation fails at render; the pack's downloader already retries transient errors, and if it still gives up, the site's per-key object-storage setting (CN or US) is the documented fix. Newer failure messages deliberately redact the signed result URL, so check the site's async task list for the file. And finally, skip_error exists, but understand what it does: it swallows the failure and hands you a grey placeholder image so your graph limps on. Great for a 30-image batch, terrible for debugging, because the error is now a 512px grey square and a JSON blob instead of a traceback.
Inputs (27)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| image1opt | IMAGE | — | |
| image2opt | IMAGE | — | |
| image3opt | IMAGE | — | |
| image4opt | IMAGE | — | |
| image5opt | IMAGE | — | |
| image6opt | IMAGE | — | |
| image7opt | IMAGE | — | |
| image8opt | IMAGE | — | |
| image9opt | IMAGE | — | |
| image10opt | IMAGE | — | |
| image11opt | IMAGE | — | |
| image12opt | IMAGE | — | |
| image13opt | IMAGE | — | |
| image14opt | IMAGE | — | |
| maskopt | MASK | — | |
| api_keyopt | STRING | — | |
| modelopt | COMBO | gpt-image-2.5-flare | 6 options: gpt-image-2.5-flare, gpt-image-2.5-flare-2k, gpt-image-2.5-flare-4k, gpt-image-2.5-sunburst, gpt-image-2.5-sunburst-2k, gpt-image-2.5-sunburst-4k |
| qualityopt | COMBO | auto | 6 options: auto, low, medium, high, xhigh, max |
| sizeopt | COMBO | 1024x1024 | 9 options: 1024x1024, 1536x1024, 1024x1536, 2048x2048, 2048x1152, 1152x2048, +3 |
| custom_widthopt | INT | 102416–3840 | — |
| custom_heightopt | INT | 102416–3840 | — |
| nopt | INT | 11–10 | — |
| backgroundopt | COMBO | auto | 2 options: auto, opaque |
| moderationopt | COMBO | auto | 2 options: auto, low |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | ComfyUI cache seed only; it is not sent to GPT Image 2.5. Fixed reuses the cached result. |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| image_urls | STRING | — |
| response | STRING | — |