Wan 2.2 LoRA · Image To Video
Separate LoRA slots for the high-noise and low-noise experts
- image_url
- loras
- high_noise_loras
- low_noise_loras
- video
- task id
This is the interesting one, and not for the reasons people usually get excited about LoRA nodes. Wan 2.2 isn't a single model - it's a mixture of experts, where denoising is split between a high-noise expert that handles motion and scene composition and a low-noise expert that handles detail. That architectural detail is where most community confusion about Wan speed LoRAs comes from, and it's why this node has three separate LoRA inputs instead of one.
Recall the famous warning: speed LoRAs for Wan 2.2 "kill everything that's good in it" - scene composition, lighting, motion, character emotion - and the compromise most people settled on was applying the speed LoRA to the low-noise pass only while keeping the high-noise expert untouched. That exact compromise is a supported option here. high_noise_loras and low_noise_loras are separate sockets. If you've ever wanted to test that split without editing a KSampler graph, this node is a cheap way to do it.
Inputs
image_url- the opening frame, anIMAGEsocket.prompt- the motion to generate.resolution-480pdefault,720pavailable.duration_seconds- a dropdown,5or8. Not a slider; two choices, and the price scales with the one you pick.loras(optional) - LoRA weights applied to both noise experts. This is your default slot.high_noise_loras(optional) - applied to the high-noise expert only, the one that sets motion and composition.low_noise_loras(optional) - applied to the low-noise expert only, the detail pass. Speed LoRAs belong here.seed- same seed and settings, same result, fixed after generate by default so a re-queue doesn't buy a duplicate.
Each LoRA socket takes an SPICY_LORAS value from the SpicyAPI LoRA node, which wants a direct https:// link to a .safetensors that opens without a login, plus a strength from 0 to 4. The LoRA node chains, so you can stack three weights. And per the model's own docs, up to three files per slot.
Outputs
video and task id. Save Video takes the video; the task id is your job handle with SpicyAPI.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart ComfyUI, add a key from spicyapi.ai/console/keys in Settings > SpicyAPI, restart once so the node list comes from your account. Nothing installs locally - no weights, no dependencies, no GPU. SPICY_API_KEY for servers. The key lives in your ComfyUI user folder, never in the workflow.
Two things worth knowing
This variant is the cheap one. At around $0.0204/s, five seconds is about ten cents and eight seconds about sixteen - well under the plain Wan 2.2 image-to-video node's flat per-run price. Counter-intuitive, but the LoRA tier is genuinely the budget option here.
Don't stack speed LoRAs on both experts. The template everyone converged on is speed on the low-noise pass, original weights on the high-noise pass, because that's the split that keeps camera movement, lighting behaviour and prompt adherence intact while buying back render time. Put a speed LoRA in loras - "both experts" - and you're back to the plastic-skin outcome the PSA thread was complaining about.
And mind the money. Put a ceiling in Settings > SpicyAPI > Max cost per run so the node's pre-run quote stops anything over budget with nothing charged. Cancelling a run stops you waiting, not the job: it finishes server-side and is billed on success, with the result in your console for 14 days. Errors come with a task id - 40004 means no deployment serves the parameter combination you chose, 40310 means the account's email is unverified.
Inputs (8)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the motion to generate. | |
| image_url | IMAGE | Opening-frame image. | |
| resolution | COMBO | 480p | Output video resolution. |
| duration_seconds | COMBO | 5 | Output video duration in seconds. |
| 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 | LoRA weights applied to both noise experts. | |
| high_noise_lorasopt | SPICY_LORAS | LoRA weights applied to the high-noise expert. | |
| low_noise_lorasopt | SPICY_LORAS | LoRA weights applied to the low-noise expert. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |