SF WaveSpeed Wan 2.5 Image to Video
Animate a still with Wan 2.5 — and optionally drive the video with an audio clip
- client
- video_url
Wan is where local video generation consolidated - but only up to 2.2. Everything after that, including 2.5, is API-only, which is why you'd reach for this node: it's Wan 2.5 image-to-video served over WaveSpeed's API. You give it a still, it animates it. No 25-minute local renders, no VRAM juggling, no model downloads. The trade is that it costs real money per generation and it needs an internet connection, but for a one-off animated shot it beats babysitting a local pipeline.
Wan 2.5 is the model the community actually rated as a genuine step up from 2.2 in the one serious head-to-head it ever got - and WaveSpeed was first to host it. This standard variant is the one to reach for when you want the full quality range: it offers 480p, 720p, and 1080p, plus the option to guide generation with an audio clip.
How it works
Standard pack anatomy: wire an SF WaveSpeed Client into client. The node POSTs your image URL and prompt to /api/v3/alibaba/wan-2.5/image-to-video and polls until the render finishes, then returns a video_url string. No local model runs; your machine just signs the API call and waits.
The inputs that matter
- image - the still to animate, as a URL string (from an Upload Image node).
- prompt - what should happen in the video. Wan is decent at following motion descriptions, so spell the movement out.
- resolution - 480p, 720p, or 1080p. Default is 720p, which is the sane starting point.
- audio - the interesting one: a URL to an audio clip (wav/mp3, 3–30 seconds, ≤15MB) that guides the video generation. Wan 2.5 can sync motion to audio, which is a capability most local models don't give you for free. Leave blank for silent motion.
- duration - 5 or 10 seconds.
- enable_prompt_expansion - off by default; turns the API's automatic prompt-enhancement on.
- negative_prompt, seed, enable_sync_mode - the standard trio; seed -1 for random, sync mode changes the API path but the node blocks until done either way.
Output: video_url, a string you can open or feed into a URL-consuming node.
Installing it
ComfyUI Manager, search comfyui-stillfront, install. Or manually:
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/comfyui-stillfront.git
cd comfyui-stillfront
pip install -r requirements.txt
Get a WaveSpeed API key from wavespeed.ai and set it in config.ini (copy config.ini.tmp first), as the WAVESPEED_API_KEY environment variable, or in the SF WaveSpeed Client's api_key widget. The README's stillfront/... clone URL is stale; the repo is razvanmatei-sf/comfyui-stillfront.
Where people get burned
The image field is a URL string, not an IMAGE tensor - a normal Load Image node won't connect. Same for audio: it wants a URL to a hosted audio file, not a local path. That's the whole pack's convention, and it trips up anyone coming from a local workflow.
Then there's the "fast" sibling: this pack also ships an Image to Video Fast variant, which costs less and returns quicker but tops out at 1080p with a narrower resolution list (720p/1080p only). If you're iterating, use Fast; if you want the full 480p-to-1080p ladder, this is the node.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| image | STRING | Image URL to animate (connect from Upload Image node) | |
| prompt | STRING | Text description for video animation | |
| resolution | COMBO | 720p | Video output resolution |
| negative_promptopt | STRING | Describe what you don't want in the video | |
| audioopt | STRING | Audio URL to guide video generation (3-30 seconds, wav/mp3, ≤15MB) | |
| durationopt | COMBO | 5 | Video duration in seconds |
| enable_prompt_expansionopt | BOOLEAN | false | Automatically expand and enhance the prompt |
| seedopt | INT | -1-1–2147483647 | Random seed for reproducible results. -1 for random seed |
| enable_sync_modeopt | BOOLEAN | false | Wait for generation to complete before returning |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_url | STRING | — |