Nodes/KIE.ai Nodes Next/KIE • Reuse Completed Video
ComfyUI Node

KIE • Reuse Completed Video

Stop re-rendering the take you already paid for

By felipederosilva·Created 2 months ago·Updated 3 days ago· 3
KIE • Reuse Completed Video
  • config
  • video
  • url
  • task_id
  • all_urls_json
  • historical_credits
◄task_id►
◄result_index0►

What it is

Give it a KIE task ID from a finished video job and it returns the clip as a native VIDEO socket. No submission, no second charge.

Video is where this stops being a nicety. A Kling or Seedance take is the most expensive thing in a typical graph, and the community's standing complaint about hosted models is exactly that per-call metering adds up faster than a subscription habit trains you to expect. Building your finish-and-edit half against a frozen clip instead of a live generator is the direct answer to that. Iterate on the assembly, the music fit, the ducking - with the picture fixed.

How it works

The ID goes to KIE's task lookup. The node requires the task to be in success state and refuses anything else with a message naming the state, which is usually the answer to "why is my output empty" - the job is generating, not broken.

From the completed payload it collects all result URLs and filters for video extensions (.mp4, .mov, .webm, .mkv), falling back to the whole list if nothing matches. result_index chooses between them: video endpoints sometimes return more than one file, and asking for an index beyond the count gets you an error that names how many candidates exist.

Then it downloads and wraps the clip as a ComfyUI VIDEO object, ready for preview, assembly, or export.

historical_credits reports the original spend recorded on the task. It does not add anything to your balance - there is no create-task call in this node at all, which is what makes the "never counts credits twice" claim true by construction rather than by bookkeeping.

Inputs and outputs

  • task_id - required. Paste the ID. Do not wire a generation node in here; the source comment warns about it directly, because a connected generator will happily execute and charge you before handing over a fresh ID.
  • result_index - 0 to 20, default 0.
  • config - optional KIE_CONFIG, for legacy workflows. Leave it empty.

Outputs: video, url, task_id, all_urls_json, historical_credits.

Chain it straight into KIE • Preview Video to watch it (persistent file under output/KIE-Previews/) or KIE • Assemble Video + Music if it's one of the takes you're joining - remember that node needs matching resolution and frame rate across takes.

Where to get the ID

  • The generator's own task_id output in the session that made it.
  • KIE • Task Board, which lists the last twenty IDs this ComfyUI profile submitted with state, result URLs and reported spend.
  • KIE • Load Generation Recipe → task_id, if you recorded the generation. That's the one that survives a reinstall.

Install

cd ComfyUI/custom_nodes
git clone https://github.com/felipederosilva/ComfyUI-KIE-Nodes-Next
python -m pip install -r ComfyUI-KIE-Nodes-Next/requirements.txt

Then save the key once: Settings → KIE.ai Nodes Next → Connection → Paste / replace KIE.ai API key. Retrieval needs it, spends nothing.

Where people get burned

  • Timeout ≠ failure. The most common reason you end up here is that the generation node gave up waiting on a long video job. Go to KIE • Task Board, confirm the task actually succeeded, then retrieve by ID. Re-running the generator is the expensive mistake.
  • Not a cache. Every execution re-queries KIE and re-downloads from the returned URL. If those URLs stop resolving, the retrieval fails - so export the clip with KIE • Save Video when you decide to keep it.
  • Model availability churns. KIE's catalog changes; models get retired. A task that succeeded last month is still retrievable, but the node that made it may have changed or disappeared from the menu after a catalog refresh. The task ID is the durable artifact.
  • Wiring a generator into the ID. Free to do in the UI, expensive in practice. Paste.
CategoryKIE Next/Utility/Tasks

Inputs (3)

NameTypeDefaultDescription
task_idSTRING—
result_indexINT00–20—
configoptKIE_CONFIG—

Outputs (5)

NameTypeDescription
videoVIDEO—
urlSTRING—
task_idSTRING—
all_urls_jsonSTRING—
historical_creditsFLOAT—