Nodes/QwenImageComfyUI/Qwen Image Load Image (Ace Data Cloud)
ComfyUI Node

Qwen Image Load Image (Ace Data Cloud)

The one node in this pack that needs no API key

By AceDataCloud·Created 3 days ago·Updated 2 days ago· 0
Qwen Image Load Image (Ace Data Cloud)
    • image
    ◄media_url►

    Three of the four nodes in this pack phone a paid API. This one doesn't. It fetches a file from Ace's CDN and hands ComfyUI a perfectly ordinary IMAGE tensor - same shape, same dtype, same behaviour as the core LoadImage node reading a PNG off your disk. No key, no credits, no request to the generation service.

    It's the last link in the chain, and the chain is: generate (get a task ID) → retrieve (get a status and a URL) → load (get pixels you can actually work with).

    How it works

    One input, media_url, a plain string. Before it downloads anything it inspects that URL, and it's stricter than you'd expect: it has to be https, the hostname has to be one of Ace's CDN hosts (cdn.acedata.cloud, cdn.acedata2.cloud, platform.cdn.acedata.cloud, platform2.cdn.acedata.cloud), and there can't be credentials embedded in it. Then the download itself has two hard rules - redirects are not followed, and 128 MiB is the ceiling, checked both against the server's advertised length and against the bytes actually read. Transport errors get three attempts with a short backoff. That's it for cleverness.

    Everything past that is convention: PIL opens the bytes, converts to RGB, scales to 0–1 floats, and you get back a 1×H×W×3 torch tensor. Which means the output image goes anywhere an image goes - PreviewImage, SaveImage, an upscaler, VAEEncode, a mask node, whatever your graph already does.

    The host allowlist isn't paranoia for its own sake. A node that fetches an arbitrary URL on command, inside a ComfyUI server, is a request-forgery toy; pinning it to one vendor's CDN is the cheapest way to keep it from being one.

    That allowlist is also why the empty-input error reads the way it does. Feed it an empty string and you get Task is pending; retrieve the same task ID again. - which is the node telling you your wiring is wrong, not that the file is broken. An unfetched first_media_url is empty, and you piped it straight into the loader.

    Install

    Same pack, so one install covers all of it. Manager → search Qwen Image → publisher acedatacloud, package Qwen Image by Ace Data Cloud → install → restart. From source:

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

    The pack's requirements.txt is just requests and jsonschema - PIL, numpy and torch all come from your ComfyUI install, so there's nothing model-shaped or CUDA-shaped to download. The README asks for ComfyUI 0.39.0 or newer for the pack's native media loaders; in the source that constraint is about the new video/audio API, while the image path is plain PIL. Worth knowing, because only the image loader is registered by this pack - even though media.py contains video and audio loading code, this build exposes AceQwenImageLoadImage alone. If a task returns a video, this pack cannot load it for you.

    Where people get burned

    "Media URL must be an Ace Data Cloud HTTPS CDN link." The most common failure by a mile. Usual causes: a link copied from somewhere that isn't the CDN (imgur, Discord, a browser tab of the platform UI), the http:// version of a working URL, or a URL with a username and password in it. Get the URL from the retrieve node's first_media_url or out of media_urls_json and you'll be fine.

    HTTP 403/404 on the download. These are signed CDN links, and signed links age out. Re-run the retrieve node to get current ones - that lookup is read-only and doesn't cost anything. Do not re-submit the generation.

    A redirect kills it. Not followed, by design; you'll see Media download returned HTTP 302 and similar. Freshly retrieved links don't bounce.

    "The media link does not contain a valid image." You handed it a video or an audio URL, or a web page. Since this pack ships no video loader, a video result is a dead end here - you'd pull the URL and deal with it outside ComfyUI.

    A failed download here is never an auth problem. No key, no credits, no service call. If this node errors, the URL or the file is the problem, which makes it a genuinely useful diagnostic: when something breaks in the chain, check whether the loader or the retrieve node failed, and you instantly know whether to look at your key or your URL.

    Then it's a normal image. Once loaded, nothing downstream knows or cares that the pixels came from a paid API - it's a tensor. Post-process it locally, save it, upscale it, feed it back into a local workflow. That's the whole point of wiring a cloud node into a local graph.

    CategoryAce Data Cloud/Qwen Image

    Inputs (1)

    NameTypeDefaultDescription
    media_urlSTRING—

    Outputs (1)

    NameTypeDescription
    imageIMAGE—