Nodes/GrokComfyUI/Grok Load Video (Ace Data Cloud)
ComfyUI Node

Grok Load Video (Ace Data Cloud)

A video loader that only trusts one CDN — which is exactly why it's the good one

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Grok Load Video (Ace Data Cloud)
    • video
    ◄media_url►

    The Grok generation nodes hand you a URL, not a file. This is the node that turns that URL into something ComfyUI can actually use: one input, media_url, one output, video, typed VIDEO. Wire the retrieve node's first_media_url into it and your paid Grok clip becomes a normal object in a normal graph - ready for a save node, an interpolator, an upscaler, whatever your local pipeline does with video.

    It is not a general-purpose video loader, and if you try to use it as one it will refuse you. That refusal is the interesting design decision.

    The mechanism, and the allowlist

    It's a plain download - but a deliberately paranoid one. Before a single byte moves, the URL is parsed and checked: scheme must be https, and the hostname must be one of cdn.acedata.cloud, cdn.acedata2.cloud, platform.cdn.acedata.cloud, or platform2.cdn.acedata.cloud. No username or password in the URL. Redirects are disabled outright, so you can't be bounced off the allowlist mid-download. Anything else gets Media URL must be an Ace Data Cloud HTTPS CDN link.

    That's the whole point of the node, really. A custom node whose job is "fetch this URL with your user's permissions" is a shape that deserves suspicion - this is the category that once shipped a credential-stealing node, and an allowlist plus no-redirect plus no-credentials is exactly how you narrow that surface. The cost is that you can't point it at your own NAS or a YouTube link. If you want a general loader, you already have one; this one is for the pack's own outputs. The flip side is also true and worth saying: the links it accepts are the same links the retrieve nodes print, so the handoff is frictionless.

    Then the bytes get streamed in 1 MiB chunks with a 128 MiB ceiling, checked both against the Content-Length header and against the running total, so a lying header doesn't sneak past. Transport hiccups are retried - three attempts with a half-second then one-second pause - but only for actual connection failures. An HTTP 404 fails immediately, which is right: an expired link isn't going to heal.

    Finally the buffer is handed to ComfyUI's own video stack (VideoFromFile over an in-memory byte stream) and comes out as a native VIDEO. That's why the README's floor is ComfyUI 0.39.0 - the native media loaders depend on the newer video API. If your install can already play back a Wan or LTX clip, you have what this needs; the decode is ComfyUI's, not the pack's.

    Using it

    One input, and it's the one you wire:

    • media_url - paste an Ace CDN URL from the platform's request history, or wire first_media_url from a retrieve node.

    One output:

    • video - type VIDEO. It's not an output node, so nothing saves on its own; terminate the graph with your usual video save or preview node, the same one you'd use for local generation.

    Because the input is a plain string widget that's also convertible to a socket, the comfortable pattern is a saved workflow with two retrieve paths - single task and batch - both feeding one loader. Retrieve, wire, queue, done. Adding a Preview or Save node after video gives you the "did it come back and is it the right clip" check.

    One detail worth knowing: there's no audio loader in this build. The pack's media layer can produce AUDIO, but the service here is video-only, so the install stays at two small dependencies instead of pulling in a codec library.

    Install

    Manager → search Grok → publisher acedatacloud, package "Grok by Ace Data Cloud" (registry ID grok), install, restart. Manually:

    cd ComfyUI/custom_nodes
    git clone https://github.com/AceDataCloud/GrokComfyUI
    cd GrokComfyUI && python -m pip install -r requirements.txt
    export ACEDATACLOUD_API_KEY=your_key_here   # restart the process after setting it
    

    requests and jsonschema are the real dependencies per requirements.txt. No model files, no GPU, nothing to download. ComfyUI 0.39.0+ for this node specifically.

    Where people get burned

    Wiring it while the task is still pending. An empty URL doesn't produce a mysterious decode error, it produces a useful one: Task is pending; retrieve the same task ID again. That message is the pack being honest that the empty string came from an unfinished job.

    Using it as a URL field for anything else. Point it at a Discord CDN link and you get the allowlist error, not a download. This trips people up who assume a node called "Load Video" is the general one.

    Long 1080p clips. 128 MiB is the ceiling, enforced mid-stream. A thirty-second high-bitrate render can approach it, and when it trips you get Media exceeds the 128 MiB limit. - a clean error, but you've already spent the download. Shorter clips, or fetch it outside ComfyUI.

    Stale links. These are CDN URLs that come with a task; treat them as perishable. If a link 404s, retrieve the task again for a fresh one rather than assuming the render is gone.

    Reading the error and assuming the key is fine. This node can't need a key - it downloads. Everything upstream of it does. A 401 belongs to a retrieve or generate node, not to this one.

    CategoryAce Data Cloud/Grok

    Inputs (1)

    NameTypeDefaultDescription
    media_urlSTRING—

    Outputs (1)

    NameTypeDescription
    videoVIDEO—