Nodes/ComfyUI Razv WaveSpeed Nodes/WaveSpeedAI WAN 2.5 Image-to-Video
ComfyUI Node

WaveSpeedAI WAN 2.5 Image-to-Video

WAN 2.5 video with full controls — the non-fast hosted option

By razvanmatei-sf·Created 12 months ago·Updated 9 months ago· 0
WaveSpeedAI WAN 2.5 Image-to-Video
  • client
  • video_url
image
prompt
resolution720p
negative_prompt
audio
duration5
enable_prompt_expansionfalse
seed-1
enable_sync_modefalse

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.

CategoryWaveSpeedAI

Inputs (10)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
imageSTRINGImage URL to animate (connect from Upload Image node)
promptSTRINGText description for video animation
resolutionCOMBO720pVideo output resolution
negative_promptoptSTRINGDescribe what you don't want in the video
audiooptSTRINGAudio URL to guide video generation (3-30 seconds, wav/mp3, ≤15MB)
durationoptCOMBO5Video duration in seconds
enable_prompt_expansionoptBOOLEANfalseAutomatically expand and enhance the prompt
seedoptINT-1-1–2147483647Random seed for reproducible results. -1 for random seed
enable_sync_modeoptBOOLEANfalseWait for generation to complete before returning

Outputs (1)

NameTypeDescription
video_urlSTRING