FL Vertex Veo3
Google's Veo 3 video model inside a ComfyUI graph
- reference_image
- frames
- video_path
- API_Response
FL_Veo3VideoGen is not a local model wrapper - it's a full API client for Google's Vertex AI Veo 3.0 (and 2.0) video generation, sitting inside a ComfyUI node. Every run is a real, billed call to Google Cloud. That's worth saying up front because it changes how you should think about this node compared to almost everything else in the pack: there's no download, no VRAM budget, no local inference cost - the cost lives entirely on Google's side, per second of video generated.
Why bother routing it through ComfyUI at all instead of just using Google's own tools? Because Veo 3 genuinely does something nothing open-source touches yet: native audio generation synced to the video - sound effects and dialogue that come out of the model alongside the picture, not bolted on afterward. Every open video model, WAN included, has no native audio at all. If your workflow needs that specific capability and needs it inside a larger ComfyUI pipeline - compositing, further processing, chaining with other generation steps - this node is your on-ramp.
Setup is the real work here, and it's on Google's side. service_account_json isn't an API key you paste in - it's a full Google Cloud service account credential, which means you need a GCP project with the Vertex AI API and Veo access enabled, billing turned on, and a service account with the right IAM permissions. This is meaningfully heavier than the simpler API-key flow you'd get from, say, OpenAI, so budget real setup time before your first successful run, separate from getting the ComfyUI node itself installed.
The generation parameters are Google's own, exposed directly: model picks between veo-3.0-generate-001, the faster veo-3.0-fast-generate-001, or the older veo-2.0-generate-001; aspect_ratio is 16:9 or 9:16, resolution is 720p or 1080p - no arbitrary sizes, since this isn't local inference and you're bound by what the API actually offers. prompt and optional negative_prompt are your text control, seed gives you reproducibility, and optional reference_image lets you condition the generation on a starting frame for image-to-video instead of pure text-to-video. enable_person_generation is Google's own content-safety toggle for whether people are allowed to appear in the output.
Because it's polling a remote job rather than running synchronously, three timing controls matter: max_retries (default 3) for transient failures, polling_interval (default 10s) for how often it checks in, and max_wait_time (default 360s / 6 minutes) before it gives up. Outputs are frames (the generated video decoded to an image batch), video_path (where the downloaded file landed), and API_Response (the raw response - genuinely useful for debugging, since it's your window into what Google's API actually said back).
Installing the node itself is the standard Fill-Nodes routine - search "Fill-Nodes" in ComfyUI Manager, or clone it manually and restart:
cd ComfyUI/custom_nodes
git clone https://github.com/filliptm/ComfyUI_Fill-Nodes
Where people get burned. Auth failures almost always trace back to Google Cloud IAM, not ComfyUI - a service account missing Vertex AI permissions, or the Veo API not actually enabled on the project yet. If you're hitting timeouts, max_wait_time's default of 6 minutes is a reasonable starting point but real Veo 3 jobs, especially at 1080p or with more complex prompts, can legitimately run longer - raise it before assuming something's broken. And a general point worth carrying into any node in this pack that asks for real credentials: Fill-Nodes wraps a genuinely large number of paid third-party services across its AI, GPT, and Google Drive nodes, and a scare thread once went around when a user was surprised a different node in this same pack (one of the Google Drive integrations) did exactly what its own documentation said it would. It wasn't malware - it was a user not reading what a feature-dense node actually does before wiring in credentials. Same logic applies here: know what FL_Veo3VideoGen is going to bill before you queue it.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| service_account_json | STRING | — | |
| model | COMBO | veo-3.0-generate-001 | 3 options: veo-3.0-generate-001, veo-3.0-fast-generate-001, veo-2.0-generate-001 |
| aspect_ratio | COMBO | 16:9 | 2 options: 16:9, 9:16 |
| resolution | COMBO | 720p | 2 options: 720p, 1080p |
| max_retries | INT | 31–10 | — |
| polling_interval | INT | 105–60 | — |
| max_wait_time | INT | 36060–600 | — |
| negative_promptopt | STRING | — | |
| seedopt | INT | 00–2147483647 | — |
| reference_imageopt | IMAGE | — | |
| enable_person_generationopt | BOOLEAN | true | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| frames | IMAGE | — |
| video_path | STRING | — |
| API_Response | STRING | — |