Z-Image Base LoRA · Image Editing
Restyle a photo with your own LoRAs
- image_url
- loras
- images
- task id
Z-Image is the model that made 6B parameters feel like enough: Alibaba's Tongyi-MAI shipped it Apache 2.0, uncensored, and it became the local photorealism default while bigger models were busy being disappointing. Base is the non-distilled half of the family - the one LoRAs are trained on. This node runs Base as an image-to-image endpoint and lets you attach up to three of your own LoRA files, so you can use a LoRA you trained without owning the GPU time or the 12GB of VRAM to run a decent sampler locally.
What it does
One source image in, the same aspect ratio out at a 1k or 1.5k long side, $0.0144 per image flat. You describe the whole image you want back - not the change - and a strength control decides how far from the source it's allowed to move. Add LoRAs when a style or a subject needs help that prompt alone won't give.
If you've trained on Z-Image, this is the fast loop: train locally, then test the LoRA against a real prompt set on someone else's card for a cent and a half an image. If you haven't trained, the pack's LoRA template points at a free pixel-art LoRA for Z-Image Turbo, which is a perfectly good way to see whether the LoRA plumbing works before you build your own.
The inputs
- prompt - describe the whole image you want back. This trips people up constantly: "make the jacket red" is the wrong shape of instruction; "a person in a red jacket, standing in a doorway, overcast light" is the right one.
- image_url - the source. Aspect ratio is preserved, so don't pre-crop unless you want it preserved that way.
- resolution -
1k(1024) or1.5k(1536) on the long side, default 1k. That's the sane range: Z-Image's native sweet spot is around 1–2MP, and pushing past it just buys you softness. - strength - 0 to 1, default 0.7. Low values stay close to the source, high values let the prompt run. 0.6–0.8 is where most restyling lands.
- output_format - jpeg, png or webp. Use png if you're going to edit the result again; jpeg is fine for delivery.
- seed.
- Optional loras - this is a
SPICY_LORASsocket, not a text field. Wire a SpicyAPI LoRA node into it: that node takes a direct.safetensorsURL and a strength, and you can chain several of them. The link has to open without a login, and up to three LoRAs are accepted per request. Keep the total strength modest - stacking three heavy LoRAs is how Z-Image collapses, and locally the guidance is to use one at a time for a reason.
Outputs: images (a standard IMAGE - Save Image or anything downstream) and task id (STRING, the SpicyAPI task id for support).
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Manager → search SpicyAPI. Restart, then Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys, and restart once more so the node list is rebuilt from your account. On a server, SPICY_API_KEY. No weights, no pip installs: the dependency list is empty, and the pack only needs the Python 3.10+ / V3-node-API ComfyUI you already have (tested with 0.39).
Cost and friction
$0.0144 per image means a hundred-image experiment costs $1.44 - the flat per-image pricing is what makes this a genuinely useful LoRA-testing node. Two things to know anyway: set Max cost per run in the SpicyAPI settings (the pack quotes before submitting), and leave the seed on fixed while you compare prompt variants, because a re-queue then reuses the cached result instead of charging again. The failures you'll actually hit are No SpicyAPI key is set, 40310 (verify your email), 40004 (no deployment serves that combination - change the option named), or a LoRA that won't load because the URL needs a login.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the whole image you want back, not just the change. | |
| image_url | IMAGE | Source image. The result keeps its aspect ratio. | |
| resolution | COMBO | 1k | Length of the output's long side: 1k is 1024 pixels, 1.5k is 1536. The source's aspect ratio is kept. |
| strength | FLOAT | 0.700–1 | How far to move away from the source, from 0 to 1. |
| output_format | COMBO | jpeg | Container of the returned image. |
| 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. |
| lorasopt | SPICY_LORAS | Up to three LoRA weight files trained for Z-Image Base, each with its own strength. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |