Nodes/comfyui-stillfront/SF WaveSpeed VEO 3.1 Fast Image to Video
ComfyUI Node

SF WaveSpeed VEO 3.1 Fast Image to Video

VEO 3.1 image-to-video with zero local GPU — the fast lane

By razvanmatei-sf·Created 9 months ago·Updated 7 months ago· 0
SF WaveSpeed VEO 3.1 Fast Image to Video
  • client
  • video_url
image
prompt
aspect_ratio16:9
duration8
resolution1080p
generate_audiofalse
negative_prompt
seed-1
enable_sync_modefalse

You want Google's VEO 3.1 turning your still into a living shot, and you don't want to burn twenty minutes of local generation (or a mortgage payment on a 5090) to do it. This node is the shortcut: it hands your image to WaveSpeed's hosted copy of VEO 3.1 Fast and hands you back a video URL. Your GPU doesn't even wake up.

VEO 3.1 is one of the closed frontier models the local community keeps measuring itself against - native audio, 1080p, genuinely cinematic motion. There's no open equivalent that matches it yet. This node doesn't change that; it just puts VEO on the other end of an API call, which is the only way ComfyUI can reach it. The "Fast" in the name means WaveSpeed's faster variant of the model - the pack's own notes say it processes up to 30% faster than standard VEO 3.1, at a modest quality cost. For iterating on a shot, that trade is usually worth it.

How it works

All this pack's WaveSpeed nodes are thin API clients, and this one is no exception. You first drop an SF WaveSpeed Client node into the graph and wire its client output into this node's client input - every node in the pack needs one, and there's no way around it. At run time the node POSTs your image, prompt and settings to /api/v3/google/veo3.1-fast/image-to-video, then polls until the video is done. There's no local model, no checkpoints to download, no VRAM budget. The output is a single video_url string, which you can copy into a browser or wire into any node that consumes a URL.

The inputs that matter

Most of these are exactly what they look like:

  • image - a URL string of the starting frame, connected from an Upload Image node. Note the tooltip's advice: bright, high-contrast images work best.
  • prompt - describe the motion, not the scene. "Slow cinematic zoom out as wind moves through trees" beats "a forest".
  • duration - 4, 6, or 8 seconds. Longer isn't free; it's more expensive per second.
  • resolution and aspect_ratio - 720p/1080p, 16:9 or 9:16.
  • generate_audio - flip this on for VEO's native, synced audio. It's the model's party trick.
  • negative_prompt, seed, enable_sync_mode - seed pins reproducibility (-1 for random); sync mode changes how the node waits, but honestly the node blocks until the clip is ready either way.

Installing it

The easiest path is ComfyUI Manager - search for comfyui-stillfront and install. Manual install is the standard two commands:

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

Then grab a WaveSpeed API key from wavespeed.ai and either copy config.ini.tmp to config.ini and paste it there, set WAVESPEED_API_KEY, or just type it into the SF WaveSpeed Client's api_key field. Don't worry about the README's clone URL pointing at stillfront/comfyui-stillfront - that's stale; the live repo is under razvanmatei-sf.

Where people get burned

The image input is a URL string, not a ComfyUI IMAGE tensor. You can't drag a normal Load Image node's output into it; you need an upload-style node that produces a URL. That trips up everyone once.

Second, the name collision: ComfyUI-WaveSpeed (chengzeyi's repo) is a completely different thing - a local acceleration pack that makes diffusion faster on your own GPU. It has nothing to do with this API client. If a search result starts talking about quantization and SageAttention, that's the wrong pack.

Finally, this is pay-per-generation and it's an external service: an invalid or missing key throws Unauthorized, and a video can take a couple of minutes even in fast mode. Iterate on the prompt at 720p, then spend on 1080p when you're happy.

CategoryStillfront/WaveSpeed

Inputs (10)

NameTypeDefaultDescription
clientWAVESPEED_AI_API_CLIENT
imageSTRINGSource image URL for video generation (connect from Upload Image node). Recommended: bright, high-contrast images
promptSTRINGDescribe desired motion and video characteristics (e.g., 'Slow cinematic zoom out as wind moves through trees')
aspect_ratioCOMBO16:9Video aspect ratio - 16:9 (landscape) or 9:16 (portrait)
durationCOMBO8Video duration in seconds
resolutionCOMBO1080pVideo output resolution
generate_audioBOOLEANfalseGenerate automatic audio synchronized with the video
negative_promptoptSTRINGSpecify unwanted elements or characteristics in the generated video
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