Z-Image
Z-Image Without Downloading a Single Weight
- image
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Z-Image is Apache 2.0, 6.15B parameters, and it runs on a 3060 12GB at roughly thirty seconds an image. You can have the whole thing locally for free. So why does this node exist?
Because not everyone has the 12GB. The honest pitch for the KIE Z-Image node is the plainest reason any workflow phones out: you want the model, you don't want to be the one running it. No diffusion weights, no separate Qwen3-4B text encoder, no VAE to hunt down. You paste a prompt, you get an image, you get billed for it.
That's the trade. If you have a decent card, run it locally - you also get the LoRA ecosystem and ControlNet, which this node has no concept of.
What actually happens when you hit Queue
Nothing diffuses on your machine. This node is an HTTP client with a nice hat on.
It builds a small JSON body - prompt, aspect_ratio, nsfw_checker - and POSTs it to api.kie.ai/api/v1/jobs/createTask with the model id z-image. Then it polls the job record until the remote run reports success, downloads the resulting PNG, and hands you an IMAGE tensor you can wire straight into Save Image.
Which is what beginners trip on: your sampler stack isn't here. No steps, no CFG, no seed, no sampler pickers, no negative prompt box. You don't control the generation, you commission it.
For Z-Image that stings less than you'd expect. Turbo is guidance-distilled - CFG 1, eight-ish steps, negatives inert - so the fixed remote defaults sit close to what you'd run locally. What you give up is the ability to nudge.
The node class is generated at import time from a catalog the pack builds off KIE's own docs - that cc5ccc64 on the end is a stable SHA-1 of the doc URL plus model id. The pack also re-syncs that catalog at most once every 24 hours, so new KIE models can appear as nodes without a pack update. Flip side: a node you liked can stop working because KIE changed something on their end.
The inputs you'll actually touch
prompt is the whole job, so write it like a photo brief rather than a tag soup. The field is capped at 1000 characters and Z-Image is a natural-language model - it wants prose. If you get the usual plastic-skin influencer look, name a camera and a film stock instead of adding "ultra detailed, 8k"; the encoder essentially ignores SD-era quality spam.
aspect_ratio is a five-item dropdown: 1:1, 4:3, 3:4, 16:9, 9:16. Small trap - the tooltip tells you to pick auto to match an input image, but auto isn't in the list and there's no image input on this node at all. Leftover text from KIE's generic docs. This is text-to-image only; image-to-image through KIE is a different node in the same pack.
Then the optional stuff. nsfw_checker ships checked, despite its tooltip claiming the opposite - trust the checkbox, not the sentence. timeout_seconds defaults to 1200 (twenty minutes of polling, adjustable 30–7200) and only matters when KIE's queue is slow. callback_url stays empty for normal ComfyUI use.
Outputs: image is the one you wire up. url, all_urls_json, task_id and raw_json are for debugging and scripting; credits_consumed and credits_left are FLOATs and are the most useful pair on the node, because they tell you what that render cost and what's left in the account.
Installing it
Search KIE.ai Nodes Next in ComfyUI Manager, or do it by hand:
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt
Restart ComfyUI. Dependencies are light - requests, Pillow, numpy, PyYAML - and there are no model downloads, which is the point.
Then set the key once, because nothing runs without it: Settings → KIE.ai Nodes Next → Connection. The pack validates it against KIE before saving, then shows you a masked fingerprint and a connected status. The key lives in ComfyUI's user config folder, not your workflow JSON. On a headless box, set KIE_API_KEY instead - it takes priority.
Where people get burned
No key. Skip the settings step and the node fails with a "No KIE API key configured" error, which at least tells you exactly where to go.
Twenty minutes isn't always enough. If KIE's queue is slow, raise timeout_seconds - the failure message includes the task id and last known state, which is more than most API nodes bother with.
Old one-click installs. The v0.3.0 Windows installer wrote its backups inside custom_nodes, where ComfyUI can import them as live nodes and show you duplicates. v0.3.1 and later quarantine them outside the node folder; manual and zip installs never had the problem.
You're paying, every time. No free tier, no dry run - a typo'd prompt is a billed render. Watch credits_consumed for a few runs before you wire this into a batch loop of two hundred.
It holds your key and calls the network by design. That's what an API node is, and it's also the exact shape of the ComfyUI custom node that shipped credential-stealing malware. Keep the pack updated from the official repo, and be careful with the lookalike "KIE API" packs in the registry - there's more than one.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Generate a photorealistic image of a cafe terrace in the Marais district of Paris on a Wednesday morning in March 2025. It is a crisp, cool spring morning with clear skies. Locals are drinking coffee. In sharp focus should be a young woman with a pixie cut wearing a scarf, stirring a cappuccino and looking thoughtfully to the side; the waiter and street traffic behind her are blurred. The photo should have the candid, natural morning light feel of an iPhone image. | A text description of the image you want to generate (Max length: 1000 characters) |
| aspect_ratio | COMBO | 1:1 | Aspect ratio for the generated image. Select 'auto' to match the first input image ratio (requires input image). |
| nsfw_checkeropt | BOOLEAN | true | Defaults to false. You can set it to false based on your needs. If set to false, our content filtering will be disabled, and all results will be returned directly by the model itself. Note: There is no guarantee that everything can be filtered out; if you are not satisfied with the results, you will need to make your own arrangements. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |