Inferway H3 History
Finding the video you already paid for
- history
- latest_succeeded_id
Here's the situation this node exists for. You queued an Inferway H3 generate, the wait cap expired or you restarted ComfyUI, and the run is sitting there red. The task isn't dead - the remote order is still running and will be billed when the video finishes. All you need is the interaction id. All you have is a console tab you'd rather not open.
InferwayH3History lists your account's recent tasks right on the canvas. It's the read-only companion to InferwayH3GenerateV2 and InferwayH3Resume in the comfyui-inferway pack. Context worth knowing: the model behind it, MiniMax H3, is a 33B omni-modal video model whose open weights are licence-locked out of the US, EU, UK and Korea, which is exactly why a hosted route like this exists. But nothing here is H3-specific - the node lists whatever your Inferway key has been doing.
What it does, precisely
It sends POST /v1/interactions with op=list and nothing else. Never get, never create, never cancel. The author's contract is explicit that op=list doesn't even issue a signed download link, so the node is safe to leave wired in a panel workflow - it cannot spend money and it cannot fetch media.
Two behaviours worth knowing before you wire it up:
- It refetches on every queue. The node deliberately overrides its fingerprint so ComfyUI can never serve it from cache. History is live data; a cached page would hide a task that finished after the first run. That's the right call, and it has a consequence downstream (see below).
- It's an output node. It prints to the canvas, so it runs when you queue the workflow even with nothing connected to its outputs.
Inputs and outputs
Three inputs, all with defaults that are fine:
profile- which stored API key to read. If you keep several keys, this is how you check the right account.limit- 1 to 50, default 10. How many recent interactions to list.state-all,succeeded,failed,queued,runningorcancelled.allsends no server-side state filter.
The history output is one line per interaction, pipe-separated: UTC timestamp to the minute, state, request mode, duration in seconds, the charged amount with currency, availability (downloadable or expired), the id, and a prompt excerpt. With nothing to show, the single line reads No interactions found. The charge column is the useful one - it's how you confirm that the run you thought timed out was actually billed or not, without opening the console.
The second output, latest_succeeded_id, is the neat bit: the newest succeeded interaction whose result is still downloadable, empty when there isn't one. It's a STRING shaped for the interaction_id input on InferwayH3Resume, so the two nodes wire together directly - list, then collect, without typing a 32-hex id by hand.
The trap in the shipped example
The pack's own history.json example wires History into Resume, and the README flags the consequence plainly: whenever no downloadable success is listed, Resume fails the queue with invalid_interaction_id, and when one is listed, Resume downloads that newest video again on every single queue. That's free - no new order, just transfer time - but it will cheerfully re-fetch the same clip into SaveVideo forever. Unwire Resume when all you want is the list.
Installing it
Same pack, same install, no extra anything:
cd ComfyUI/custom_nodes
git clone https://github.com/inferway/comfyui-inferway
/path/to/ComfyUI/.venv/bin/python -m pip install -r comfyui-inferway/requirements.txt
Or search Inferway H3 in ComfyUI Manager (registry package inferway-comfy) and restart. Dependencies are httpx and nothing else, and there are no model files - this is a thin client over the Inferway API, so the only thing that can bite is the key. Set INFERWAY_API_KEY in the environment of the ComfyUI server process and restart, or use the in-app dialog (Inferway → Manage Inferway API key), which stores it owner-only under user/__inferway/credentials.json.
If it looks empty
An empty list usually means one of three things: you're on the wrong profile, you're filtering state = succeeded when the run you care about is still queued or running, or the key belongs to a different Inferway account than you thought. There's no failure mode here where the node loses you a task - it can't create, cancel or charge anything. If you'd rather not open the canvas at all, the pack ships a CLI with the same scope:
cd /path/to/ComfyUI/custom_nodes/inferway-comfy
/path/to/ComfyUI/.venv/bin/python -m inferway_comfy history --limit 20
It prints ids, model, status, creation time and key name - no prompts, no signed links, and it never auto-picks a job for you. You confirm the id, then hand it to Resume.
Inputs (3)
| Name | Type | Default | Description |
|---|---|---|---|
| profile | COMBO | default | API key profile. Add or switch keys: Settings → Inferway, or the Inferway menu. |
| limit | INT | 101–50 | How many recent interactions to list (1-50) |
| state | COMBO | all | Filter by state; 'all' sends no state filter |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| history | STRING | One line per interaction: created_at (UTC, to the minute), state, mode, duration, charge, availability, id, prompt excerpt |
| latest_succeeded_id | STRING | Newest succeeded interaction with a downloadable result; empty when there is none. Wire into Resume. |