Nodes/ComfyUI_RunpodNodes/RunPod WAN 2.2 I2V 720p LoRA
ComfyUI Node

RunPod WAN 2.2 I2V 720p LoRA

The high-noise / low-noise split, without running 27B

By tcarwash·Created 8 months ago·Updated 8 months ago· 0
RunPod WAN 2.2 I2V 720p LoRA
  • input_image
  • video_url
api_key
promptorbit 180 around an astronaut on the moon
image
high_noise_loras[]
low_noise_loras[]
duration5
seed-1
enable_safety_checkertrue

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 image field takes a URL string; connect an IMAGE tensor to input_image and 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.

CategoryRunPod/Video

Inputs (9)

NameTypeDefaultDescription
api_keySTRING
promptSTRINGorbit 180 around an astronaut on the moon
imageSTRING
high_noise_lorasSTRING[]
low_noise_lorasSTRING[]
durationINT51–10
seedINT-1-1–2147483647
enable_safety_checkerBOOLEANtrue
input_imageoptIMAGE

Outputs (1)

NameTypeDescription
video_urlSTRING