arkennemasis fal · MiniMax H3 Max Extend Video · $0.05-0.32/s
Keep the take going without a visible seam
- video
- video
- video_path
- source
- duration
- expanded_prompt
- seed
- timings
- info
The clip you have, plus what happens next
You generated a five-second shot. It's good, and it ends before anything finishes. Extend Video takes that clip, reads it, and appends new footage that continues it - with a prompt for what should happen next.
The framing the tooltip hands you is the one to internalise: describe the continuation, not the source. The model can already see the source. "He turns and walks toward the doorway, camera follows" is a prompt. Re-describing the man and the room is wasted tokens, and with prompt expansion on, it can actively confuse the continuation.
This is also the tool for building sequences cheaply. Rather than one long expensive generation you can't steer, chain shorter shots and extend each one - which is the same habit people developed on local video models, where a 20-second take is really a relay of shorter ones.
Cost is per second of generated footage at $0.05/s (480p), $0.08/s (768p), $0.16/s (1080p), $0.32/s (2K), plus reference-token charges beyond the 4,096 tokens included with each request ($0.02 per 1,000 extra, prorated). For context, a 5-second 768p extension is about $0.40 before references.
Inputs that matter
- video - the source. Must be 1.625 s to 60 s, up to 50 MB, aspect ratio between 0.4 and 2.5. Long clips in, capped clips out; check the file size before you blame the node.
- prompt - what happens next. Empty is allowed but pointless.
- enable_prompt_expansion - on by default, and it uses the source video to keep the continuation consistent. That's the feature: it can improve consistency, at the cost of processing time.
- duration - seconds of new footage to add, default 5. The actual output may run slightly longer than you asked; that's fal's behaviour, not a bug.
- output -
extended(default) returns the whole source followed by the new footage;continuationreturns only the generated part. This is the setting to think about when you're stitching. - resolution -
480P,768P(default),1080P,2K. The expensive rungs. - aspect_ratio -
auto(default) follows the source. Anything else crops the video to fit the selected ratio, so picking16:9on a vertical source throws picture away. - seed - for a repeatable continuation;
-1leaves it to the model. - enable_safety_checker - on. It moderates both the source video and the prompt.
Guards: max_cost_usd (default $20, checked before upload - a 2K extension of a 60-second clip is exactly the run this catches), reuse_identical_run, extra_json, max_concurrent (default 1).
Outputs
A generous set, and all of it useful when you're chaining: video and video_path, plus source (what you fed in), duration (the real length of what came back), expanded_prompt, seed (the seed actually used - the only way to reproduce a good continuation when you left it at -1), timings, and info with the request id and cost estimate.
Wire video into SaveVideo, PreviewVideo, or the pack's Load Clips / Video Assemble pair if you're joining a multi-shot sequence.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install -r comfyui-arkennemasis/requirements.txt
Restart, then under arkennemasis/fal/Video/MiniMax. Key in the .env beside run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
Where people get burned
extended hides which part is new. You're billed per second of generated footage, but extended hands back source plus continuation as one file, so the length of what you receive has nothing to do with what you paid. When you're assembling a sequence shot by shot, continuation is usually the better answer: you get only the new footage and decide yourself where the cut lands.
A lopsided source gets cropped. Sources between 0.4 and 2.5 aspect are accepted, but any explicit aspect_ratio other than auto crops to fit. If a vertical clip suddenly has its subject half out of frame, this is why.
Style drift between passes. Each extension is a fresh generation; the longer you chain, the more the look wanders from the original. Prompt expansion's source awareness helps, but the fix that actually works is fewer, longer extensions rather than many short ones.
The file-size ceiling bites quietly. 50 MB is generous for a 5-second clip and not at all generous for a 60-second 2K one. Re-encode before you upload rather than discovering the limit in a failed run.
Restart mid-run, no double charge. Every submit is logged in output/fal/_requests.jsonl; paste the request id into fal Recover Result to collect the finished extension, or use fal · History (free) to pull an already-completed run back into the graph.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| video | VIDEO | URL of the video to extend. Must be 1.625 s to 60 s long, up to 50 MB, aspect ratio between 0.4 and 2.5. | |
| prompt | STRING | What happens next. Describe the continuation, not the source. | |
| enable_prompt_expansion | BOOLEAN | true | Automatically enhance the prompt using the source video to help keep the continuation consistent. May increase processing time. |
| duration | INT | 55–15 | Seconds of new footage to add after the source. The actual duration may be slightly longer. |
| resolution | COMBO | 768P | Output video resolution. |
| aspect_ratio | COMBO | auto | Output aspect ratio. 'auto' follows the source video. Other values crop the video to fit the selected ratio. |
| seed | INT | -1-1–2147483647 | Seed for the continuation. Random when omitted. -1 leaves it to the model. |
| output | COMBO | extended | 'extended' returns the whole source video followed by the new footage. 'continuation' returns only the generated continuation. |
| enable_safety_checker | BOOLEAN | true | Moderate the source video and the prompt. |
| max_cost_usdopt | FLOAT | 20.00–100000 | Safety cap. If the estimated cost of this run is above this many US dollars the node stops BEFORE sending anything to fal. 0 = no cap. |
| reuse_identical_runopt | BOOLEAN | true | If these exact inputs (the settings AND the same pictures/clips/audio) were already paid for and the files are still in output/fal, return them instead of paying again - also after a ComfyUI restart. Turn off for a fresh take with the same settings. |
| extra_jsonopt | STRING | Advanced: a JSON object merged into the request last, for any fal field this node has no box for. Example: {"seed": 7}. Leave empty normally. | |
| max_concurrentopt | INT | 11–32 | How many paid fal calls may run at the same time in one run, across every fal node. 1 (default) = one after another. This node starts its paid part only while fewer than this many fal calls are running. Once any fal node fails, the ones still waiting are not started, so nothing more is billed. |
Outputs (8)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| source | STRING | — |
| duration | FLOAT | — |
| expanded_prompt | STRING | — |
| seed | INT | — |
| timings | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |