Google Veo (Vertex AI)
Google's video model that ships its own audio
- first_frame
- last_frame
- frames
- audio
Veo is the one frontier model your local rig genuinely can't match, and this node is the shortest path to it from inside ComfyUI. Google's Veo 3 and 3.1 are the only video models that generate native audio - dialogue, sound effects, synced to the motion - and that's a real capability gap, not a marketing claim. No local model does audio in the same pass, and nobody's pretending Wan is coming for that anytime soon. This node hands your workflow a straight pipe to it, billed per second instead of being tied to Comfy's hosted platform.
What you're actually getting
A text prompt becomes a 4–8 second clip at 24 fps, 720p or 1080p, in 16:9 or 9:16. The model dropdown runs from Veo 2.0 through Veo 3.1's fast and lite variants, so you can trade quality for speed or budget as the mood takes you. There's a generate_audio toggle that decides whether you get sound along with the picture - and that toggle is the whole reason this model is special. You can also feed in a first_frame and/or last_frame image to steer the clip, which turns it from text-to-video into a rough image-to-video tool.
How it works
Under the hood the node calls Vertex AI's video generation API, which returns a long-running operation rather than an instant result. The node polls that operation every five seconds until it's done, then decodes the returned MP4 with PyAV (the av dependency in the pack's requirements.txt) into individual frame tensors. If you enabled audio, it pulls the audio stream out of the same file and hands you an AUDIO tensor. Everything up to that decode happens on Google's side - your GPU never breaks a sweat, but your prompt does leave the machine.
The inputs that matter
The credential trio appears on every node in this pack and behaves the same way: project_id, location, and service_account. Here's the gotcha that catches everyone: service_account wants the contents of your service-account JSON key file pasted into the field, not a path to it. The README says "path to your service account JSON," but the code parses the field directly as JSON - and the code wins. Open the file, copy the whole thing in.
After that, the settings you'll actually touch: duration_seconds (4–8, step 1), resolution, generate_audio, and seed for reproducibility. Veo being Veo, seed gives you more determinism than local video models, not a guarantee.
Outputs
frames- anIMAGElist, one tensor per frame. Wire it into any video preview or save node; VHS'sVideo Combinewill happily take it.audio- anAUDIOtensor, only populated whengenerate_audiois on. Preview it directly or route it into an audio mixing workflow.
Installing
cd ComfyUI/custom_nodes/
git clone https://github.com/Aryan185/ComfyUI-VertexAPI.git
cd ComfyUI-VertexAPI
pip install -r requirements.txt
Then restart ComfyUI. ComfyUI Manager can also find it under ComfyUI-VertexAPI. The requirements bring in google-genai, torchaudio, and av, so expect a non-trivial pip step.
Where people get burned
Cost. Veo is metered per second of output - ballpark $0.15/sec, so an 8-second clip is around $1.20 before you've judged it. Iterating on a shot is where the bill sneaks up; the fast and lite models exist for exactly that. Frame rate. 24 fps is the only option; don't go hunting for 30. Silence. If you expected sound and got none, check generate_audio - and confirm av installed cleanly, since the audio decode path depends on it. And remember the one-way door: this is a cloud call, so it needs billing enabled on the Vertex project and a service account with at least Vertex AI User rights. Sort the auth once across the whole pack and the rest of these nodes stop arguing with you.
Inputs (14)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | a cat reading a book | — |
| project_id | STRING | — | |
| location | COMBO | us-central1 | 40 options: global, us-central1, us-east1, us-east4, us-east5, us-south1, +34 |
| service_account | STRING | — | |
| model | COMBO | veo-3.1-generate-001 | 5 options: veo-3.1-generate-001, veo-3.1-fast-generate-001, veo-3.1-generate-preview, veo-3.1-fast-generate-preview, veo-3.1-lite-generate-preview |
| resolution | COMBO | 720p | 2 options: 720p, 1080p |
| aspect_ratio | COMBO | 16:9 | 2 options: 16:9, 9:16 |
| duration_seconds | INT | 44–8 | — |
| seed | INT | 691–2147483646 | — |
| generate_audio | BOOLEAN | false | — |
| fps | COMBO | 24 | 1 options: 24 |
| negative_promptopt | STRING | — | |
| first_frameopt | IMAGE | — | |
| last_frameopt | IMAGE | — |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| audio | AUDIO | — |