Nodes/arkennemasis - ChatGPT / Codex / fal AI nodes/arkennemasis fal · MiniMax H3 Reference to Video LoRA · $0.0625-0.20/s
ComfyUI Node

arkennemasis fal · MiniMax H3 Reference to Video LoRA · $0.0625-0.20/s

The LoRA is a JSON field, not a checkpoint

By Hishamahmer·Created 3 months ago·Updated 10 days ago· 11
arkennemasis fal · MiniMax H3 Reference to Video LoRA · $0.0625-0.20/s
  • 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
◄prompt►
◄duration5►
◄resolution2K►
◄seed-1►
◄enable_safety_checkertrue►
◄prompt_expansion_modebalanced►
◄aspect_ratioadaptive►
◄loras[{"path": "", "scale": 1}]►
◄max_cost_usd20.0►
◄reuse_identical_runtrue►
◄extra_json►
◄max_concurrent1►

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 .safetensors is not a path value. It needs to be reachable by fal.
  • Same inputs, same output. reuse_identical_run is on by default; raising a LoRA's scale changes 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.jsonl into fal Recover Result and download it without paying again - especially worth knowing on this node, where a 2K run isn't cheap.
Categoryarkennemasis/fal/Video/MiniMax

Inputs (24)

NameTypeDefaultDescription
promptSTRINGText 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.
durationINT55–15The duration of the video in seconds.
resolutionCOMBO2KThe resolution of the generated video. 480P and 768P are native generation modes; 2K and 4K upscale a 768P base result.
seedINT-1-1–2147483647Random seed. A random seed is selected when omitted. -1 leaves it to the model.
enable_safety_checkerBOOLEANtrueIf set to true, the safety checker will be enabled.
prompt_expansion_modeSTRINGbalancedHow 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_ratioCOMBOadaptiveThe aspect ratio of the generated video.
lorasSTRING[{"path": "", "scale": 1}]List of LoRA adapters to apply to the transformer. JSON. Required.
reference_image_1optIMAGEURLs 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_2optIMAGEURLs 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_3optIMAGEURLs 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_4optIMAGEURLs 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_5optIMAGEURLs 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_6optIMAGEURLs 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_1optVIDEOURLs 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_2optVIDEOURLs 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_3optVIDEOURLs 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_1optAUDIOURLs 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_2optAUDIOURLs 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_3optAUDIOURLs 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_usdoptFLOAT20.00–100000Safety 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_runoptBOOLEANtrueIf 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_jsonoptSTRINGAdvanced: 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_concurrentoptINT11–32How 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)

NameTypeDescription
videoVIDEO—
video_pathSTRING—
expanded_promptSTRING—
infoSTRINGJSON: request id, cost estimate, saved files and fal's full answer.