UpgradeMajor upgrade underway: a new video studio, with more models coming soon. Stay tuned.
Inferway
Back to client guides
ComfyUI

Use Inferway H3 video in ComfyUI

Install the Inferway H3 node pack, set your API key, and generate video from the ComfyUI canvas. Generation runs on Inferway, so no local GPU is needed.

Before you start

  1. ComfyUI 0.35.0 or later, running on Python 3.10 or later. The ComfyUI startup log prints both versions.
  2. An Inferway API key: sign in and create one under Console → API Keys.
  3. Account balance. Each generated video is billed; the pricing page lists the current price.

Step 1 · Install the node pack

With ComfyUI-Manager: open Custom Nodes Manager, search for Inferway H3, click Install, then restart ComfyUI. If the version column only offers nightly, install that: it is the latest published code.

Manually, if Manager is unavailable or refuses the install: clone the repository into custom_nodes and install its one dependency with the same Python that runs ComfyUI.

Manual installbash
cd ComfyUI/custom_nodes
git clone https://github.com/inferway/comfyui-inferway inferway-comfy
# Use the Python that runs ComfyUI
# (Windows portable build: ..\..\python_embeded\python.exe)
python -m pip install -r inferway-comfy/requirements.txt

Step 2 · Set your API key

Open Settings → Inferway, or the Inferway menu, and choose Manage Inferway API key. Paste your key and save. The key stays on this computer and never goes into a workflow or image you share.

Every node has a profile dropdown. To use more than one key, for example a work and a personal account, save each under its own profile name and pick it on the node.

Prefer an environment variable, or reach ComfyUI from another computer? Set INFERWAY_API_KEY for the ComfyUI process and restart ComfyUI; it takes priority for the default profile.

Or set the key as an environment variablebash
# macOS / Linux: in the shell that starts ComfyUI
export INFERWAY_API_KEY="your-key"
python main.py

# Windows portable: add to run_nvidia_gpu.bat (or run_cpu.bat),
# above the line that starts ComfyUI
set INFERWAY_API_KEY=your-key

Step 3 · Check the nodes loaded

After the restart, double-click the canvas and search for Inferway. Inferway H3 Generate creates a video. Inferway H3 Resume fetches the video of an existing task without creating or billing a new one. Inferway H3 Cancel cancels a task that is still running on Inferway. Inferway H3 History lists your recent tasks. Inferway Prompt Expand (MiMo) turns a short idea into a full video prompt, billed per token.

With ComfyUI set to Chinese, node names, inputs and hints appear in Chinese.

Step 4 · Generate your first video

First and last frame: open Inferway First and Last Frame from the same templates, load an opening and a closing image, and the model generates the shot between them. Image modes work only while the model list advertises them. The node checks before it creates a task, so an unavailable mode is never billed.

  1. Click Templates in ComfyUI's left sidebar, choose Inferway examples under Extensions, and open Inferway Text to Video. You can also download it from https://github.com/inferway/comfyui-inferway/tree/main/example_workflows and open it with Ctrl+O.
  2. Edit the prompt. Choose a duration of 5 to 10 seconds and a resolution of 1344×768 or 768×1344.
  3. Click Run. While it waits, the node shows your place in the queue, then how long it has been generating. The MP4 is saved under ComfyUI's output/video folder.

Stopping and resuming without paying twice

You submitted a video, but ComfyUI timed out or your browser disconnected. Check the original task first: a local wait ending does not cancel remote generation. Running Generate again creates another order, even with the same prompt and seed, and a delivered order is billed. Use Resume to retrieve an existing task.

The recovery path is: History → identify the original task → Resume → SaveVideo. The History template automatically selects the newest successful task with a downloadable result; with several tasks, confirm which one you need before using that connection.

Understand what stopped locally

Closing a tab, pressing Stop, and reaching a wait limit are different local events. None of them proves that the remote task was cancelled:

Browser tab closed or frontend disconnected: The ComfyUI server may still be waiting, polling, and downloading. Reconnect and inspect the original execution and SaveVideo output before checking history.

Clicked ComfyUI Stop: Local waiting was interrupted; no remote cancellation was requested. Check the original task, then choose recovery or an explicit remote cancellation request.

