GPT Image Load Image (Ace Data Cloud)
Getting the Result Back Into ComfyUI
- image
Every other node in this pack hands you a URL. This is the one that turns that URL back into a proper ComfyUI IMAGE - the tensor type your upscaler, your FaceDetailer, your inpaint and your Save Image node all expect. It's a two-inch pipe, and it's the piece that makes the rest of the pack usable.
What it is
Display name GPT Image Load Image (Ace Data Cloud), one input, one output. media_url in, image out. It exists because the API-wrapper pattern - a node that calls a hosted model and drops the result back into the graph as if a local sampler made it - breaks down at exactly this point. A string URL is not a picture, and ComfyUI's graph is aggressively typed. Without a node like this, you're left saving the file by hand and re-loading it.
How it works
The pack's media helper is stricter than you'd guess, and that's mostly to your benefit. It requires https, and the hostname has to be one of four allowlisted Ace CDN domains. Credentials in the URL are rejected outright, HTTP redirects are not followed, and there's a hard 128 MiB ceiling enforced both against the Content-Length header and while streaming - so a mislabeled URL can't quietly fill your disk. Downloads retry up to three times with a short backoff (that retry is safe; nothing is being billed), an empty response is an error, and the bytes are decoded through Pillow into an RGB float tensor with a batch dimension of one.
So media_url is the only thing you set, and the value you want is the URL the retrieve nodes already gave you: first_media_url from GPT Image Retrieve Task, or an entry out of media_urls_json if the task returned several images. Because ComfyUI lets you convert a widget into an input, you can wire either output straight into media_url and never copy a link by hand. If you leave media_url empty, the node raises "Task is pending; retrieve the same task ID again" - a good error message, and a reminder that a half-finished job is the usual reason you're staring at a red node.
The output is a single IMAGE, batched as one. Wire it anywhere you'd wire a Load Image: an upscale node, a ControlNet preprocessor, a save node, or a Preview Image if you just want to look at it.
Install
Nothing extra - the loader ships with the pack, so install the pack and you have it. Manager: search GPT Image, publisher acedatacloud, package GPT Image by Ace Data Cloud. Otherwise:
cd ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/GPTImageComfyUI
python -m pip install -r GPTImageComfyUI/requirements.txt
Then restart. The loader itself needs only numpy, torch and Pillow, which any ComfyUI install already has; the README's 0.39.0+ floor is aimed at the pack's native video and audio loaders, not this one. This pack only registers the image variant.
One note on credentials: this node makes no API call and needs no key. You can use it, and test it, with ACEDATACLOUD_API_KEY unset.
Troubleshooting
"Media URL must be an Ace Data Cloud HTTPS CDN link." You pasted something that isn't on the allowlist - a Google image result, a Discord CDN link, someone's S3 bucket, or the same link after a redirect service got hold of it. This is deliberate hardening, not a bug, and the fix is to use the URL the task gave you rather than hosting the file anywhere you like.
It worked last week and now it doesn't. Prefer the task ID over the URL as the durable handle: save the task_id, and re-retrieve the task to mint a fresh link instead of hardcoding an ageing CDN URL into a saved workflow. Same for anything you pasted into a workflow you shared with someone else.
Downloads fail behind a proxy or on a locked-down network. The helper talks to a fixed set of Ace hosts directly and won't follow redirects, so a corporate MITM proxy that rewrites certificates will break it in a way that looks like a generic connection failure.
128 MiB. Generous for a 4K PNG, less so for a 10-image batch downloaded through some other path. If you're over it, take one URL at a time.
Inputs (1)
| Name | Type | Default | Description |
|---|---|---|---|
| media_url | STRING | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| image | IMAGE | — |