Veo 3.1 Fast
Veo 3.1 Fast drops Google's best video into a ComfyUI node — audio included
- referenceImages
- frameImages
- video
If you've ever watched a Wan or LTX clip and thought "great, now where's the sound," this is the node that answers it. Veo 3.1 is Google's video model - the "Fast" cut being the quicker, cheaper variant - and the thing that still separates it from open-source video is native audio: it generates synchronized sound effects, ambient noise, and even dialogue matched to the visuals. The KB's closed-source essay calls this "a genuine capability gap," and it's the reason people keep paying API money for video when Wan runs free on their own GPUs.
The node itself is a thin wrapper: the Runware/ComfyUI-Runware pack turns the whole Runware catalog into nodes, and Veo 3.1 Fast is one of them. No local VRAM, no model download, no ffmpeg pipeline to babysit. You prompt, you queue, and a native VIDEO output comes back.
How it works
The node builds a video-generation request and ships it to Runware's cloud via the Python SDK over REST. Output comes back as ComfyUI's VIDEO type when the runtime supports it, or degrades to a saved file path otherwise - the source code probes for comfy_api's VideoFromFile at import and silently falls back. Either way, wire the output into a video preview or save node. Cost per clip shows on the node title bar, which matters here: video is where API pricing actually bites.
Inputs that matter
- positivePrompt - required. Natural-language scene description, the way you'd brief a director.
- video (string UUID/URL) - the extension input. Give it a source clip and Veo extends it, which is one of the model's best tricks and something local video models are still catching up on.
- frameImages / referenceImages (
IMAGE) - image-to-video and character/style reference. This is how you get consistent subjects. - duration - 4, 6, 7, or 8 seconds. Frames are duration × the model's fps, so don't expect to finesse it finer than these choices.
- size - 720p up to 4K, portrait or landscape. 4K is where the bill grows.
- providerSettings.google.generateAudio - on by default. This is the killer feature, but flip it off when you're only doing plate shots and want the bill down.
- seed, numberResults (max 4), outputFormat (MP4/WEBM/MOV), and the usual output quality.
Installing
Same as every node in this pack - install it once, get them all:
cd ComfyUI/custom_nodes
git clone https://github.com/Runware/ComfyUI-Runware
pip install -r ComfyUI-Runware/requirements.txt
Restart ComfyUI. Or use ComfyUI Manager and search Runware. You need a Runware API key (Settings panel, RUNWARE_API_KEY, or runware auth login), and the dashboard's $20 minimum top-up is the main friction point.
Common issues
Realistic expectations first: the open-source-vs-Veo gap in the KB's domain overview notes the community measures it every generation, and Wan is closing in - but nobody open has the native audio. Don't set safety.mode expecting it to relax anything; the mode switch is about check speed, and Google's content pipeline is its own thing. And when a clip "comes back as a path," you didn't break anything - that's the graceful degradation when ComfyUI lacks the native VIDEO type. Check your ComfyUI version, not the node.
Inputs (17)
| Name | Type | Default | Description |
|---|---|---|---|
| positivePrompt | STRING | Text prompt describing elements to include in the generated output. | |
| referenceImagesopt | IMAGE | — | |
| frameImagesopt | IMAGE | — | |
| videoopt | STRING | Video input (UUID or URL). Source video for extension. | |
| sizeopt | COMBO | 720p (16:9) | Output size. Only one of resolution or dimensions is sent. |
| seedopt | INT | 00–4294967295 | Random seed for reproducible generation. When not provided, a random seed is generated in the unsigned 32-bit range. |
| durationopt | COMBO | 4 | Length of the generated video in seconds. The total number of frames produced is determined by duration multiplied by the model's frame rate (fps). |
| numberResultsopt | INT | 11–4 | Number of results to generate. Each result uses a different seed, producing variations of the same parameters. |
| providerSettings.google.generateAudioopt | BOOLEAN | true | Generate video with synchronized audio including ambient sounds and music. |
| providerSettings.google.resizeModeopt | COMBO | (default) | Resize mode for the input media. |
| safetyopt | BOOLEAN | false | Enable to set safety. Off uses the model's default. |
| safety.checkContentopt | BOOLEAN | false | Enable or disable content safety checking. |
| safety.modeopt | COMBO | fast | Safety checking mode for video generation. |
| ttlopt | BOOLEAN | false | Enable to set ttl. Off uses the model's default. |
| ttl_valueopt | INT | 60 | Time-to-live (TTL) in seconds for generated content. Only applies when `outputType` is `URL`. |
| outputFormatopt | COMBO | MP4 | File format for the generated video. |
| outputQualityopt | INT | 9520–99 | Compression quality of the output. Higher values preserve quality but increase file size. |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |