Nodes/VeoComfyUI/Veo Image to Video (Ace Data Cloud)
ComfyUI Node

Veo Image to Video (Ace Data Cloud)

Your image has to be on the internet first

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Veo Image to Video (Ace Data Cloud)
    • status
    • task_id
    • video_url
    • trace_id
    ◄promptThe scene gently comes to life.►
    ◄image_urls►
    ◄modelveo31-fast►
    ◄resolutiondefault►
    ◄aspect_ratio16:9►
    ◄translationfalse►

    Pure text-to-video gives you whatever the model feels like. Image-to-video gives you that frame, animated - which is why i2v is the default mode for so much local video work, and why you reach for this node when you've got a composition you already like and just want it to move.

    The catch is that "Veo Image to Video (Ace Data Cloud)" is a cloud node, and that changes the shape of the input in a way beginners almost always trip on. There's no image socket on this node. There's a text box where you paste a URL.

    How it works

    It POSTs action: image2video to /veo/videos on api.acedata.cloud, same as the text-to-video node, and comes back with a task ID because the render is asynchronous. Ace's servers then fetch your image themselves - over the public internet - and hand it to Veo.

    That fetch is why the URL has to be genuinely public. The client validates before it submits: scheme must be https, no embedded credentials in the URL, no localhost or .local, and no private IP ranges. If any of that fails you get a plain error instead of a mysterious remote failure, which is the right way round. Skim it: the validation is stricter than "will my browser open it."

    The inputs that matter

    • image_urls - multiline. Either a JSON array (["https://…"]) or one URL per line. One URL animates that frame. Two URLs give you first and last frame, and Veo interpolates between them - that's a genuinely useful trick for landing a specific ending pose, and it's not obvious from the label.
    • prompt - default is "The scene gently comes to life." Describe the motion, not the picture. The picture is already there.
    • model - veo3, veo3-fast, veo31, veo31-fast (default veo31-fast). The veo31-fast-ingredients model is not here; feeding it in errors, because that one belongs to the Ingredients node.
    • resolution - default, 1080p, 4k, gif. default is the low-resolution tier, so pick 1080p if you care. 4k is refused unless the model is a veo31 variant.
    • aspect_ratio - 16:9 or 9:16. This is the one node in the pack that exposes it, which tells you something about the API underneath: cropping is a first-frame decision, so the aspect ratio is derived from your source image rather than set independently.
    • translation - boolean, default off; pass-through to the API.

    Outputs are status, task_id, video_url, trace_id - pending with an empty video_url is the normal, successful first response. Wire task_id into Veo Retrieve Task, then video_url into Veo Load Video.

    Install and key

    Manager → Custom Nodes → search Veo → confirm publisher acedatacloud and package Veo by Ace Data Cloud → install → restart. Manual route:

    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 GPU, no model files. Needs ComfyUI 0.39.0+ for the native VIDEO type. Set the key where ComfyUI can see it and restart:

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

    Where people get burned

    The URL is the whole fight. A file path off your desktop won't work, a ComfyUI output/ path won't work, a data: URI won't work, and an http:// link won't work - it has to be https and reachable from someone else's server. In practice that means hosting the reference yourself: any public image bucket, a CDN, a paste service that gives you a direct HTTPS link. Same friction applies to every other URL-driven node in the pack, so build yourself one place to put reference images and reuse it.

    Two more things worth knowing. The URLs are de-duplicated and capped at two, so a copy-paste accident that repeats the same link doesn't produce what you'd expect - you'd send one frame, not two. And because this is an output node, it fires on every Queue Prompt even if nothing downstream consumes its outputs. Mute it while you're iterating, or you're paying for the same render repeatedly.

    If the task sits at pending after a couple of minutes, read the task ID and run Retrieve again. Submissions in this pack are never retried automatically - that's intentional, and it means a timeout is your cue to go look at your request history, not to hit Queue again.

    CategoryAce Data Cloud/Veo

    Inputs (6)

    NameTypeDefaultDescription
    promptSTRINGThe scene gently comes to life.—
    image_urlsSTRING—
    modelCOMBOveo31-fast4 options: veo3, veo3-fast, veo31, veo31-fast
    resolutionCOMBOdefault4 options: default, 1080p, 4k, gif
    aspect_ratioCOMBO16:92 options: 16:9, 9:16
    translationBOOLEANfalse—

    Outputs (4)

    NameTypeDescription
    statusSTRING—
    task_idSTRING—
    video_urlSTRING—
    trace_idSTRING—