Inferway H3 Cancel
Clicking Stop Doesn't Cancel Anything. This Node Does.
- interaction_id
- status
API nodes have a disconnect that local workflows never prepare you for, and it costs people money. When you click Stop in ComfyUI, or close the browser tab, or your wait_timeout_seconds expires, nothing at all happens to the job on the other end. You stopped watching. The remote generation is still queued or running, and when it completes it still bills you.
Inferway H3 Generate runs async tasks on Inferway's servers. Stopping the client doesn't reach them. Sending an explicit cancel does, and that's the entire job of Inferway H3 Cancel.
What it is
Two inputs, two string outputs, no video. It takes an interaction ID and POSTs a cancel request for it, then reports what the server said happened. A remote kill switch with a receipt printer.
It's also the node you'll use too late more often than not. Cancel a job that already succeeded and was delivered, and you don't get a refund - you get a clear statement of the outcome and whether you were charged. That's the difference between guessing and knowing.
How it works
It issues POST /v1/interactions with a body of {"op": "cancel", "interaction_id": ...} against the same service your Generate node used, then normalizes the response.
The response carries an outcome and a charged boolean, and the node folds both into one status string. The outcomes are pending, cancelled, delivering, delivered and refused:
cancelledwithcharged=False- you got there in time. The job is dead and you weren't billed.pending- the cancellation registered but the job hadn't started; the final billing state is still open.deliveringwithcharged=False- work was already done and is being handed over, but hasn't been billed.deliveredwithcharged=True- the generation completed and you paid. Cancelling after the fact is a lookup, not a refund.refused- the server declined the cancel.
One detail here is quietly well-built: if the server returns no cancel block - what happens when you cancel an interaction that already finished successfully - the client derives one from the billing block, sets outcome=delivered, and computes charged from whether the charged amount is above zero. Cancelling a completed job reports the truth instead of leaving you guessing.
Inputs and outputs
interaction_id is required: an int_ prefix plus 32 hex characters. The format is strictly validated, so a truncated paste fails immediately with a clear error instead of a confusing server round-trip.
profile is a single-option combo, default. The pack rejects anything else.
The outputs are interaction_id (echoed back) and status - the human-readable outcome=..., charged=... string. Neither is a VIDEO and there's nothing to wire into SaveVideo. This is a terminal action; run it, read the status, move on. Dangling outputs are fine, and that's how you'll normally use it.
The workflow that actually helps
Keep one wired up: a text node or primitive holding your target ID into interaction_id, run it, read status.
The step people skip is what comes next. If status says charged=True, you weren't too early - you were too late, and there's a finished video sitting on the server under that ID. Inferway H3 Resume will download it. Cancel tells you whether you own something worth resuming.
Where the ID comes from
The interaction_id output of Inferway H3 Generate, its log line, and the timeout error text (wait_timeout_int_...). If a run blew up and you never saw it, the pack ships a history CLI - run it from the pack directory with ComfyUI's Python:
cd /path/to/ComfyUI/custom_nodes/inferway-comfy
/path/to/ComfyUI/.venv/bin/python -m inferway_comfy history --limit 20 --state running
It lists IDs, model, status and timestamps without printing prompts or download links. Confirm the ID, then cancel it.
Install and key
Same pack, same install - one dependency (httpx), no model weights.
cd /path/to/ComfyUI/custom_nodes
git clone https://github.com/inferway/comfyui-inferway inferway-comfy
/path/to/ComfyUI/.venv/bin/python -m pip install -r inferway-comfy/requirements.txt
Or search Inferway H3 (inferway-comfy) in ComfyUI Manager and restart. The credential is INFERWAY_API_KEY, exported into the ComfyUI server process environment before launch, with no key field anywhere in the UI. For Cancel the key must be the one that owns the task - another account's key sees a different universe of interactions, and the cancel fails in a way that looks like a bad ID.
The thing to take away
Don't treat Stop as a cancel. In every API-node workflow, stopping the client and stopping the job are two different actions, and only one of them stops the meter. If you're about to walk away from a run you don't want, paste the ID into this node first.
Inputs (2)
| Name | Type | Default | Description |
|---|---|---|---|
| interaction_id | STRING | Inferway interaction ID to cancel | |
| profile | COMBO | default | API key profile. Add or switch keys: Settings → Inferway, or the Inferway menu. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| interaction_id | STRING | Inferway interaction ID |
| status | STRING | Cancellation status and outcome |