zhenzhen-image-g-v2.5-lowprice
The Cheap Route to Image G v2.5 — Four Dialogs, Fifteen References, One Image Per Run
- image1
- image2
- image3
- image4
- image5
- image6
- image7
- image8
- image9
- image10
- image11
- image12
- image13
- image14
- image15
- api_config
- image
- image_url
- task_id
- response
"Lowprice" here does not mean a smaller model. It means the other door into the same v2.5 image model - the author runs two relays, an overseas workshop and a domestic cut-price shop, and the README claims the domestic one is roughly 75–80% of the overseas rate on Chinese models. This node is the domestic one. Same model IDs as its sibling, cheaper, slightly different controls, and a much smaller set of knobs to worry about.
If you've used the "Nano Banana" style reseller nodes, the shape will be familiar. If you haven't: this is not a local model. No checkpoint, no VRAM math, no sampler. You paste a prompt, it goes to someone's server, you get an image back, you're billed. For a model with no open weights that's the only product there is.
How it works
It's an async task API under the hood, not a single blocking request. The node uploads any reference images, POSTs the job, then polls until the task completes and downloads the result, converting it into an IMAGE tensor for the rest of your graph. Practically, that means a run can sit at 30% progress for a while and that's the poll loop, not a hang.
It also means you get a task_id output, worth more than it looks. This pack's README repeats one piece of advice constantly: when ComfyUI reports a timeout, go to the site's async task page, find the task by ID, and check whether it actually finished. Plenty of "failures" are just the node giving up on the wait while the server was still working - and on this channel, unsuccessful upstream tasks generally aren't charged.
The four required inputs
prompt is it, mostly - up to 5,000 characters, multiline.
resolution is 1k, 2k or 4k, defaulting to 1k.
size is the one that catches people out, because the default is 16:9, not square. Sixteen options in total: auto, a spread of ratios from 1:1 and 16:9 through 21:9 and 9:21, plus the narrow 1:3 / 3:1 pair. If you're generating a portrait avatar and forget to change it, you'll get a wide landscape image and blame the model. Change the dropdown.
nsfw_check is a boolean, default off - the README is explicit that this relay's domestic route is the looser-filter one, and this switch is what asks for the check explicitly.
Then the fifteen optional image1–image15 sockets for reference editing. Order matters; they're submitted in the order you connect them. api_config is where the API Settings node goes, and if you don't wire one, the node falls back to a SEEDANCE_API_KEY environment variable and then gives up with a clear message. skip_error swaps a thrown exception for a placeholder result, and seed is ComfyUI cache control only - the tooltip is honest about it, and it is not sent upstream.
Note what isn't here: no n. One call, one image. No quality tier, no output format, no transparency. If you want those, you want the official node instead.
Outputs
image is the picture. image_url is the first result URL as a string. task_id is your receipt. response is the full JSON.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/T8mars/Comfyui-zhenzhen
Or search Comfyui-zhenzhen in ComfyUI Manager, install, restart. No model files - the pack ships no weights, and the dependency list is ordinary Python packages. The README is mostly a changelog; installation is the standard custom-node route.
Then you need two things in the graph: a T8Zhenzhen_API_Settings node (its api_base default is already the domestic shop) with your key in it, wired into this node's api_config input. The Settings node also exposes a plain apikey string output, handy for the nodes that take a key directly.
Where it goes wrong
The empty-key error is the most common one, and it's phrased well enough that you'll find it. Next is 429/500 from upstream, which on this relay means the provider is overloaded - retry, don't debug. The download path retries transient errors and falls back to a direct connection if a stale HTTP_PROXY is poisoning requests, which happens to people more often than you'd think.
Keep your expectations calibrated on the community side: I searched for this pack, this author and this model name across the discussion corpus and found essentially nothing in English. That's not a red flag on the node - it's what happens to a pack that lives on Chinese-language YouTube and a Discord. It does mean you won't find a thread confirming your exact settings, so test prompts yourself and lean on the task_id receipt whenever the node and the server disagree.
Inputs (22)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| resolution | COMBO | 1k | 3 options: 1k, 2k, 4k |
| size | COMBO | 16:9 | 16 options: auto, 1:1, 1:3, 3:1, 16:9, 9:16, +10 |
| nsfw_check | BOOLEAN | false | — |
| 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 | — | |
| image15opt | IMAGE | — | |
| api_configopt | ZHENZHEN_SEEDANCE2_CONFIG | — | |
| skip_erroropt | BOOLEAN | false | — |
| seedopt | INT | 00–18446744073709550000 | ComfyUI cache seed only; it is not sent to Image G v2.5. Fixed reuses the cached result. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| image_url | STRING | — |
| task_id | STRING | — |
| response | STRING | — |