Nodes/Higgsfield-api-comfyui-nodes/Higgsfield - Resume Request
ComfyUI Node

Higgsfield - Resume Request

The node that can't spend your money

By w0ver·Created 2 days ago·Updated 2 days ago· 5
Higgsfield - Resume Request
    • result
    ◄request_id—►
    ◄timeout_seconds1800►

    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_id on 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.
    CategoryHiggsfield/Advanced

    Inputs (2)

    NameTypeDefaultDescription
    request_idSTRING—
    timeout_secondsINT180030–7200—

    Outputs (1)

    NameTypeDescription
    resultHF_RESULT—