Veo Text to Video (Ace Data Cloud)
A paid cloud call wearing a sampler's clothes
- status
- task_id
- video_url
- trace_id
There are no Veo weights to download. None, ever - it's a closed Google model, which is the whole reason a node like this exists. So "Veo Text to Video (Ace Data Cloud)" is not a generator. It's an HTTP client with your API key in its pocket, dressed up to look like a sampler. The single most important thing to internalize before you drop it on the canvas: hitting Queue Prompt spends money.
Why you'd route out at all
Text-to-video is the one job local models struggle to replace at the top end. Wan and LTX-2.3 give you solid clips on your own card, but Veo 3 is still the only model that generates synchronized sound and video in the same pass - dialogue, footsteps, room tone, all in the render. That's a real capability gap, and it's why people otherwise committed to local keep a Veo account around. You'll see it in the wild as a booster shot: run the body of a project on Wan, spend a credit or two on the hero shots.
This pack is a third-party reseller path to that model, not ComfyUI's official Partner Node. Worth knowing, because it changes what you're trusting.
What actually happens when you run it
The node builds a JSON payload and POSTs it to api.acedata.cloud/veo/videos with action: text2video and async: true. Async is the key word: Veo renders for a minute or three, so what comes back immediately is a task ID, not a video. The node prints that ID and hands it out on the task_id output. The split is deliberate and good - a crash or a closed laptop doesn't cost you the render. The submission goes out exactly once; only read-only queries get retried.
The inputs you actually touch
- prompt - multiline, default
"A whale breaches at golden hour."Clear it and write your own. Veo responds to shot language: lens, camera move, lighting, and the audio you want. - model -
veo3,veo3-fast,veo31,veo31-fast, defaultveo31-fast. Fast variants are the cheaper tier; the 3.1 family is newer and the only one that accepts 4k. - resolution -
default,1080p,4k,gif. Here's the trap behind most of the confused forum posts:defaultis not full HD. If your render looks soft, that's why - say1080pexplicitly.4kis rejected unless the model starts withveo31. Andgifsits in the same list, oddly: a format choice, not a resolution. - translation - a boolean, default off, passed through to the API as-is. Leave it alone unless you're prompting in a non-English language and want the service to handle it.
Outputs are status, task_id, video_url, trace_id. Right after submitting you'll get pending and an empty video_url - success, not failure. Feed task_id into Veo Retrieve Task for the same four fields with a filled-in video_url. Then video_url → Veo Load Video → Save Video, or just paste the URL in a browser.
Install and key
In ComfyUI Manager → Custom Nodes, search Veo, confirm publisher acedatacloud and package Veo by Ace Data Cloud, install, restart. If Manager doesn't list it, clone it:
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/VeoComfyUI.git
cd VeoComfyUI && python -m pip install -r requirements.txt
That's the whole dependency list - one line, requests. No torch, no model downloads, no VRAM. It does need ComfyUI 0.39.0 or newer for the native VIDEO type.
Then set the key in the environment of the actual ComfyUI process and restart:
export ACEDATACLOUD_API_KEY='paste-your-key-here'
python main.py
Note it's read from the environment, never from a widget. That means your key can't leak into a workflow JSON you share - a genuinely nice call by the author.
Where people get burned
This node is an output node. It executes on Queue Prompt even if nothing is wired downstream of it. Load a graph with several Veo nodes and you've just fired several paid jobs. Mute the ones you're not using before you experiment.
Everything else follows from the same rule: submissions never retry, so if the console shows a connection error or a timeout, go check your request history before you queue again. 401/403 almost always means the key isn't in the environment of the running ComfyUI process - a key you exported in a different terminal doesn't count. 429 means rate limited; keep the task ID you already have. And if you're just waiting, rerun Retrieve, never resubmit.
One real caveat: this pack is obscure. There's effectively no community record of Ace Data Cloud as a vendor, so no crowd-sourced reputation to lean on. What I can tell you is what the shipped code does - fixed host, no telemetry, no key logging - and that's all readable in the repo.
Inputs (4)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | A whale breaches at golden hour. | — |
| model | COMBO | veo31-fast | 4 options: veo3, veo3-fast, veo31, veo31-fast |
| 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 | — |