arkennemasis fal · MiniMax H3 Max Turbo Text to Video · $0.025-0.08/s
What \"turbo\" buys, and what it costs per second
- target_audio
- video
- video_path
- timings
- expanded_prompt
- info
Every text-to-video model in the world is priced by the second now, and this node's job is to be the cheap, fast lane for MiniMax H3 - fal's post-trained turbo variant, tuned for stronger prompt adherence and better aesthetics, running on co-optimised inference. Nothing to load, nothing to download. Type a prompt, pick a resolution, pay for the seconds you asked for.
Worth being clear about why you'd use the hosted one at all: H3's open weights are real, but the community licence excludes the US, EU, UK and South Korea from running them, and the model is a 33B monster with no published consumer hardware floor. This endpoint is globally available and has no VRAM requirement. That's the whole case for it.
How a run goes
The node reads FAL_KEY from your install's .env, checks the inputs, estimates the cost and refuses if it's above max_cost_usd, uploads nothing much (you're sending text), submits - that's the one billed call - waits with live status, then drops the file into output/fal/minimax_h3-max-turbo_text-to-video/ and shows it on the node. Failures before the submit step never bill. ComfyUI's Cancel cancels the job on fal too, so you're not leaving a render running out of sight.
Inputs worth thinking about
prompt and duration (5–15s) are the two you'll touch every time. Longer is billed linearly, so five seconds is the sane place to iterate and fifteen is for the take you've already validated.
resolution - 480P, 768P or 1080P, default 768P. Read the tooltip before you reach for 1080P: it's latent refinement from a native 768P source, not a native 1080p generation, and it costs the most. If you're delivering at 1080p anyway, it can still be the cheaper road than generating at 768p and running a separate upscaler, because you're not paying another API.
aspect_ratio defaults to 16:9, which is why this node has the widget while the image-to-video sibling doesn't - there's no input picture to infer a canvas from.
prompt_expansion_mode is the quiet one. balanced spends about a second rewriting your prompt before generation; quality can spend up to ~30 seconds on a richer rewrite; disabled sends exactly what you typed. The node hands back the expanded_prompt output so you can see what was actually used - if a video went somewhere weird, check that string before you blame the seed.
target_audio pins an audio clip (2s minimum, 15MB max) over the generated soundtrack. H3 always produces audio, so this is replacement, not addition - useful when you already have narration, and the thing to know if you were hoping for a silent clip. You don't get silence from this model.
The rest is pack-wide plumbing: max_cost_usd ($20 default cap, 0 off), reuse_identical_run, extra_json for fal fields the node has no box for, and max_concurrent (1 by default, meaning one paid fal call at a time across the entire run).
Outputs are video (VIDEO - wire it to Save Video or the pack's assembly nodes), video_path, timings, expanded_prompt and info, the JSON with request id, estimate, saved files and fal's raw answer.
Install
Manager → search arkennemasis, or clone it and install the one dependency:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install httpx
Then, in the .env next to run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
Restart. No key field on the node, by design.
Where people trip
- Same output twice, different seed.
reuse_identical_runis on by default and returns the files you already paid for when the settings and inputs match. Flip it off for a fresh take; leave it on for cheap re-runs after a graph tweak downstream. - The 1080P surprise. It's the priciest option and it's an upscale path. Check the tooltip, then check
max_cost_usd. - A wall of fal nodes that trickles.
max_concurrent: 1on every node means they queue. Raise it where you want parallel calls - and note that once any fal node fails, the queued ones are never started, which is a feature when you're spending money. - Restart mid-render. Grab the request id from
output/fal/_requests.jsonland pull the finished job down with fal Recover Result - free, because nothing is submitted.
Inputs (12)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt for video generation | |
| duration | INT | 55–15 | The duration of the video in seconds. |
| resolution | COMBO | 768P | The native generation resolution, or 1080P latent refinement from a native 768P source. |
| 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. 'balanced' returns in about a second. 'quality' spends up to ~30s on a richer prompt. |
| aspect_ratio | COMBO | 16:9 | The aspect ratio of the generated video. |
| 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 (5)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| timings | STRING | — |
| expanded_prompt | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |