Generate Veo3.1 Video · Veo 3
The quality tier, and the mode default that doesn't work
- image_urls
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
Veo 3 is the model that made "closed video" a real category rather than a benchmark curiosity, because it generates audio natively - dialogue and sound effects in the same pass as the picture. That's still the reason people pay for it, and it's the reason a local Wan render of the same shot feels incomplete. This node is the top tier of the three Generate Veo3.1 nodes in the pack: veo3, the quality model, as opposed to veo3_fast and veo3_lite.
Here's the thing to know before you touch it, and it's the one that generates the most confused forum posts: the default generation_type is REFERENCE_2_VIDEO, and reference mode is only supported on the fast and lite tiers. On this node, leaving the default means you're asking for something the quality model doesn't do. Set it explicitly - TEXT_2_VIDEO for pure prompt work, FIRST_AND_LAST_FRAMES_2_VIDEO for image-driven shots.
How the request works
The node submits the documented Veo3.1 request with model: "veo3" baked in, polls the KIE task until it succeeds, downloads the video and returns a ComfyUI VIDEO. Your prompt goes through as-is unless enable_translation rewrites it to English first - which is on by default and genuinely useful if you're prompting in a non-English language, mildly annoying if you aren't and want your exact phrasing preserved.
Resolution has a wrinkle the docs call out: for 1080p and 4k the video URL lives in resultJson.data.result_urls, while the 720p version sits in data.origin_urls. The pack keeps every URL in all_urls_json and picks the preferred one for the decoded video output, so you usually get what you asked for - but if a render comes back at the wrong size, that's where to look.
The inputs
- prompt - required. Detailed and specific: subject, action, camera, style. For image-to-video, describe how the still should come alive rather than re-describing it.
- image_urls - optional
IMAGEsocket. One image for a first-frame start, two for a first-to-last-frame transition (that's theFIRST_AND_LAST_FRAMES_2_VIDEOmode). - generation_type -
REFERENCE_2_VIDEO/TEXT_2_VIDEO/FIRST_AND_LAST_FRAMES_2_VIDEO. On this node, avoid the first one. If unset, the provider infers the mode from whether images are present, which is subtly different from choosing. - resolution -
720p(default),1080p,4k. The cost lever. 4K on a quality-tier model is the most expensive button in this whole pack. - duration -
4,6or8seconds. Note the constraint: reference mode only allows 8 seconds. On this node that's moot, since reference mode isn't supported anyway. - aspect_ratio -
16:9,9:16, orAuto.Autocentre-crops your uploaded image toward whichever of the two fits better. - watermark - defaults to the literal string
MyBrand. Clear it, or your clip ships with that text baked in. - enable_translation - on. Turns your prompt into English before generating.
- enable_fallback - deprecated. The docs say remove it from requests; leave it off.
- timeout_seconds, callback_url - 1200s default; leave the callback empty.
Outputs: video, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left. Keep the task_id: the Extend Veo3.1 nodes take it to continue the same shot.
Installing
cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
cd ComfyUI-KIE-Nodes-Next && pip install -r requirements.txt
# restart ComfyUI
Manager search: "KIE.ai Nodes Next". Only requests, Pillow, numpy, PyYAML get installed - nothing video-capable runs locally, which is the point. Key setup is one paste at Settings → KIE.ai Nodes Next → Connection, validated before saving and never embedded in the workflow.
One ComfyUI-version gotcha: the returned VIDEO comes from ComfyUI's newer comfy_api.latest video interface. On an older build you'll get an explicit "update ComfyUI" error rather than a broken file.
Cost, and when to not use this node
The quality tier is where experiment budgets die. Draft the shot at fast or lite, and only re-render at quality once the motion and prompt are right - that's the whole reason three tiers exist. Also remember every execution is a paid submission and the node only runs when its output is consumed downstream. And per the KB's long-standing complaint: for anything a hosted filter would refuse, no node in this pack can help you. There are no weights to edit.
Inputs (11)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A dog playing in a park | Text prompt describing the desired video content. Required for all generation modes. - Should be detailed and specific in describing video content - Can include actions, scenes, style and other information - For image-to-video, describe how you want the image to come alive |
| image_urlsopt | IMAGE | — | |
| watermarkopt | STRING | MyBrand | Watermark text. - Optional parameter - If provided, a watermark will be added to the generated video |
| aspect_ratioopt | COMBO | 16:9 | Video aspect ratio. Specifies the dimension ratio of the generated video. Available options: - 16:9: Landscape video format. - 9:16: Portrait video format, suitable for mobile short videos - Auto: In auto mode, the video will be automatically center-cropped based on whether your uploaded image is closer to 16:9 or 9:16. Default value is 16:9. |
| enable_translationopt | BOOLEAN | true | Optional. When true, the prompt is translated to English before generation. |
| generation_typeopt | COMBO | REFERENCE_2_VIDEO | Video generation mode (optional). Specifies different video generation approaches: - **TEXT_2_VIDEO**: Text-to-video - Generate videos using only text prompts - **FIRST_AND_LAST_FRAMES_2_VIDEO**: First and last frames to video - Flexible image-to-video generation mode - 1 image: Generate video based on the provided image - 2 images: First image as first frame, second image as last frame, generating transition video - **REFERENCE_2_VIDEO**: Reference-to-video - Generate videos based on reference images, requires 1-3 images in imageUrls (minimum 1, maximum 3) **Important Notes**: - REFERENCE_2_VIDEO mode currently supports the veo3_fast and veo3_lite models. - If not specified, the system will automatically determine the generation mode based on whether imageUrls are provided |
| enable_fallbackopt | BOOLEAN | false | Deprecated. Remove it from requests. |
| resolutionopt | COMBO | 720p | Output resolution: 720p (default), 1080p or 4k. For 1080p and 4k, the video URL is in resultJson.data.result_urls (the 720p version is in data.origin_urls). Controls the pixel dimensions of the generated video. Higher resolution results in greater clarity and detail, while lower resolution allows for faster generation. |
| durationopt | COMBO | 8 | The duration of the generated video, in seconds. Optional values are 4, 6, 8. **Important Note**: - The REFERENCE_2_VIDEO mode currently only supports a duration of 8 seconds. |
| timeout_secondsopt | INT | 120030–7200 | — |
| callback_urlopt | STRING | Optional KIE callback URL. Leave empty for normal ComfyUI use. |
Outputs (7)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| url | STRING | — |
| all_urls_json | STRING | — |
| task_id | STRING | — |
| raw_json | STRING | — |
| credits_consumed | FLOAT | — |
| credits_left | FLOAT | — |