BYOKey Google Veo Video
Veo 2 and 3 on your own Google key — the video quality ceiling, in your graph
- image
- output
Veo is the model the video community measures everything else against. No open weights exist, so the only way to use it is to call it - and this node is the bring-your-own-key call, straight to Google's generativelanguage.googleapis.com with your Gemini API key. Veo 3 added native audio generation, which the KB flags as the one capability open-source video still hasn't matched, so if you need sound baked into the clip, this is the node you want.
How it works. The submit-then-poll pattern this pack is built on: POST your job to Google with your key, poll every poll_interval seconds until the operation completes, download the mp4, and wrap it in ComfyUI's native VIDEO type. An optional image input lets you steer with a reference frame (Veo 3's i2v is genuinely good). Inputs are images sent as inline base64 data URIs.
The inputs that matter - and the fiddly matrix:
model- six options spanning two generations:veo-2.0-generate-001, plus the 3.x family (veo-3.1-generate,veo-3.1-fast-generate,veo-3.1-lite,veo-3.0-generate-001,veo-3.0-fast-generate-001). This is where most people get lost, because the valid combinations below depend on it.resolution-720p,1080p, or4k- but 4K only works on the 3.1 models, and not onveo-3.1-liteor anything 3.0. The node raises a hard error if you ask for 4K on a model that can't do it.duration_seconds- 4–8, stepped. Veo 2 allows 5–8; Veo 3 is 4–8 in steps of 2. Check against the tooltip when you switch models.enhance_prompt- on by default and forced on for Veo 3 models. Google rewrites your prompt to "make it better." If you want your exact wording sent, you need a Veo 2 model; with Veo 3 you don't get a choice.negative_prompt- genuinely supported here, which is rarer in video APIs than you'd think. Use it.person_generation-ALLOWorBLOCK, Google's explicit gate for generating people. If you get refusals on a people-heavy prompt, this is the first switch to check.generate_audio- off by default; Veo 3 only. Flip it on and the clip comes with synchronized sound, dialogue, the works.aspect_ratio-16:9or9:16.seed- 0 for random; Veo honors it otherwise.image- optional reference frame for i2v steering.
poll_interval and max_wait are the babysitters; the 10-minute cap is plenty.
Output: one output (VIDEO) socket.
Install. Shared pack, one clone:
cd ComfyUI/custom_nodes
git clone https://github.com/MeteorAndy/comfyui-byokey.git
# restart ComfyUI; it's under api/byokey/video
No model downloads, no extra dependencies beyond ComfyUI's bundled torch, aiohttp, PIL, numpy and av.
Gotchas. The model/resolution/duration/enhance matrix is the trap - read the tooltips when you switch models, and know that 4K demands a 3.1 non-lite model. Jobs are the slowest in the pack; a 4K 3.1 clip can take a while, so keep max_wait generous. And the pack is young with no community footprint - skim the source before feeding it a Google key.
Inputs (15)
| Name | Type | Default | Description |
|---|---|---|---|
| api_key | STRING | Google AI (Gemini API) key | |
| base_url | STRING | https://generativelanguage.googleapis.com | Vendor API host. Default targets Google directly; override for relays. |
| prompt | STRING | Text description of the video | |
| aspect_ratio | COMBO | 16:9 | Aspect ratio of the output video |
| modelopt | COMBO | veo-2.0-generate-001 | Veo model to use for video generation |
| resolutionopt | COMBO | 720p | Output video resolution. Only applied for veo-3.1 models. 4K is not available for veo-3.1-lite or veo-3.0 models. |
| negative_promptopt | STRING | Negative text prompt to guide what to avoid in the video | |
| duration_secondsopt | INT | 54–8 | Duration of the output video in seconds (5-8 for Veo 2, 4-8 step 2 for Veo 3) |
| enhance_promptopt | BOOLEAN | true | Enhance the prompt with AI assistance. Forced True for Veo 3 models. |
| person_generationopt | COMBO | ALLOW | Whether to allow generating people in the video |
| generate_audioopt | BOOLEAN | false | Generate audio for the video. Only supported by Veo 3 models. |
| seedopt | INT | 00–4294967295 | Seed for video generation (0 for random) |
| imageopt | IMAGE | Optional reference image to guide video generation | |
| poll_intervalopt | INT | 92–60 | Seconds between operation status polls |
| max_waitopt | INT | 60060–3600 | Maximum seconds to wait for the video |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| output | VIDEO | — |