Node reached wait_timeout_seconds: Its local wait ended; this did not cancel the remote task. Resume the original task ID rather than running Generate again.

Resume hit a network or download error: Retrieval did not complete; this alone does not prove remote generation failed. Keep the original ID, inspect its state and error code, then resume as appropriate.

Find the original task with History

Why not use the default connection immediately? latest_succeeded_id means the newest successful task whose result is still downloadable. It could be another task that finished later, or an older task while your original is still queued. If you want the latest downloadable success, keep the automatic connection; to recover a specific interrupted task, identify it first. If no downloadable success exists, this output is empty and the connected Resume reports invalid_interaction_id.

The displayed charged_amount and currency help match an order, but the ID establishes identity. History also labels availability as downloadable or expired. If an account shows 'No interactions found.', check the account, filter, and record range before interpreting that as cancellation.

  1. Open Templates → Extensions → Inferway examples → Inferway History in ComfyUI's left sidebar, or open the downloaded workflow with Ctrl+O.
  2. Start with a history-only query. The shipped template connects History → Resume → SaveVideo. Disconnect latest_succeeded_id from Resume. In this query canvas, remove the Resume and SaveVideo nodes, leaving History → Recent Interactions, then run it. This keeps an unconfirmed task from being retrieved automatically and prevents an empty-ID Resume from joining the queue.
  3. Select the original account's profile. Start with state=all and the default limit=10 (increase up to 50 if needed). Run the query and read Recent Interactions.
  4. Match the submission time, state, mode, duration, and prompt excerpt, then copy that task's id. History timestamps are UTC and truncated to the minute; do not identify a task solely because it appears first. If an earlier error message includes an ID, compare it with history, or check Console → Video History before continuing.

Resume that exact task

Open the separate Inferway Resume template. Paste the confirmed ID into interaction_id and select a profile that can access it. The template connects Resume's video output to native SaveVideo (format mp4, filename prefix video/resume). Check that no Generate node participates in execution, then run this recovery workflow.

wait_timeout_seconds=0 waits automatically (up to 7200 seconds), or set an explicit local limit between 60 and 7200 seconds. Resume polls and downloads an existing task; it creates no new task and does not regenerate a failed task into a successful one. Handle each task state accordingly:

queued or running: Resume this confirmed ID to keep waiting; it can still time out or eventually fail.

succeeded and downloadable: Retrieve this ID and save it through SaveVideo; recovery is not complete until the download finishes.

failed or cancelled: Read the task error and billing record. Resume cannot guarantee a video and is not a regeneration button.

expired: Download is not guaranteed. Retain the ID and error code and contact support to confirm recovery options; retention extensions are not guaranteed.

Invalid ID, account mismatch, or authentication error: Check the full ID and profile and follow the node's message; do not create a new task as a troubleshooting step.

Verify what you recovered

If only the frontend disconnected and the ComfyUI server already saved the video, use that existing output file directly after verifying it plays.

  1. Task identity: Confirm that Resume's interaction_id output matches the original ID you selected. Connect a string output to PreviewAny if needed; do not expose full IDs in public screenshots.
  2. Usable file: Confirm that SaveVideo saved a playable MP4. If the delivered result includes audio, verify that audio is present; the historical AAC result is case-specific and does not mean every video must contain AAC.
  3. Order records: Compare Console → Billing records to confirm this recovery did not create a new generation order. The original task finishing during recovery may log its original completion fee; that is distinct from creating a second order. Total balance changes alone cannot establish whether recovery added a charge.

To cancel, use the separate Cancel workflow

If you decide to stop the original task, open Inferway Cancel, enter the confirmed interaction_id, select its profile, and run it. Inspect Cancel Status & Charged. This requests remote cancellation; it does not guarantee cancelled status or free cancellation:

outcome=pending: Cancellation is not complete; continue checking the task state.

outcome=cancelled: The server reports cancellation; read charged and the actual order record for billing details.

outcome=delivering: Delivery is already in progress; do not declare cancellation or zero charge.

outcome=delivered: Delivery has already occurred; cancellation cannot retract an already-delivered video.

