Veo Ingredients to Video (Ace Data Cloud)
Three references, and a model you can't change
- status
- task_id
- video_url
- trace_id
Keeping the same character, outfit or object across generations is the most-asked unsolved problem in this whole hobby, and the industry's answer quietly changed: instead of encoding a character and injecting it, you now hand the model references and let it edit. "Ingredients to Video" is Google's version of that idea for video - you feed it up to three images and it blends them into one shot.
It's the most opinionated node in the pack, and the opinion is baked in: one model, no aspect ratio, no substitutions.
How it works
Under the hood it POSTs action: ingredients2video to /veo/videos, with async: true, and returns a task ID like every other submission node here. Your reference images are fetched from their public HTTPS URLs by Ace's servers and passed to Veo as conditioning - think "these are the things in the scene," not "this is the first frame." The result is a new shot that contains those elements, which is a different job from what Image to Video does with its first and last frame.
The client validates the URLs the same way everywhere in this pack: https only, no credentials in the URL, no localhost, no private IPs, up to three images here (Image to Video caps at two), duplicates collapsed. One per line, or a JSON array.
Why it's the locked node
model has exactly one choice: veo31-fast-ingredients. You cannot switch it, and the client will refuse the other four model names with a specific error if you try to wire something else in. That's not the author being lazy - this capability only exists on that model ID, and the node is honest about it.
Same story for the missing inputs. There's no aspect_ratio widget here at all (that's Image to Video's), and no camera controls. You get:
- prompt - default
"Blend these references into one cinematic scene."Say what the scene is and how the references relate; that's the part the model needs from you. - image_urls - 1 to 3 public HTTPS URLs. Order is the order you put them in, so be deliberate about which is the subject and which are supporting elements.
- resolution -
default,1080p,4k,gif.defaultis the low tier. This model is already aveo31variant, so4kis accepted here - one of the few places it is. - translation - boolean, default off, passed straight through to the API.
Outputs: status, task_id, video_url, trace_id. A fresh submission returns pending with an empty video_url; take the task_id to Veo Retrieve Task, then feed the resulting video_url to Veo Load Video.
Install and key
ComfyUI Manager → Custom Nodes → search Veo → publisher acedatacloud, package Veo by Ace Data Cloud → install, restart. Or, manually:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/VeoComfyUI.git
cd VeoComfyUI && python -m pip install -r requirements.txt
The whole dependency tree is requests>=2.31,<3. Nothing downloads, nothing needs a GPU - the work happens on someone else's hardware, which is also why your reference images have to leave your machine. Set the key in the ComfyUI process environment and restart:
export ACEDATACLOUD_API_KEY='paste-your-key-here'
python main.py
Where people get burned
The reference URLs are the real friction, same as every other image-input node in this pack. Local files, ComfyUI output paths, data: blobs and http:// links are all rejected. Get yourself one HTTPS-hosting habit - a public bucket or CDN - before you start, because you'll retype this constantly.
Then there's the follow-up trap: this model doesn't play with the rest of the pack evenly. The upscale and 1080p nodes accept only the standard model list, so a video made here has to go through Veo Upsample rather than the get-1080p action, and Extend won't touch it at all. Plan the resolution up front instead of hoping to fix it after.
And the usual: this is a paid, one-shot submission. It's an output node, so it runs on Queue Prompt whether or not anything downstream is listening - mute it while you're setting up references. Retrieve with the same task ID rather than resubmitting, and if a submission errors or times out, check your Ace request history before spending again.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Blend these references into one cinematic scene. | — |
| image_urls | STRING | — | |
| model | COMBO | 1 options: veo31-fast-ingredients | |
| resolution | COMBO | default | 4 options: default, 1080p, 4k, gif |
| translation | BOOLEAN | false | — |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |
| task_id | STRING | — |
| video_url | STRING | — |
| trace_id | STRING | — |