Veo 3.1 (Replicate)
Veo 3.1 — the closed video bar, and the native-audio thing nothing open matches
- image
- last_frame
- reference_images
- video_path
Veo 3.1 is Google's closed video model and the closest thing this ecosystem has to a quality benchmark you can't download. The community says the open models caught the still-image gap, but video is a different story - and Veo's one genuinely unmatched capability is native audio: it generates synchronized sound, dialogue, and music with the video, not bolted on afterward. As of mid-2026 no open model quite does that. This node drops Veo into your ComfyUI graph for the price of a per-call API fee.
Set the expectations the same way you would for any closed video API: the prompt and any reference images leave your machine, Google's content policy decides what's allowed, and the output is a file path - not a tensor you can keep editing in-graph.
How it works
Standard Replicate Select engine around google/veo-3.1. The node waits for the worker, downloads the MP4, saves it to output/video/, and returns the video_path STRING. It's an output node, so the clip shows up in the UI history. generate_audio defaults to true - which is the whole reason you'd pick Veo over a silent video model.
The inputs that matter
- prompt (required) - describe the video. Veo reads detailed scene descriptions well.
- duration - an enum, not a slider:
4,6, or8seconds. No 5s option; that's a Veo quirk you'll just live with. - aspect_ratio -
16:9or9:16only. - resolution -
720por1080p(default). 1080p is the better deal for the money if your prompt deserves it. - image - a first frame to start from. Ideal inputs are 1280x720 (or 720x1280) matching your aspect ratio.
- last_frame - an ending image; combined with an input image this creates a transition between the two.
- reference_images - 1–3 images for subject-consistent generation (reference-to-video, R2V). Two constraints worth remembering: reference images only work with 16:9 and 8 seconds, and when you use them, last_frame is ignored.
- negative_prompt - what to exclude.
- generate_audio - on by default. This is the headline feature; leave it on.
- seed - set for reproducibility, omit for random.
Output: video_path, a STRING.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Pharma-Lobby/ComfyUI-Replicate-Select
Or ComfyUI Manager → Install Custom Nodes → "Replicate Select", restart. Dependency: replicate>=1.0.7. Auth as an environment variable:
export REPLICATE_API_TOKEN=r8_...
Where people get burned
- R2V constraints are hard requirements. Reference images + 9:16, or reference images + 6 seconds, and the config is just wrong. Stick to 16:9 @ 8s when you want subject consistency.
- last_frame gets silently dropped with references. Not an error - the model just ignores it. If you set both, you've paid for a feature you're not getting.
- Video is where sessions get expensive fast. A few takes at 1080p, with audio, add up quicker than image generation ever will. Draft with 720p and shorter durations.
- The path-not-tensor thing.
video_pathis a STRING for downstream use; the actual clip is the file in your output folder. If you want frames in the graph, load the file with a video node yourself.
Inputs (10)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt for video generation | |
| aspect_ratioopt | COMBO | 16:9 | Video aspect ratio |
| durationopt | COMBO | 8 | Video duration in seconds |
| imageopt | IMAGE | Input image to start generating from. Ideal images are 16:9 or 9:16 and 1280x720 or 720x1280, depending on the aspect ratio you choose. | |
| last_frameopt | IMAGE | Ending image for interpolation. When provided with an input image, creates a transition between the two images. | |
| reference_imagesopt | IMAGE | 1 to 3 reference images for subject-consistent generation (reference-to-video, or R2V). Reference images only work with 16:9 aspect ratio and 8-second duration. Last frame is ignored if reference imag | |
| negative_promptopt | STRING | Description of what to exclude from the generated video | |
| resolutionopt | COMBO | 1080p | Resolution of the generated video |
| generate_audioopt | BOOLEAN | true | Generate audio with the video |
| seedopt | INT | 0-2147483648–2147483647 | Random seed. Omit for random generations |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| video_path | STRING | — |