outcome=refused: The cancellation request was refused; inspect the returned message and task state.

Read charged every time. A successful HTTP response means only that the request was processed, not that cancellation succeeded or was free. For already-delivered tasks, Cancel returns outcome=delivered with charged=true.

Historical acceptance, with its date and scope

The following results are from historical acceptance on 2026-09-21, not a new live test or a claim about a specific disconnection fault. It verifies same-task retrieval and post-delivery cancellation feedback on Linux:

Platform: Linux; Python 3.12.13; ComfyUI 0.37.0; frontend 1.53.6.

Model and request: inferway/minimax-h3-768p, text-to-video, requested 5 seconds at 1344×768.

Initial delivery: MP4 with H.264 video and AAC audio, approximately 5.167 seconds (audio format describes this particular delivery).

Same-ID Resume: Retrieved the same task result and saved it through SaveVideo; new interactions created: 0.

Subsequent same-ID Cancel: Task was already delivered; returned outcome=delivered and charged=true; new interactions created: 0.

Total across all three operations: Generate, Resume, and Cancel had a create delta of 1 / 0 / 0 (exactly one paid create).

Generate and Resume MP4 files have different byte counts and hashes (1,183,507 vs 1,183,484 bytes); we do not claim byte-identical files. Current prices and available modes should be checked in the catalog and console; historical promotional pricing is not reused. This historical evidence is limited to Linux and does not claim equivalent Windows or macOS acceptance.

Troubleshooting

  1. The pack shows IMPORT FAILED, or no Inferway node appears: check that ComfyUI runs on Python 3.10 or later and that the dependency was installed with that same Python, then restart.
  2. The node says no API key is set, or the key is invalid: save the key in Settings → Inferway as in step 2, and check that the node's profile is the one you saved. If you use INFERWAY_API_KEY, restart ComfyUI after setting it; a running ComfyUI does not pick up a new variable.
  3. The template browser has no Inferway examples, or there is no Settings → Inferway: the installed pack is older than 0.1.6. Update it as below and restart ComfyUI.
  4. The node reports that the mode is unavailable: the image mode you wired is not offered right now. Use text-to-video, or first and last frame while it is listed.
  5. The node reports a mode conflict: first/last frame images and reference images were wired to the same node. Use one kind per task.
  6. ComfyUI-Manager refuses the install: install manually as in step 1.
  7. Inferway is not in ComfyUI's built-in API node list: that list only contains nodes that ship inside ComfyUI itself. Inferway is a custom node pack; install it as above.
  8. Does Resume charge for another video generation? The public contract specifies Resume creates no new task; a successful result can be downloaded again without another generation charge. The original order is billed according to its actual completion; recovery does not place a second order.
  9. Can a fixed seed make rerunning Generate free? No. Each execution of Generate creates a new order; a fixed seed does not reuse an existing order. Use the original ID with Resume to retrieve an existing result.
  10. Why did History download another video while mine was unfinished? Its default connection selects the latest downloadable success. Disconnect Resume, query history only, identify the original task, and then use the separate Resume template.
  11. Can I recover an ID I did not save? Check History or Console → Video History. History displays submission time, state, request excerpt, and ID. If multiple tasks look similar, confirm identity before continuing.
  12. Does closing the browser stop generation? Closing it disconnects the frontend; the ComfyUI server may continue waiting and save the video. Stop or local timeout does not send a remote cancellation request.
  13. Can Resume regenerate a failed task? No guarantee. Resume obtains an existing task's state and result without creating another task. Check the failure cause, actual charged value, and billing record; placing another order is a separate decision.
  14. Why can Cancel return a successful response and still show charged? HTTP success means only that the cancellation request was answered. Read outcome for cancellation status and charged for billing; an already-delivered task returns outcome=delivered, charged=true.

Updating

From 0.1.6 the node pack tells you once when a newer version is out. To update, choose Update on Inferway H3 in ComfyUI-Manager, or run git pull in custom_nodes/inferway-comfy if you cloned it, then restart ComfyUI. You can turn the notice off in Settings → Inferway.

No Inferway examples under Templates? Your pack is older than 0.1.6 and cannot remind you yet: update it once now, and it will from then on.