Nodes/comfyui-stillfront/SFWaveSpeedWan22I2V720p
ComfyUI Node

SFWaveSpeedWan22I2V720p

Wan 2.2 I2V with a start AND end frame — the cloud node that anchors both ends

By razvanmatei-sf·Created 9 months ago·Updated 7 months ago· 0
SFWaveSpeedWan22I2V720p
  • client
  • video_url
image_url
prompt
duration5
enable_sync_modetrue
negative_prompt
last_image_url
seed-1

Wan is the open video family the community consolidated on, and Wan 2.2 is its high-water mark - the 27B MoE with the best faces and motion of anything you can run locally. It's also the last open one, because Alibaba froze the numbered series at 2.2 and took 2.5+ API-only. This node is the cloud version of Wan 2.2 image-to-video at 720p, from the SF ComfyUI Nodes pack (Stillfront/comfyui-sf-nodes): a still image in, a motion prompt, and a 720p clip back.

But here's the feature that makes this node stand out from the generic "animate my image" crowd: last_image_url. That's an optional second image that guides the end of the video. Most I2V nodes condition on the first frame and let the ending wander. This one can pin both ends - which is exactly how you force a seamless loop, or guarantee the camera lands on a specific final composition. If you've fought with loop workflows that never quite join up, this is the input you've been missing.

How it works

The node POSTs your image, prompt, duration (5 or 8 seconds), and optional negative prompt plus last_image to /api/v3/wavespeed-ai/wan-2.2/i2v-720p. Wan 2.2's two-expert architecture - high-noise pass for motion and composition, low-noise for detail - runs on WaveSpeed's side. The result comes back as a hosted video_url (STRING). Nothing runs locally, and the 720p ceiling is the model's native tier, so you're not paying for a hallucinated upscale.

The inputs that matter

  • client - required, from the SF WaveSpeed Client node.
  • image_url - the start frame. URL string from ComfyUI's Upload Image node; must be publicly reachable.
  • prompt - describe the motion and content. The community rule for Wan I2V applies here too: describe the motion in this field, don't re-describe the image as if it's text-to-video.
  • duration - 5 or 8 seconds.
  • last_image_url - the optional end frame. This is the standout input: wire one in to anchor the ending (or force a loop back to the start).
  • negative_prompt - optional; useful for the usual video failure modes.
  • seed - -1 for random; set it to lock a take.
  • enable_sync_mode - on by default, so the node waits for the clip.

Output: video_url (STRING) - a link to the finished 720p clip.

Install

Same pack install as always. ComfyUI Manager → search "SF ComfyUI Nodes" → install → restart, or:

cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt

Then an SF WaveSpeed Client node with your key. No models, no VRAM, no GGUFs to track.

Gotchas

  • URLs must be public. Both the start and end images are fetched by WaveSpeed's servers; localhost fails.
  • The loop trick costs the same as a normal run - that's the good news. Feed the same image into both image_url and last_image_url and the model has to land where it started, which is the cheap path to a loopable clip.
  • End-frame conditioning is a hint, not a promise. last_image guides the ending; it doesn't guarantee a frame-perfect match. If you need pixel-exact ends, this gets you close, then a local stitch pass finishes it.
  • README config drift: the README's wavespeed_api_key example doesn't match the api_key key the code reads. Copy config.ini.tmp.

Wan 2.2 I2V is one of those nodes where you either have a use for the end-frame input or you don't - and if you do, you'll wonder why every other video node in this pack doesn't have it. For loopable clips and directed endings from a strong still, it's the one I'd reach for in the WaveSpeed section.

CategoryStillfront/WaveSpeed

Inputs (8)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
image_urlSTRINGURL of input image for video generation (connect from Upload Image node)
promptSTRINGText prompt describing the desired motion and content
durationCOMBO5Duration of the generated video in seconds (5 or 8)
enable_sync_modeBOOLEANtrueWait for generation to complete before returning
negative_promptoptSTRINGNegative text prompt of what to avoid in the generation
last_image_urloptSTRINGOptional URL of an image to guide the end of the video (connect from Upload Image node)
seedoptINT-1-1–2147483647Random seed for reproducible results. -1 for random seed

Outputs (1)

NameTypeDescription
video_urlSTRING