WaveSpeedAI WAN 2.5 Text-to-Video
Wan 2.5 Has No Weights — This Node Is the Only Way to Run It From ComfyUI
- client
- video_url
Here's the thing about Wan 2.5 that most people don't realize until they go looking for it: there are no weights. Wan 2.1 and 2.2 put open-source video on the map - 14B diffusion transformer, uncensored, Apache 2.0, the whole community's base layer. Then Alibaba took the numbered series behind an API and never looked back; 2.5, 2.6, and 2.7 ship nowhere you can download. So if you want "Wan 2.5" inside ComfyUI, you're not going to find a checkpoint for it. You're going to find WaveSpeedAI WAN 2.5 Text-to-Video, which runs the model remotely and drops the clip back into your graph.
That's the honest value proposition: this node is an API door for a model that otherwise lives in a separate web app. You pay per clip on WaveSpeed's hosted service instead of burning VRAM on the 14B you already have locally.
How it works
It's a thin client under a friendly face. The node takes your prompt, resolution, and duration, POSTs them to api.wavespeed.ai/api/v3/alibaba/wan-2.5/text-to-video, then polls until the render completes (up to a 30-minute cap). Generation happens on WaveSpeed's servers; your machine just makes an HTTP call and waits.
Two features make the Wan 2.5 node more interesting than its siblings. First, audio: you can pass an audio URL (3–30 seconds, wav or mp3, ≤15MB) and the video generation is guided by that audio - lips, motion, and rhythm shaped by the track. That's a real Wan 2.x capability, not a gimmick toggle. Second, enable_prompt_expansion, which lets the API rewrite and enhance your prompt before generating - handy if your prompt writing is lazy, mildly dangerous if you care about exact control.
The inputs that matter
- client - required, the
WAVESPEED_AI_API_CLIENToutput from a WaveSpeedAI Client node. No client, no call. - prompt - multiline text description. This is the whole creative input for text-to-video.
- size - six options from 832×480 up to 1080p (1920×1080 / 1080×1920). Default 1280×720.
- duration - 5 or 10 seconds. Default 5.
- negative_prompt - describe what you don't want. Worth filling in; hosted models love to add random objects.
- audio - the optional audio-guidance URL described above.
seed (-1 for random) and enable_sync_mode round it out. The output is a single video_url string - a hosted file, not a video tensor. You can't feed it straight into local post-processing; preview it or open the URL.
Installing it
Same install for the whole Razv WaveSpeed pack. ComfyUI Manager → search "razv-wavespeed" → Install, or:
cd ComfyUI/custom_nodes
git clone https://github.com/razvanmatei-sf/razv-wavespeed.git
cd razv-wavespeed
pip install -r requirements.txt
Restart, then create a WaveSpeedAI Client node and paste in your wavespeed.ai API key. Skip the config-file dance - the README's documented format (key =) doesn't match what the code reads (api_key =), and pasting the key directly into the Client node sidesteps the whole thing.
Where people get burned
Two traps, both easy. First, the naming collision: when ComfyUI people say "WaveSpeed," half the time they mean the inference acceleration project (chengzeyi/Comfy-WaveSpeed) that gives 2–3x speedups on local models. That is not what this is. This pack calls the WaveSpeed AI API - you need a paid key from wavespeed.ai. Second, don't come here expecting open-weight Wan. If you just want a local video model, Wan 2.2 still exists and runs beautifully on your own card. This node is specifically for the API-only version. And if the node doesn't appear after install, install PyAV (av) and torchaudio by hand - the pack's code needs them even though they're missing from requirements.txt.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| prompt | STRING | Text description for video generation | |
| size | COMBO | 1280*720 | Video resolution (width*height) |
| 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 | — |