arkennemasis fal · MiniMax H3 Text to Video LoRA · $0.0625-0.20/s
Lock a style in, at 25% above the base rate
- target_audio
- video
- video_path
- expanded_prompt
- info
Take the plain MiniMax H3 text-to-video node, add a JSON widget, add about 25% to the per-second price. That's this node, and the widget is the only thing worth writing about - because loras is where a ComfyUI habit leads you straight into an error.
loras is a list of adapters fal already has
The default is [{"path": "", "scale": 1}]. Note the empty string: that's a template, not a working value. You fill in a path that fal can fetch and a strength:
[{"path": "https://.../style-adapter.safetensors", "scale": 0.8}]
Multiple entries are allowed. What you can't do is point it at your local LoRA folder - this field is the hosted endpoint's own adapter slot, so you need an adapter uploaded or trained on fal's side (their trainer is the usual route). Paste in broken JSON and the node refuses the run at validation, before the upload, which means a free failure rather than a billed one.
Why you'd pay the premium
Style and character locking. Asking a video model for "the same look every time" in prose is a losing game across a multi-shot sequence; an adapter at a fixed scale is how you actually hold it. The rate for this endpoint is $0.0625/s at 480p, $0.075 at 768p, $0.1625 at 2K and $0.20 at 4K against $0.05–$0.16 for the non-LoRA endpoint. On a 10-second 2K shot that's a difference you'll notice, so don't use it because it's there.
The other inputs
prompt and duration (5–15s) are the shot. resolution defaults to 2K, and remember that 480P and 768P are native while 2K and 4K are refinements of a 768P base - the LoRA was applied to the transformer, so it survives the refinement, but you're paying for an upscale pass either way. aspect_ratio defaults to 16:9 with seven options. prompt_expansion_mode rewrites your prompt before generation (fast ~1s, balanced picks per request, quality up to ~30s), which matters more on a LoRA node than elsewhere: a rewrite can dilute the exact trigger phrasing your adapter was trained against. If a LoRA seems weak, set this to disabled and check the expanded_prompt output to see what was sent.
target_audio pins a clip (2s minimum, 15MB) over H3's generated soundtrack - replacement, not mixing, and the only way to get your own audio on an H3 clip because the model won't produce silence.
Pack plumbing: seed, enable_safety_checker, max_cost_usd (default $20, 0 off), reuse_identical_run, extra_json for fal fields the node has no box for, and max_concurrent.
Outputs: video, video_path, expanded_prompt, info.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install httpx
Manager → arkennemasis works too. Then:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
in the .env beside run_nvidia_gpu.bat, followed by a restart.
Traps
- The default
pathis empty and will fail. Someone files this as a bug every few weeks. reuse_identical_runreturns files you've already paid for when the settings and inputs match - includingloras, so changingscaledoes trigger a real run.max_concurrentof 1 means everything queues; if a node fails, queued fal calls are dropped rather than started, so a broken graph can't run up a bill behind your back.- Restart mid-wait and the job still finishes on fal. Take the id from
output/fal/_requests.jsonland use fal Recover Result - the download is free.
Inputs (13)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt for video generation | |
| duration | INT | 55–15 | The duration of the video in seconds. |
| resolution | COMBO | 2K | The resolution of the generated video. 480P and 768P are native generation modes; 2K and 4K upscale a 768P base result. |
| seed | INT | -1-1–2147483647 | Random seed. A random seed is selected when omitted. -1 leaves it to the model. |
| enable_safety_checker | BOOLEAN | true | If set to true, the safety checker will be enabled. |
| prompt_expansion_mode | STRING | balanced | How much effort to spend rewriting the prompt before generation. 'disabled' skips prompt expansion. 'fast' returns in about a second. 'balanced' picks per request. 'quality' spends up to ~30s on a richer prompt. Empty leaves it out. |
| aspect_ratio | COMBO | 16:9 | The aspect ratio of the generated video. |
| loras | STRING | [{"path": "", "scale": 1}] | List of LoRA adapters to apply to the transformer. JSON. Required. |
| target_audioopt | AUDIO | Optional URL of an audio clip at least 2 seconds long (maximum 15 MB) to pin to the generated soundtrack. Longer clips are trimmed to the requested video duration, keeping the beginning. The original audio replaces the output soundtrack, padded with silence if shorter than the video, without changing playback speed. Exceptionally high sample rates may be resampled to 96 kHz. Accepts an HTTP(S) URL or a base64 data UR | |
| 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 (4)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| expanded_prompt | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |