Gemini Video Generation (Veo)
8 seconds of AI video with sound, the way only Google ships it
- source_image
- video_file_path
- video_url
This is the node that justifies the whole pack for a lot of people. Veo is Google's video generation line, and its defining trick is one open weights still haven't matched: native audio. Veo 3 doesn't generate a silent clip and hope you add sound later - it produces synchronized dialogue, sound effects, and ambience in the same pass. The KB's closed-source-models.md calls that native audio-with-video "a genuine capability gap," and it's why people put up with an API for this one job. The open alternatives (Wan, LTX) are real, but none gives you Veo's audio-synced result locally.
In a ComfyUI workflow it slots in as the generation engine: prompt in, or source image in for image-to-video, and the node polls the long-running job until the video lands, saving it to your ComfyUI output folder and handing back the file path and URL.
How it works
Veo is a long-running operation, not a quick call. The node fires off generate_videos (which returns an operation), then polls every 10 seconds until it's done or until timeout_seconds elapses - the default 600 seconds (10 minutes) is a real budget, not theater. When it completes, it downloads the video to ComfyUI's output directory as an MP4. The timeout is a genuine input because video jobs take minutes, not seconds.
Model-wise you get six Veo options: the 3.1 previews (standard, fast, lite), 3.0 standard and fast, and 2.0. Veo 3.x gives you the native audio; Veo 2 is the older, silent generation - worth knowing before you're surprised by a mute clip.
Inputs and outputs that matter
prompt- the video description. This model rewards cinematic, shot-aware language: camera movement, lighting, action.model- defaultveo-3.0-fast-generate-001. The fast variants are your iteration loop; 3.1 previews for the newest quality.source_image- optional start frame for image-to-video. Wire a Nano Banana frame in here and you've got the community-standard "closed frame, generated motion" workflow.duration_seconds- 5 to 8; the tooltip says it plainly: Veo 3 supports 8 seconds.aspect_ratio- 16:9 or 9:16.number_of_videos- 1 to 4 per call. That's a real cost multiplier - see below.timeout_seconds- how long to poll before giving up, 60 to 1800.
Outputs: video_file_path (the saved MP4 in your output dir) and video_url (the hosted URI). Wire the path into a video loader or use it however you'd use a file path.
How to install it
Pack-level:
cd ComfyUI/custom_nodes
git clone https://github.com/IxMxAMAR/ComfyUI-API-Toolkit
cd ComfyUI-API-Toolkit
pip install -r requirements.txt
or "API Toolkit" from ComfyUI Manager. Needs google-genai>=0.8.0 and a key.
Common issues
Three things will bite you. Cost is the big one - video is the most expensive generation in this pack, and number_of_videos: 4 is four video bills in one Queue. Iterate at 1. Veo 2 is silent - if you expected audio and got a quiet clip, you picked Veo 2, which has no native sound. Previews rotate - a 404 on the model means Google swapped the preview ID; check List Models and override with custom_model.
And the honest framing from the KB: this is a closed, filtered model you pay per second of output, and the pack re-runs it every queue. If you want reproducible cheap video, open models like Wan on your own card remain the sane default - Veo is for when the native audio or the quality ceiling is worth the bill.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | — | |
| model | COMBO | veo-3.0-fast-generate-001 | 6 options: veo-3.1-generate-preview, veo-3.1-fast-generate-preview, veo-3.1-lite-generate-preview, veo-3.0-generate-001, veo-3.0-fast-generate-001, veo-2.0-generate-001 |
| prompt | STRING | — | |
| custom_modelopt | STRING | — | |
| source_imageopt | IMAGE | Optional start frame image. | |
| aspect_ratioopt | COMBO | 16:9 | 2 options: 16:9, 9:16 |
| number_of_videosopt | INT | 11–4 | — |
| negative_promptopt | STRING | — | |
| seedopt | INT | 00–2147483647 | — |
| duration_secondsopt | INT | 85–8 | Veo 3 supports 8 seconds. |
| timeout_secondsopt | INT | 60060–1800 | Max time to wait for video generation. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video_file_path | STRING | — |
| video_url | STRING | — |