Qwen Image 2.1 LoRA · Image Editing
Edit a photo in a style you trained into a LoRA
- image_urls
- loras
- images
- task id
Instruction editing got most of this ecosystem's attention because it replaces the mask-plus-ControlNet-plus-adapter stack. What it can't do on its own is put your style on the result - a specific art style, a specific character, a specific look you've already trained. That's where this variant comes in: the same edit model, with up to three of your own LoRA weights applied underneath.
This is the pairing that makes sense for anyone with a house style. Feed it a photo and "render this as an illustration in our campaign style", with the LoRA that encodes the campaign style attached, and you get a coherent pass rather than a stylistic lottery. It's also the least fiddly node in this family - there's no mask, no background mode, no prompt expansion, so you can't accidentally set two things that contradict each other.
The inputs
prompt- the edit instruction. Natural language: subject, composition, lighting, any wording you want rendered.image_urls- one to ten reference images, one socket each. And they get expensive: the author's tooltip is explicit that every image you add raises the quote. Multi-image edits want positional references in the prompt - "Picture 1 in the pose of Picture 2" - because otherwise the model blends.loras(optional) - aSPICY_LORASsocket from the SpicyAPI LoRA node. Up to three files, strength 0 to 4 each.aspect_ratio- default 1:1. It does not quietly follow your source image, so if your input is 16:9 and you want 16:9 back, say so.resolution-1k,1.5kor2k, defaulting to 1k.output_format- jpeg, png or webp. Note there's no transparent-background option on this variant, so jpeg is a sane default here.seed- fixed by default: same seed and settings, same result, so re-queueing doesn't buy a duplicate.
Outputs
images and task id. Straight into Save Image or a detailer.
Getting a LoRA in there
Add a SpicyAPI LoRA node, give it an https:// link that resolves directly to a .safetensors and a scale, and wire its loras output here. Up to three, and the node chains, so you can stack three LoRA nodes in a row if you want a style and a character at once. The link must open without a login - a Hugging Face resolve link works, a model page or a Drive folder doesn't.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, paste a key from spicyapi.ai/console/keys into Settings > SpicyAPI, restart once more so the node list is built from your account. No dependencies, no weights, no GPU. On a headless machine, use SPICY_API_KEY.
What goes wrong
Unedited pixels move. That's the family's known behaviour, and this node has no mask input to prevent it - if you need the untouched parts to stay untouched, use the meta-mask variant of the 2.1 edit node instead, or do a crop-edit-stitch workflow: mask the region, edit the crop, paste it back. The whole 2026 hybrid workflow exists because of this.
Faces drift on chained edits. Two or three passes on the same face and you have a cousin, not the same person. Fewer passes, tighter crops.
LoRA strength is a dial, not a switch. 0 to 4 sounds generous; 1.5 is usually the ceiling before things get crunchy, and 0.7 is where a subtle style LoRA often belongs.
It's per image, around $0.042 here. Cheaper than a GPU, expensive enough that a batch you throw away hurts. Set Max cost per run in the SpicyAPI settings - each run is quoted before it's submitted and blocked above your ceiling with nothing charged - and remember that cancelling in ComfyUI doesn't cancel the job, it just stops you watching it.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the subject, composition, lighting, and any wording to render. | |
| image_urls | COMFY_AUTOGROW_V3 | One to ten reference images. Each one you add raises the quote. | |
| aspect_ratio | COMBO | 1:1 | Output aspect ratio. |
| resolution | COMBO | 1k | Output resolution tier. |
| 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 custom LoRA weights applied on top of the base model. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |