Nodes/ComfyUI-VertexAPI/Google Veo (Vertex AI)
ComfyUI Node

Google Veo (Vertex AI)

Google's video model that ships its own audio

By Aryan185·Created 9 months ago·Updated about a month ago· 4
Google Veo (Vertex AI)
  • first_frame
  • last_frame
  • frames
  • audio
prompta cat reading a book
project_id
locationus-central1
service_account
modelveo-3.1-generate-001
resolution720p
aspect_ratio16:9
duration_seconds4
seed69
generate_audiofalse
fps24
negative_prompt

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 - an IMAGE list, one tensor per frame. Wire it into any video preview or save node; VHS's Video Combine will happily take it.
  • audio - an AUDIO tensor, only populated when generate_audio is 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.

Categoryvideo/generation

Inputs (14)

NameTypeDefaultDescription
promptSTRINGa cat reading a book
project_idSTRING
locationCOMBOus-central140 options: global, us-central1, us-east1, us-east4, us-east5, us-south1, +34
service_accountSTRING
modelCOMBOveo-3.1-generate-0015 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
resolutionCOMBO720p2 options: 720p, 1080p
aspect_ratioCOMBO16:92 options: 16:9, 9:16
duration_secondsINT44–8
seedINT691–2147483646
generate_audioBOOLEANfalse
fpsCOMBO241 options: 24
negative_promptoptSTRING
first_frameoptIMAGE
last_frameoptIMAGE

Outputs (2)

NameTypeDescription
framesIMAGE
audioAUDIO