arkennemasis fal · MiniMax H3 Reference to Video LoRA · $0.0625-0.20/s
The LoRA is a JSON field, not a checkpoint
- reference_image_1
- reference_image_2
- reference_image_3
- reference_image_4
- reference_image_5
- reference_image_6
- reference_video_1
- reference_video_2
- reference_video_3
- reference_audio_1
- reference_audio_2
- reference_audio_3
- video
- video_path
- expanded_prompt
- info
Same node as MiniMax H3 Reference to Video, with one extra required widget and a 25% higher per-second rate. That extra widget is loras, and it's where everyone's expectations go wrong first: you don't point it at a file on your disk, you don't drop a .safetensors into models/loras, and nothing in ComfyUI's LoRA stack is involved. You give fal a URL to an adapter that already lives on their side, in JSON.
What loras actually wants
The default value is [{"path": "", "scale": 1}], which is a template you're meant to fill in - an empty path is not a valid adapter. You replace it with something like:
[{"path": "https://.../your-adapter.safetensors", "scale": 0.9}]
It's a list, so more than one adapter is legal, and scale is the strength per adapter. The tooltip is blunt: "List of LoRA adapters to apply to the transformer. JSON. Required." Two consequences follow. First, this node is only useful if you have an adapter hosted somewhere fal can fetch - typically one you trained through fal's own trainer. Second, the JSON has to parse: a stray trailing comma or a smart quote from a copy-paste and the node fails during input validation, before anything is uploaded, so at least it's free.
If you were hoping to pin a character with a LoRA you trained locally... that's not this path. This is the hosted endpoint's own adapter slot.
The rest of the node, briefly
Everything from the plain Reference to Video node is here: six image sockets, three video sockets, three audio sockets, 12 files maximum, prompt referring to assets as Image 1, Video 1, Audio 1.
Reference pricing carries over too-ish: the model card for this endpoint lists $0.0625/s at 480p, $0.075 at 768p, $0.1625 at 2K and $0.20 at 4K - roughly a 25% premium over the non-LoRA endpoint, which is your LoRA tax on top of the adapter's own cost. Resolution defaults to 2K, aspect_ratio to adaptive (let the references pick the shape), and duration is 5–15 seconds billed per second.
prompt_expansion_mode: balanced picks per request, fast about a second, quality up to ~30s. Since your prompt references numbered sockets, watch the expanded_prompt output when a rewrite is on - it's the difference between "the LoRA didn't work" and "the rewrite dropped my reference."
Plumbing: enable_safety_checker, max_cost_usd ($20 default), reuse_identical_run, extra_json, max_concurrent (1 = one paid fal call at a time across the run).
Outputs are video, video_path, expanded_prompt and info - the last one being the JSON with request id, cost estimate, saved files and fal's full response. If a LoRA silently did nothing, info is where you'd look to confirm the adapter was actually in the request fal received.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install httpx
Or ComfyUI Manager → arkennemasis. Put the key in the .env next to run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
Restart. No key widget on the node - the pack reads that file and nothing else.
Gotchas
- Empty
path→ the run is refused. This is the default state of the node, so don't be surprised. - A local
.safetensorsis not apathvalue. It needs to be reachable by fal. - Same inputs, same output.
reuse_identical_runis on by default; raising a LoRA'sscalechanges the inputs, so you'll get a real re-run, but if you're only tweaking something downstream of the node you'll get the old file back for free. - Everything queues at
max_concurrent: 1, and once a fal node fails, the waiting ones are never started. Annoying when iterating, welcome when you're spending. - Killed ComfyUI mid-render? The job finished on fal anyway. Copy the request id from
output/fal/_requests.jsonlinto fal Recover Result and download it without paying again - especially worth knowing on this node, where a 2K run isn't cheap.
Inputs (24)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt for video generation. Refer to reference assets by their modality and order in the reference lists: Image 1, Image 2, Video 1, Audio 1, and so on. | |
| 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 | adaptive | The aspect ratio of the generated video. |
| loras | STRING | [{"path": "", "scale": 1}] | List of LoRA adapters to apply to the transformer. JSON. Required. |
| reference_image_1opt | IMAGE | URLs of subject/style reference images, referenced in the prompt as Image 1, Image 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_image_2opt | IMAGE | URLs of subject/style reference images, referenced in the prompt as Image 1, Image 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_image_3opt | IMAGE | URLs of subject/style reference images, referenced in the prompt as Image 1, Image 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_image_4opt | IMAGE | URLs of subject/style reference images, referenced in the prompt as Image 1, Image 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_image_5opt | IMAGE | URLs of subject/style reference images, referenced in the prompt as Image 1, Image 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_image_6opt | IMAGE | URLs of subject/style reference images, referenced in the prompt as Image 1, Image 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_video_1opt | VIDEO | URLs of motion/reference video clips (2-15 seconds each, combined duration at most 15 seconds), referenced in the prompt as Video 1, Video 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_video_2opt | VIDEO | URLs of motion/reference video clips (2-15 seconds each, combined duration at most 15 seconds), referenced in the prompt as Video 1, Video 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_video_3opt | VIDEO | URLs of motion/reference video clips (2-15 seconds each, combined duration at most 15 seconds), referenced in the prompt as Video 1, Video 2, and so on. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_audio_1opt | AUDIO | URLs of reference audio clips (2-15 seconds each, combined duration at most 15 seconds), referenced in the prompt as Audio 1, Audio 2, and so on. Images, videos, and audio can be provided individually or together. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_audio_2opt | AUDIO | URLs of reference audio clips (2-15 seconds each, combined duration at most 15 seconds), referenced in the prompt as Audio 1, Audio 2, and so on. Images, videos, and audio can be provided individually or together. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| reference_audio_3opt | AUDIO | URLs of reference audio clips (2-15 seconds each, combined duration at most 15 seconds), referenced in the prompt as Audio 1, Audio 2, and so on. Images, videos, and audio can be provided individually or together. Reference images, videos, and audio clips must add up to at most 12 files. Each socket may carry a batch; they are sent in socket order (the first picture of socket 1 is number 1). | |
| 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. |