WaveSpeedAI WAN 2.5 Image-to-Video
WAN 2.5 video with full controls — the non-fast hosted option
- client
- video_url
WAN 2.5 never got open weights - Alibaba shipped the 2.1/2.2 checkpoints locally and then took the numbered series behind an API. So if you specifically want 2.5's output, you're renting it one way or another. This node is the fuller-featured of the pack's two WAN 2.5 image-to-video nodes: it adds a negative_prompt, a 480p floor on resolution, and all the same audio-guided motion options, in a package that still runs on a laptop with zero local inference.
What it is
The non-"Fast" sibling of WaveSpeedAI WAN 2.5 Image-to-Video Fast. Same model family, same hosted mechanism, but the input set is a step richer: resolution starts at 480p (the Fast node starts at 720p), and you get the full optional stack of negative prompt, audio, duration, prompt expansion, seed, and sync mode. If you want the most control per render - and don't mind the slightly longer queue on WaveSpeed's side - this is the one.
How it works
The familiar pack pattern: client from the WaveSpeedAI Client node, image as a public URL, and a POST to the WAN 2.5 image-to-video endpoint. The response is polled (up to 30 minutes) or awaited depending on enable_sync_mode, and the node returns a video_url string. Nothing local runs except the request and whatever you wire the URL into.
The inputs that matter
- image - the frame to animate, as a reachable URL.
- prompt - what moves and how. WAN reads natural language motion descriptions well.
- resolution - 480p / 720p / 1080p. Bigger costs more and queues longer; validate at 480p.
- negative_prompt - the extra this node has over the Fast one. Use it for the usual suspects: warped anatomy, flicker, extra limbs.
- audio - an optional audio URL (3–30s, wav/mp3, ≤15MB) that the video will sync to. This is the feature that justifies the WAN 2.5 API price if you're producing lip-synced or soundtrack-aligned clips.
- duration - 5 or 10 seconds; enable_prompt_expansion - auto-enhance the prompt; seed - -1 for random.
Output is video_url (STRING) - a URL, so plan a download step.
Install & setup
Pack-wide install:
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed.git
cd razv-wavespeed
pip install -r requirements.txt
or ComfyUI Manager → "razv-wavespeed" → Install, restart. API key from wavespeed.ai via config.ini (copy config.ini.tmp), the Client node, or WAVESPEED_API_KEY. Deps: requests, pillow, numpy<2.0.0, torch. No model downloads.
Common issues
- 30-minute timeout on long renders - longer durations at higher resolutions can brush the task ceiling; retry with a shorter clip or lower resolution.
- Audio input ignored / upload rejected - the audio URL must be publicly reachable and within the stated size and length limits.
- 401 / "Invalid API key" - key issue, as across the pack.
- Naming trap - this is the wavespeed.ai API, not the popular "WaveSpeed" local speedup plugin. Different projects entirely.
The Fast node is the better default when you're experimenting; this one earns its keep when you know you need negatives, audio, or 480p validation runs. Same model, same costs, just more dials.
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 | — |