Flux Retrieve Task (Ace Data Cloud)
How you actually get your image out of Ace Data Cloud
- status
- task_id
- media_urls_json
- first_media_url
- result_json
- trace_id
If you've wired up the Flux generate or edit node and got nothing but a task ID back, this is the node you were missing. It's the least exciting node in the pack and the one you will use in every single workflow: it takes a task ID and asks the service "is it done yet, and where's the file?"
Why a second node exists at all
The generate, edit and video nodes in this pack submit jobs asynchronously. The client forces async: true on those requests, so the normal return is a status of pending and a task_id - not an image. That's not a bug; a hosted Flux Pro render or a 20-second FLUX 3 clip doesn't fit in an HTTP response cycle.
So the pattern for every paid node in this pack is the same two-step:
Flux Generate Image → task_id → Flux Retrieve Task → first_media_url → Flux Load Image
Inputs that matter
task_id - the string from the submit node's task_id output. It's yours; the API tracks it under your account, so you can come back to it tomorrow. Copy it somewhere safe the moment you get it.
wait_seconds - 0–240, default 0. This is the one setting worth thinking about. At 0 the node does a single snapshot and returns whatever it finds. Above 0 it polls the task endpoint every five seconds - up to the number you set - and returns early the moment the job stops being pending. For an image, 60–120 is usually plenty. A 240-second ceiling on a video job will often time out while the job is still running.
parameters_json - the advanced escape hatch, same as on every node in this pack. Leave it as {} unless you need a field the widgets don't expose.
Outputs
All six outputs are strings, and all six are worth knowing:
status-pending,succeeded,partialorfailed. This is your if-statement.task_id- echoed back, so you can loop it into a second retrieve node whenwait_secondsran out.media_urls_json- every media URL the service returned, as a JSON array.first_media_url- the convenient one. Wire this toFlux Load ImageorFlux Load Video.result_json- the normalized response. The pack scrubs internal fields (request bodies, credential IDs, upstream routing) before it hands this to you, so what's left is safe to paste into an issue.trace_id- the service's request identifier, and the fastest way to get a support answer or check your spend history.
What it costs
Retrieval is a read. The pack marks these task lookups as read-only requests, and the README says plainly that read-only queries and media downloads shouldn't spin up a new paid task. Two practical corollaries:
- Re-running a graph that contains only the retrieve node re-queries and doesn't rebill.
- Re-running a graph that contains the submit node submits again and does. If your graph is "submit → retrieve → load" and you hit Queue to poll a slow job, you've just paid twice. Bypass the submit node (
Ctrl+B) for the re-check, or keep the submit step in its own graph and paste the ID in by hand.
Paid submissions are deliberately never retried after a connection failure by this client, on the theory that a retry you didn't ask for is a charge you didn't ask for. If the node dies mid-request, check the request history with your task ID before queueing again - that's one of the few places these nodes are conservative, and it's for your benefit.
Install
Manager: search Flux, publisher acedatacloud, package Flux by Ace Data Cloud. Manual:
cd ComfyUI/custom_nodes
git clone https://github.com/AceDataCloud/FluxComfyUI
python -m pip install -r requirements.txt
Restart afterwards, and set the key in the ComfyUI process environment - ACEDATACLOUD_API_KEY (or ACEDATACLOUD_API_TOKEN) - then restart again. Retrieving still needs the key, because the task has to be matched to your account. Keys pasted into a widget end up in workflow JSON, screenshots and issue reports, so don't.
Common issues
status says pending and first_media_url is empty. Fine, keep querying. Raise wait_seconds, or re-queue the retrieve node with the same task_id.
The load node then throws "Task is pending; retrieve the same task ID again." That error comes from the loader, not from here, and it means exactly what it says: you're a step early. Beginners read it as "the retrieve node failed" - it didn't, it returned pending honestly and you wired an empty string into a downloader.
"Set ACEDATACLOUD_API_KEY in the ComfyUI process environment and restart." The key isn't visible to the ComfyUI process - usually because it was exported in a terminal you didn't launch ComfyUI from.
A task ID that "doesn't exist". It's from another account. These lookups resolve against yours and only yours.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| parameters_json | STRING | {} | — |
| task_id | STRING | — | |
| wait_seconds | INT | 00–240 | — |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| status | STRING | — |
| task_id | STRING | — |
| media_urls_json | STRING | — |
| first_media_url | STRING | — |
| result_json | STRING | — |
| trace_id | STRING | — |