arkennemasis fal · MiniMax Hailuo 02 Standard Text to Video · $0.045/s
27 cents a shot, and the cheapest way to test a scene idea
- video
- video_path
- info
Words in, a six-second 768p video out, at $0.045 a second - about 27 cents for the six-second default. Three inputs. That's the entire node.
MiniMax's Hailuo sits in the small club of closed video models the community names when it asks "what made this?" - the same sentence Kling and Veo appear in. Unlike Kling, Hailuo has no model you can host, and unlike the newer open omni-modal releases from the same lab, this 02-generation endpoint is API-only. So the honest question isn't whether to use an API, it's which tier. Fast is 512p and about ten cents for six seconds; this is 768p at roughly 27; Pro is 1080p for a flat 48. Standard is the sweet spot for anything you're going to actually look at.
The three inputs
- prompt - required. Text-to-video means the model invents frame, camera, light and action, so describe motion rather than a still-life. "A copper kettle steaming on a stove, slow push in, morning light through a window" gives it something to animate; a pile of adjectives gives it a poster.
- duration -
6or10seconds, default6. Priced per second, so ten seconds is about 45 cents. - prompt_optimizer - default
true, so the model rewrites your prompt before generating. Good default here, because text-to-video is unforgiving of vagueness; switch it off when a specific phrasing matters more than fluency. - Plus the pack's shared four: max_cost_usd (default $20, checked before any upload), reuse_identical_run, extra_json, max_concurrent (default 1 - the run-wide cap on simultaneous paid fal calls).
What it costs and how the run goes
The estimate comes from the duration box at $0.045 a second, and the live price badge on the node uses the same rule, so the number you see is the number the guard checks. Then the standard sequence for every fal node in this pack: one billed submit, polling with status and elapsed time shown on the node, the MP4 downloaded to output/fal/fal-ai_minimax_hailuo-02_standard_text-to-video/. The fal client here is standard-library HTTP, so this node installs nothing into your Python environment.
No seed comes back. A video re-roll is another 27 cents, which is why the sensible pattern is: draft the idea cheaply, then spend on the version you keep. If you need a specific composition, generate a still first and use the image-to-video node instead - text-to-video is best for establishing shots, scenery, and B-roll where the model's own interpretation is welcome.
Outputs
video (native ComfyUI VIDEO - into a save node, an assembler, anything downstream), video_path (the file path as a string), and info - JSON with the fal request id, cost estimate, saved files and fal's full answer.
Install
ComfyUI Manager → search comfyui-arkennemasis → install. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart, then one line in the .env in the folder holding run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
There's no key field on the node on purpose: a typed key would be saved verbatim into every workflow you export. The pack's requirements.txt mentions httpx, but that's solely for its ChatGPT-login nodes - the fal family, this node included, needs nothing installed.
Troubleshooting
Output that ignores your intent is usually a prompt problem, and the fix is motion words, not more adjectives. Output that ignores your wording is usually prompt_optimizer doing its job - turn it off and re-run. Output that looks soft is 768p being 768p; if you need it sharper, that's the Pro endpoint at 1080p and a flat 48 cents.
Long generations are normal: polling has no fixed timeout, the wait runs off the UI thread so ComfyUI stays responsive, and Cancel cancels the request on fal, not just on your canvas. If a fal node in a run fails, the fal nodes still waiting don't start - no silent spending on the rest of a batch. And if you restart ComfyUI while a job is in flight, don't run it again: the request is logged in output/fal/_requests.jsonl, and the free Recover Result node in the same pack fetches the finished video by id.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| duration | COMBO | 6 | The duration of the video in seconds. 10 seconds videos are not supported for 1080p resolution. |
| prompt_optimizer | BOOLEAN | true | Whether to use the model's prompt optimizer |
| 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 (3)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |