π₯ RH Download Results
Come back for your results later β RH Download Results
- config
- images
- video_frames
- text
- audio
- video
- latent
RH Download Results is the pack's "pick up where you left off" node. While RH Execute creates a task, waits for it, and downloads in one blocking move, this node only downloads - you give it a task ID (or several) and it fetches whatever RunningHub has produced, without creating anything new. Same result outputs, none of the orchestration.
Why bother? Three reasons. First, crash recovery: if your ComfyUI died mid-wait on a long cloud job, the task is still running on RunningHub - grab its ID from the console, rebuild your graph with a Download node, and collect. Second, batch runs: RH Batch Execute returns a comma-separated list of task IDs, and this node takes comma-separated IDs directly, pulls them all in parallel, and stitches the results into one output batch. Third, decoupling: queue a task, close ComfyUI, come back tomorrow and download. The cloud holds the result; your local session doesn't have to.
What you set
config- from RH Config. Required.task_id- the ID from an RH Execute or RH Batch Execute run. Comma-separated IDs mean a parallel batch download (up to 10 workers).timeout- how long to keep waiting for tasks that are still queued/running. Default 600s, range 60β3600.save_to_local/output_prefix- same as Execute: dump results into your ComfyUI output dir with a prefix (RH_DLby default).
The six outputs mirror Execute exactly: images, video_frames, text, audio, video, latent. Wire images into a Preview Image and you'll see your cloud results.
How it works
It reuses the exact same machinery as Execute - poll /task/openapi/outputs every few seconds, then download files in parallel and convert them by type. For multiple task IDs it spins up a thread per task. The one behavioral difference worth knowing: when a single task fails, the node doesn't blow up the whole run. It returns a "Failed: <task_id>" placeholder image plus an ERROR: ... string in the text output. That's forgiving for a batch - but it means a "successful" run can silently contain failures, so glance at the text output if a batch looks wrong.
Gotchas
The timeout still applies to waiting, not download size - a task still queued after the timeout raises a "Task timeout" error. And access is tied to your API key: if the task belongs to a different account/key, or the task was purged, the poll will come back empty. Also note this node never creates a task, so wiring it up with a fresh (empty) task ID just polls uselessly until timeout - paste a real ID.
Install is pack-wide: ComfyUI Manager (search ComfyUI_RH_API) or git clone https://github.com/xuchenxu168/ComfyUI_RH_API.git into custom_nodes, pip install -r requirements.txt, restart. No model files involved, ever - this pack only moves data between you and RunningHub's API.
Inputs (5)
| Name | Type | Default | Description |
|---|---|---|---|
| config | RH_CONFIG | RunningHub configuration from RH_Config node | |
| task_id | STRING | Task ID from RH_Execute node | |
| timeout | INT | 60060β3600 | Maximum time to wait for task completion (seconds) |
| save_to_localopt | BOOLEAN | true | Save images and videos to ComfyUI output directory |
| output_prefixopt | STRING | RH_DL | Prefix for saved files |
Outputs (6)
| Name | Type | Description |
|---|---|---|
| images | IMAGE | β |
| video_frames | IMAGE | β |
| text | STRING | β |
| audio | AUDIO | β |
| video | VIDEO | β |
| latent | LATENT | β |