Nodes/VeoComfyUI/Veo Retrieve Task (Ace Data Cloud)
ComfyUI Node

Veo Retrieve Task (Ace Data Cloud)

The one node here that doesn't spend money

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Veo Retrieve Task (Ace Data Cloud)
    • status
    • task_id
    • video_url
    • trace_id
    ◄task_id►
    ◄wait_seconds240►

    Every submission node in this pack ends the same way: you get a pending status and a task ID, and no video. That's not a failure - it's the design. Veo renders on someone else's hardware for a minute or three, and the pack refuses to hold your ComfyUI queue hostage while it waits.

    Retrieve Task is the other half of that contract. It's the node you run second, and unlike its siblings, running it is free.

    How it works

    It POSTs to /veo/tasks with action: retrieve and your task ID. That's a read, and the client treats it like one: read-only calls retry up to three times with a short backoff, because a blip on a query costs nobody anything. The comparison is worth stating plainly, since it's the whole reason this node exists as a separate thing from the submit nodes - paid submissions are sent exactly once and never retried. Queries are free, so they can be.

    Inside, it polls. If the task comes back pending it sleeps, checks again, and keeps going until either the task finishes or it hits your wait_seconds budget. Polling interval is capped at five seconds, so a two-minute wait is roughly two dozen cheap requests.

    The two inputs

    • task_id - the ID the submission node printed. Copy it from the submit node's text output (it shows up via the standard Preview as Text node) or out of the console.
    • wait_seconds - integer, 0 to 240, step 5, default 240. This is your patience budget in seconds, and 240 is the ceiling: no setting of this widget will ever make it wait longer than four minutes. Set it to 0 if you just want a single quick status check and to move on.

    Outputs are the same four the submit nodes produce: status, task_id, video_url, trace_id. When it finishes you get succeeded and a real video_url; if the clock ran out you get pending and an empty one.

    Wiring it up

    video_url is just a string, so there are two ways to use it. Paste it in a browser if you want to eyeball the result. Or - the actual workflow - send it into Veo Load Video, which downloads the file and hands you a native ComfyUI VIDEO you can feed to Save Video or any other video node. The pack's own example, 02-retrieve-and-save.json, is exactly this chain: Retrieve Task → Load Video → Save Video.

    Install and key

    ComfyUI Manager → Custom Nodes → search Veo → confirm publisher acedatacloud and package Veo by Ace Data Cloud → install, restart. Or:

    cd /path/to/ComfyUI/custom_nodes
    git clone https://github.com/AceDataCloud/VeoComfyUI.git
    cd VeoComfyUI && python -m pip install -r requirements.txt
    

    One dependency (requests), no models, no GPU, but ComfyUI 0.39.0+ is required. The key still has to be present even for reads - retrieval is authenticated - and it comes from the environment of the running process:

    export ACEDATACLOUD_API_KEY='paste-your-key-here'
    python main.py
    

    Where people get burned

    Do not rerun the node that submitted the job. This is the mistake that costs real money: your clip is still rendering, you're impatient, you hit Queue Prompt on a graph that still has the text-to-video node in it, and now you've bought two renders. The correct move is a workflow with only the retrieve half in it - Retrieve → Load Video → Save Video - and rerun that as many times as you like. Retrieving the same ID twice doesn't create anything.

    Second, the four-minute ceiling surprises people. Long jobs genuinely can outlast it, especially at 4K. That's fine: pending is a valid answer, the render continues on Ace's side regardless, and you just run the retrieve workflow again in a few minutes. Nothing is lost.

    Third, the small print on wait_seconds: it's an integer capped at 240, and it's a per-run budget, not a deadline for the task. If you set it to 240 and your render finishes at minute six, you'll have run Retrieve twice.

    One genuine gotcha that follows from the empty URL: if you wire a pending Retrieve straight into Veo Load Video, that node has nothing to download and raises Task is still pending. Retrieve the same task ID again. It's an honest error rather than a silent bad file, but it means the two-node chain is not fire-and-forget - check the status before you expect a file.

    CategoryAce Data Cloud/Veo

    Inputs (2)

    NameTypeDefaultDescription
    task_idSTRING—
    wait_secondsINT2400–240—

    Outputs (4)

    NameTypeDescription
    statusSTRING—
    task_idSTRING—
    video_urlSTRING—
    trace_idSTRING—