DIGIT Veo Video
Veo 3.1 in ComfyUI — with the lossless trick nobody else offers
- first_frame
- last_frame
- reference1
- reference2
- reference3
- video
- video_paths
- status
Veo is Google's closed video model - you cannot download it, full stop, so getting it inside a ComfyUI graph means an API call. DIGIT Veo Video is the pack's flagship for that: it talks to Vertex AI directly with your GCP credentials, no proxy, no third-party reseller, billed to your own Google Cloud account at Google's pricing.
The headline feature is the thing most people don't know exists: lossless output. Every Veo render you get from AI Studio, the console, or any wrapper service is the compressed "optimized" MP4. The only way to get the full-quality file is through the API with a GCS bucket URI - and this node is one of the few tools anywhere that wires that up. Set compression_quality to lossless, give it an output_gcs_uri like gs://my-bucket/output/, and the uncompressed file lands in your bucket. No bucket or URI, and it falls back to optimized with a warning.
How it works
Like the other DIGIT video nodes, mode is auto-detected from what you connect:
- Nothing → text-to-video
first_frameconnected → image-to-video (animates from your frame)first_frame+last_frame→ interpolation between the tworeference1–reference3connected → reference-based, for keeping a style or asset consistent
Models: veo-3.1-generate-001 (default), the 3.1 Fast variant, Veo 3.0 / 3.0 Fast, and Veo 2.0. The rest of the important knobs: aspect_ratio (16:9 or 9:16), resolution (720p or 1080p), duration_seconds (4/6/8), generate_audio (Veo makes synced audio, on by default), sample_count (1–4 clips per run), and enhance_prompt (let Veo polish your prompt - leave it on until you know better). person_generation controls whether adult people are allowed in output, and negative_prompt exists if you need to steer away from something.
The generation is async: the node submits the job, polls every 20 seconds until it's done, then downloads and returns. On the cloud side there's retry with exponential backoff for rate limits, which is the kind of thing you only appreciate after a 429.
Outputs: video (the first clip as a VIDEO tensor), video_paths (all clips - feed this to DIGIT Video Saver or Uber Saver to batch-save), and status (model, mode, duration, resolution, file paths).
Setup
This one needs the full GCP rig, not just a key:
gcloud auth login --enable-gdrive-access
gcloud auth application-default login
gcloud config set project YOUR_PROJECT_ID
gcloud services enable aiplatform.googleapis.com
gcp_project_id and gcp_region auto-fill on GCP instances, or you set them on the node. For lossless, create a bucket:
gcloud storage buckets create gs://your-bucket-name --location=us-central1
Install the pack via ComfyUI Manager (search comfyui-digit) or clone-and-pip from the repo.
Gotchas
gcp_region matters more than the README makes it sound - Veo defaults to us-central1, and if your bucket is elsewhere, cross-region transfers get slower and costlier. Lossless mode is only lossless if the URI is actually reachable by your credentials. And remember the standing rule with any API video node: prompts and frames leave your machine, cost adds up per second rendered, and the model's content filter is not something you can patch locally (the external-api-nodes essay in the modidex KB covers the full decision tree). For Veo, that's simply the price of the only door that exists.
Inputs (20)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| model | COMBO | veo-3.1-generate-001 | 5 options: veo-3.1-generate-001, veo-3.1-fast-generate-001, 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 |
| duration_seconds | INT | 84–8 | — |
| generate_audio | BOOLEAN | true | — |
| seed | INT | 00–2147483647 | — |
| gcp_project_id | STRING | GCP project ID. Auto-detected from DIGIT_GCP_PROJECT env var or GCP metadata. | |
| gcp_region | STRING | GCP region. Auto-detected from DIGIT_GCP_REGION env var or GCP metadata. Defaults to 'us-central1' for Veo. | |
| first_frameopt | IMAGE | — | |
| last_frameopt | IMAGE | — | |
| reference1opt | IMAGE | — | |
| reference2opt | IMAGE | — | |
| reference3opt | IMAGE | — | |
| negative_promptopt | STRING | — | |
| person_generationopt | COMBO | allow_adult | 2 options: allow_adult, dont_allow |
| sample_countopt | INT | 11–4 | — |
| compression_qualityopt | COMBO | lossless | 2 options: lossless, optimized |
| output_gcs_uriopt | STRING | GCS bucket URI for lossless output. Auto-detected from DIGIT_GCS_URI env var, e.g. gs://my-bucket/output/ | |
| enhance_promptopt | BOOLEAN | true | — |
Outputs (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_paths | VIDEO_PATHS | — |
| status | STRING | — |