teamToken Video Extend
How to make one clip longer without re-rolling the whole thing
- video
- video_path
- job_id
- cost_usd
Every closed video model has a length ceiling - Veo does seconds, Kling does five or ten depending on the tier - and the usual way past it is to generate a second clip and hope it cuts together. teamToken Video Extend is the API's actual answer: it takes the job id of a clip you already generated and continues it, so the model sees the tail of the previous segment and picks up from there. It's the difference between "another clip" and "the same shot, longer".
It's also the most limited node in the pack, and mostly that's fine. Its whole job is one hop.
How it works
ref_video_job_id is a STRING, and it's meant to be a wire, not something you type: the job_id output of a teamToken Video node plugs straight into it. The node POSTs to /v1/videos/extend with that id and your prompt, and then follows the same submit-and-poll path as the regular video node - a 202, a polled job, a progress bar, an MP4 streamed into output/, and the same four outputs this time describing the new segment: video, video_path, job_id, cost_usd.
That last output is the useful bit of the design. The extension is itself a job, so its job_id can feed another Extend node. Two or three chained Extends is how you get past the per-model ceiling with continuity - each segment referencing the one before it, each one billed like a fresh generation.
The seed widget, as everywhere else in this pack, is never sent to the API. It only moves ComfyUI's input-equality cache: identical inputs reuse the previous result for free, and changing the seed forces a paid re-run.
The inputs that matter
Required: model, ref_video_job_id, prompt. Optional: aspect_ratio, seed, api_key, server_url.
ref_video_job_id- an empty one is rejected with "ref_video_job_id is required - wire it from a teamToken Video node". That error is the node telling you it has nothing to continue from, not a network problem.prompt- how the extension should continue, not a re-description of what already happened. "she keeps walking toward the camera, same lighting" beats restating the original scene.aspect_ratio- defaults to16:9and is always sent. If your source clip was9:16, leaving this alone gives you a vertical clip with a landscape tail bolted on. Match the original.
Notice what isn't here: there's no duration, no image, and no video input. The length of the extension comes from the model's own default, and the model's name is the only lever. You also don't get a knob for "how much overlap" - that's provider-side behaviour.
Install
Same pack, same three commands:
cd ComfyUI/custom_nodes
git clone https://github.com/TeamToken-store/ComfyUI-teamToken
pip install requests
# restart ComfyUI
Or install ComfyUI-teamToken from ComfyUI-Manager. requests is the only dependency; nothing to download, no GPU involved. Set your key once with export TEAMTOKEN_API_KEY=sk-... or Settings → teamToken → API key, and don't type it into the node's api_key widget unless you're fine with it living in your workflow file.
Where people get burned
The model dropdown isn't filtered. You get the same 39 video models here as on the Video node, and not all of them support extension. Picking one that doesn't gets you a provider error after the request goes out - there's no client-side check stopping you. If you're assembling a chain, start from whichever model's docs actually advertise an extend capability, and keep the tiers consistent between the original and the continuation.
Re-running the upstream Video node invalidates your chain. Extend holds an id, not a copy of the clip. Nudge the source prompt, change the seed, re-run, and you have a brand-new job_id - the Extend node will cheerfully continue that clip instead, and charge you for it. Freeze the upstream node (bypass it or set its seed to fixed) once you've got a take you like.
It bills like a full generation. An extension segment is per-second priced the same as the clip it continues, so a three-hop chain is three charges. Watch cost_usd on each hop rather than discovering the total at the end.
Late-night failures. Since the reference lives on the server, the extension depends on the gateway still resolving that job id. If you re-open a workflow from last week and try to extend, you may get a provider error about the reference rather than a result - the node has only the id to go on, and it will tell you so instead of quietly generating something unrelated.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| model | COMBO | Video model, fetched live from the teamToken catalog | |
| ref_video_job_id | STRING | job_id output of a prior teamToken Video node | |
| prompt | STRING | How the extended segment should continue | |
| aspect_ratioopt | COMBO | Output aspect ratio (default 16:9) | |
| seedopt | INT | 00–18446744073709550000 | Change to force a fresh (paid) generation; identical inputs reuse the cached result |
| api_keyopt | STRING | Overrides the teamToken settings key. ⚠️ This value is saved INTO the workflow file — prefer the teamToken Settings pane or $TEAMTOKEN_API_KEY so your key isn't shared with the workflow | |
| server_urlopt | STRING | Leave empty to use the teamToken settings / env / default gateway |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| job_id | STRING | — |
| cost_usd | STRING | — |