Z-Image Spicy Pro · Text To Image
You set the pixels, up to 2560 a side
- images
- task id
Most hosted image nodes give you a dropdown of aspect ratios and pick the pixels for you. This one doesn't: you set width and height independently, up to 2560 each. That's the whole appeal - you can hit 1600×900, 2048×1152, or a vertical 1080×2560 for a phone wallpaper, without hoping a ratio option lands near what you need. It's the uncensored Pro endpoint of the Z-Image line, $0.019 an image, and the prompt has no character cap.
A word about those big numbers
Z-Image is a 6B model whose native output sweet spot is roughly 1–2 megapixels - that's the documented ceiling, and it's why the local workflows everyone runs sit around 1024–1440. A 2560×2560 request is 6.5MP, more than three times that. You can ask for it; whether you get true detail at that size or a generous upscale is worth testing on one prompt before you build a client job around it. My rule: keep Z-Image work in the 1–2MP band, then upscale locally where you can pick the method and see what you're actually getting. Bigger numbers on the node aren't free detail.
What you set
- prompt - describe the image. No length limit, so a full paragraph of staging is fine, and it usually pays off.
- width / height - integers, 1024×1024 by default, up to 2560 on each side.
- enable_prompt_expansion - off by default, and worth leaving off if you care about your own wording; it's a prompt rewriter, so it's the difference between "the model rendered what I asked" and "the model rendered what a smaller model decided I meant".
- seed - same seed, same image.
Outputs: images (a standard IMAGE, so Save Image, a preview, an upscaler, whatever) and task id (STRING, the SpicyAPI task id, which is what support asks for if something goes sideways).
Why "Spicy" matters, and what it doesn't mean
Z-Image is genuinely uncensored out of the box - Apache 2.0, no refusal layer, and that's a big part of why the local community adopted it over Flux 2's heavily filtered Dev. The Spicy-labelled hosted endpoints are the pack's version of the same promise: no filter on prompts or results. Read that as a capability claim about the model, not a privacy feature. Your prompt still goes to a third party over the network and is logged there; that's the trade for not running the 6B stack yourself. The KB's long-standing guidance applies - an API node is the right tool for a model you can't run, and the wrong default for one you can.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Manager → search SpicyAPI works as well. Restart ComfyUI, then Settings > SpicyAPI, paste a key from spicyapi.ai/console/keys, restart once more so the node list is rebuilt from your account, and you're done - no models to download, no dependencies (the pack's dependency list is empty; Python 3.10+ and the V3 node API is all it wants, tested with ComfyUI 0.39). Headless machines: SPICY_API_KEY.
Practical notes
At $0.019 an image, a fifty-image sweep is 95 cents, so experimenting is cheap - but set Max cost per run in the SpicyAPI settings anyway, because the pack's pre-flight quote is what protects you from a fat-fingered queue of full-queue runs. Seeds start fixed, meaning a re-queue reuses the cached result rather than charging twice; switch control after generate to randomize when you're hunting for a take. When it fails, the message tells you: No SpicyAPI key is set, 40310 (unverified email), 40004 (no deployment serves that combination - change the option it names), or a message ending in request_id ... that support can trace.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the image to generate. | |
| width | INT | 1024256–2560 | Output image width in pixels. |
| height | INT | 1024256–2560 | Output image height in pixels. |
| enable_prompt_expansion | BOOLEAN | false | Expand the prompt before generation. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |