Higgsfield - Resume Request
The node that can't spend your money
- result
Every API-wrapper node has the same failure mode in the middle of it: the generation is running on someone else's server, and the thing holding your end of the connection falls over. ComfyUI restarts. The download fails halfway. You close the wrong tab. With a plain HTTP node that's your money gone and no picture. With this pack you paste the request ID back into HFResumeRequest and it picks the job up where it was.
Here's the part worth appreciating: this node has no way to submit a new generation. It looks up a request you already have, polls it if it's still running, and downloads it if it's done. No generation_id field, no prompt, no model - nothing to submit. It literally cannot buy you anything, which makes it the safest node in the pack to queue when you're not sure what happened.
How it works
The pack records every submission in a small SQLite database, ComfyUI/user/__higgsfield/requests.sqlite3, keyed by a hash of your API key ID. That's the trick: the same request ID means different rows for different keys, so two accounts on one machine can't see or resume each other's work. Hand the node a request_id and it looks up your row. If the request is already in a terminal state with a saved result, it re-runs the download from that record. If it's still queued or in progress, it polls with backoff until it finishes or your timeout runs out.
If the row isn't there, you get "This request is not recorded for the configured local API account." That's not a bug - it means the generation wasn't submitted by this pack under this key. A request you kicked off in the Higgsfield web console is not resumable from here.
Inputs and output
request_id is a string, and you have three sources for it: the request_id output on any of the generate nodes, an error message (the node prints the ID when a poll times out or a download dies), or the request list in the Higgsfield console. timeout_seconds is the same 30–7200 budget as everywhere else in the pack, default 1800 - it bounds how long you wait locally.
The one output is result (HF_RESULT), which is media-laden but not usable as-is. Send it into Result Images or Result Video depending on what the request produced; that's where you get IMAGE tensors or a VIDEO object. The node is itself an output node, so it can sit at the end of a workflow on its own, but you almost always want a Result node after it.
A concrete rescue flow, in case you're holding a dead workflow:
Resume Request (request_id: 3f7c1a...) → Result Video → Save Video
Install
Standard pack install:
cd ComfyUI/custom_nodes
git clone https://github.com/w0ver/Higgsfield-api-comfyui-nodes ComfyUI-Higgsfield
Restart ComfyUI; the node is under Higgsfield/Advanced. Usual credential rules apply - Windows uses the Configure API.bat helper, everyone else exports HF_API_KEY_ID and HF_API_KEY_SECRET into the ComfyUI backend's environment, and a stray .env file does nothing. Nothing to download, one dependency (requests).
Where people get burned
- "Not recorded for the configured local API account" - either you changed keys, or you wiped
ComfyUI/user/__higgsfield/. The credential, the request database and the duplicate-submission guard all live in that folder. Back it up with your workflows. - The status URL on a very old release. Early versions rejected the status URL the API returned and lost the handle. Current code recovers those saved requests instead of resubmitting them, so updating the pack and re-queueing the same workflow is the fix.
- Resuming does not cancel anything. If the job is still running, this node waits for it; it won't stop it at Higgsfield's end. There's no cancel button here, and ComfyUI's stop only stops your local wait.
- A request that ended in failure or moderation stays failed. Resuming re-reads a terminal state, it doesn't retry the generation. For that, you need a new
generation_idon the generate node - and a new charge. - Queueing Resume twice at once just polls the same job twice. Harmless, but pointless, and it can make the logs look alarming.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| request_id | STRING | — | |
| timeout_seconds | INT | 180030–7200 | — |
Outputs (1)
| Name | Type | Description |
|---|---|---|
| result | HF_RESULT | — |