Generate Veo3.1 Video · Veo 3 fast
The tier you should be drafting on
- image_urls
- video
- url
- all_urls_json
- task_id
- raw_json
- credits_consumed
- credits_left
If you're going to burn credits learning how Veo behaves, do it here. veo3_fast is the middle tier of the three Generate Veo3.1 nodes, and it's the one that supports every generation mode including reference-to-video - which makes it both the most flexible and the best value in the pack. Quality tier is for the final render. Lite is for previz. This is the one you actually work in.
The mode support is the practical difference people miss. Veo's reference mode - one to three images that the model treats as subject references rather than literal first frames - is only available on fast and lite, not on the quality model. If your workflow is "hold this character across shots", fast is where that lives.
The mechanism
The node posts the documented Veo3.1 generation request with model: "veo3_fast" fixed, gets a task ID back, polls KIE's task record (2.5s to 15s backoff) until it reports success, downloads the video, and returns it as a native ComfyUI VIDEO. Any images you connect are uploaded to KIE first and their URLs placed in the request. It also returns the task_id as an output, which is what the Extend Veo3.1 nodes want if the shot needs more than eight seconds.
One implementation detail with real consequences: for 1080p and 4K renders the final URL lands in a different field than the 720p one, and the pack sweeps the whole response for every URL, preferring the ones that look like video files. In practice you get the high-res file. If something ever looks soft, check all_urls_json before blaming the model.
Inputs
- prompt - required. Write for motion: who does what, how the camera moves, what the light does. Detailed beats vague, but don't write a novel.
- image_urls - optional. In
FIRST_AND_LAST_FRAMES_2_VIDEOmode: one image animates from it, two generate the transition between them. InREFERENCE_2_VIDEOmode: one to three reference images. - generation_type -
REFERENCE_2_VIDEOis the default and is supported here, unlike on the quality node. Switch toTEXT_2_VIDEOwhen you have no images, or the frame modes when you do. - resolution -
720pdefault,1080p,4k. Change this at render time, not at draft time. - duration -
4,6,8. Remember reference mode only supports 8 seconds; asking for 4 with references is a rejected request, not a short clip. - aspect_ratio -
16:9,9:16,Auto. - watermark - ships as
MyBrand. Clear it unless you want that text on the video. - enable_translation - on by default; converts the prompt to English first. Turn it off if your prompt is already English and you care about exact wording.
- enable_fallback - deprecated, leave it alone.
- timeout_seconds, callback_url - 1200s; empty callback.
Outputs: video, url, all_urls_json, task_id, raw_json, credits_consumed, credits_left.
Install
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". Dependencies are requests, Pillow, numpy, PyYAML, and there is no local model of any kind - which is why a 4GB laptop can run this node. Paste your KIE key once at Settings → KIE.ai Nodes Next → Connection; the pack validates it against KIE before saving and never writes the full key into the workflow.
Practical warnings
Wire the video output into KIE • Preview Video, KIE • Save Video, or any node that takes VIDEO. This node isn't an output node, so an unwired result means it simply doesn't execute - no error, no charge, no clip. Beginners lose an hour to that.
An old ComfyUI build will refuse to make a VIDEO object at all and tell you to update, because the pack relies on ComfyUI's newer video interface. Update rather than trying to patch around it.
And the cost model, again, because it's the part that bites: drafting at fast is cheap relative to quality, not cheap. Three failed takes at 1080p is a real amount of money. Draft at 720p, lock the prompt, then re-render the keeper.
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 | — |