RunPod WAN 2.2 I2V 720p LoRA
The high-noise / low-noise split, without running 27B
- input_image
- video_url
This is the one RunPod Wan node that does something the plain ones can't: it lets you attach LoRAs to Wan 2.2's denoising passes. Instead of one image and a prompt, you get two LoRA slots - high_noise_loras and low_noise_loras - and that split is the whole story of Wan 2.2.
Here's why it matters. Wan 2.2 is a Mixture-of-Experts model: a high-noise expert handles motion and scene composition, and a low-noise expert refines detail. The two fields mirror that architecture exactly. The most common thing you'll put in these is a speed LoRA, and the community's hard-won lesson is where it goes matters: a speed LoRA slapped on the high-noise pass wrecks composition, lighting, and motion - one heavily-tested user called them "flux level plastic skin" - while applying one to the low-noise pass only is the widely-adopted compromise. So low_noise_loras is usually the field you actually use.
How it works
Like every node in tcarwash/ComfyUI_RunpodNodes, this is a thin wrapper over a RunPod public endpoint - here wan-2-2-t2v-720-lora (yes, the source's endpoint ID says t2v while the node is image-to-video; don't let that rattle you, the payload the node builds is I2V). It submits an async job with your key in the Authorization header, polls status once a second, and prints [RunPod] Status: ... lines to the console until the job completes. The LoRA fields are JSON strings the node parses with json.loads before sending - you write a JSON array describing each LoRA (name and strength, per RunPod's endpoint docs), not the raw LoRA files themselves. They live on RunPod's servers, which is a real constraint: you can't point it at a local .safetensors on your disk.
The inputs that matter
- api_key - your RunPod key, in the field.
- prompt - the motion you want, e.g. the default "orbit 180 around an astronaut on the moon."
- image / input_image - the starting frame. The
imagefield takes a URL string; connect an IMAGE tensor toinput_imageand it's base64-encoded and sent instead. - high_noise_loras / low_noise_loras - JSON arrays, default
[]. This is where you spend your time. - duration - 1–10 seconds, default 5.
- seed - -1 for random.
Notice what's not here: no steps, no guidance, no flow_shift, no size, no negative prompt. The endpoint keeps those fixed server-side, which is the trade for the LoRA support - you get style control but lose the sampler dials.
The output
One output: video_url, a STRING. Connect it to a "Load Video from URL" node or Save Text. It expires after about seven days - download anything you want to keep.
Install and gotchas
cd ComfyUI/custom_nodes
git clone https://github.com/tcarwash/ComfyUI_RunpodNodes
Restart (or search "RunpodNodes" in ComfyUI Manager). No extra dependencies beyond what ComfyUI ships, no model downloads.
The gotchas are the usual API-node ones, plus one specific to this node. First, malformed JSON in a LoRA field throws a hard error - the node's parser will tell you "Invalid high_noise_loras: ..." with the JSON error, so quote carefully. Second, this is the fanciest node in the pack and the least battle-tested: the pack is a brand-new single-author release with zero community track record, so if you're going to paste a paid API key into anything, read the source here first. And the LoRA-specific workflow - picking which pass to modify - is exactly the kind of thing you should test cheap before committing to a batch of paid renders.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| prompt | STRING | orbit 180 around an astronaut on the moon | — |
| image | STRING | — | |
| high_noise_loras | STRING | [] | — |
| low_noise_loras | STRING | [] | — |
| duration | INT | 51–10 | — |
| seed | INT | -1-1–2147483647 | — |
| enable_safety_checker | BOOLEAN | true | — |
| input_imageopt | IMAGE | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |