SF WaveSpeed VEO 3.1 Fast Text to Video
Veo 3.1 Fast without a Google Cloud project — and yes, it does native audio
- client
- video_url
Veo is the closed frontier model the open-source community keeps measuring itself against, and Google's only avenue for it is API access. This node is that API wearing a ComfyUI hat: type a scene description, pick an aspect ratio and resolution, and Google's Veo 3.1 Fast variant generates the video on WaveSpeed's servers. No Google Cloud project, no gcloud auth, no billing account - just a WaveSpeed API key and credits.
Two things make this specific node worth attention. First, native audio: there's a generate_audio toggle that produces synchronized sound and dialogue alongside the picture. The KB is blunt that this is a genuine capability gap - Veo 3.1's native audio is the one thing local models still bolt on as an extra stage. If your video needs to sound like something, this is one of the few one-shot paths. Second, it's the "Fast" tier, which the source describes as processing up to ~30% faster than the standard Veo 3.1 model - useful when you're iterating on a concept and don't need the absolute top fidelity.
How it works
You fill in the prompt, aspect ratio (16:9 landscape or 9:16 portrait), duration (4, 6, or 8 seconds), resolution (720p or 1080p), and whether to generate audio. The node POSTs to /api/v3/google/veo3.1-fast/text-to-video, then returns a hosted video_url (STRING) once the job completes. Like every video node in this pack, the output is a URL, not a local file - you'll download or save it yourself.
The inputs that matter
- client - required, from the SF WaveSpeed Client node.
- prompt - describe the scene. For Veo, concrete visual language ("slow dolly-in over a misty lake at dawn, wind moving the reeds") beats abstract mood words.
- aspect_ratio / duration / resolution - the shape of your shot. Defaults are 16:9, 8s, 1080p. If you're iterating, drop to 720p and 4s first; the "Fast" tier makes that noticeably cheaper and quicker.
- generate_audio - off by default. Flip it on when you want native synchronized audio; remember it's billed as part of the generation.
- negative_prompt - optional, but Veo respects it. "No warped hands, no flickering" style avoids-lists genuinely reduce retries.
- seed - -1 is random; fix it to reproduce a take.
- enable_sync_mode - default off; the node polls until the video is done either way (up to 30 minutes on the async path).
Install
Standard pack install. ComfyUI Manager → search "SF ComfyUI Nodes" → install → restart. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/Stillfront/comfyui-sf-nodes.git
cd comfyui-sf-nodes
pip install -r requirements.txt
Then an SF WaveSpeed Client node with your key (widget, config.ini [API] api_key, or WAVESPEED_API_KEY env var). No models, no heavy dependencies, no VRAM requirements - the whole pack is API calls.
Gotchas
- Audio + cost: turning on
generate_audiochanges what you pay, and audio-synced generation isn't refundable just because the visual came out wrong. Review the visual take before you commit to audio. - URL output: the node hands you a link. Feed it to a download node or open it - it won't land in your output folder by itself.
- README config drift: the README's
wavespeed_api_keyexample doesn't match theapi_keykey the code reads; copyconfig.ini.tmp. - It's Veo 3.1, not the full Google experience: this routes through WaveSpeed, so you're subject to their model availability and their billing, not Google's directly.
Reach for this node when you want a genuine Veo-quality shot with sound, without standing up a whole Google Cloud setup to get it. It's the closest thing in the pack to "the closed frontier model, but in my node graph."
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| client | WAVESPEED_AI_API_CLIENT | — | |
| prompt | STRING | Text description of the desired video scene | |
| aspect_ratio | COMBO | 16:9 | Video aspect ratio - 16:9 (landscape) or 9:16 (portrait) |
| duration | COMBO | 8 | Video duration in seconds |
| resolution | COMBO | 1080p | Video output resolution |
| generate_audio | BOOLEAN | false | Generate native audio synchronized with the video |
| negative_promptopt | STRING | Specify what to avoid in the generated video | |
| 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 | — |