arkennemasis fal · MiniMax Hailuo 02 Pro Text to Video · $0.48/video
Two inputs, 48 cents, no starting frame to hide behind
- video
- video_path
- info
The sparest node in this pack: a prompt box, a prompt-optimizer switch, and $0.48. That's the entire interface, because Hailuo 02 Pro in text-to-video mode generates a six-second 1080p clip from words alone.
It's also the node where you feel the difference between text-to-video and image-to-video most sharply. With an image input you're controlling composition and letting the model handle motion; here you're asking the model to invent the whole frame, the camera, the lighting and the action, from a sentence. That's why text-to-video is where the technology's remaining weaknesses live, and why most people who care about a specific shot reach for the image-to-video version and a generated first frame instead. This node earns its place for B-roll, abstract transitions, scenery, and anything where you genuinely want the model's idea.
And it has to be hosted: Hailuo is MiniMax's closed video service. There are no weights to download, at any VRAM, ever. So the question isn't whether to use an API, it's whether this API justifies 48 cents a shot over the 512p Fast tier - and for an establishing shot you're going to reuse, yes.
The two inputs
- prompt - required. Describe the scene and, crucially, the motion and camera: what moves, what the camera does, what the lighting is doing. A still-life description of a scene tends to give you a still-life video.
- prompt_optimizer - default
true, meaning the model rewrites your prompt before generating. Usually helpful here, since text-to-video is unforgiving of vagueness; turn it off when you want your exact wording to be what the model sees.
Then the pack's shared four: max_cost_usd (default $20, checked before upload), reuse_identical_run, extra_json, max_concurrent (default 1, the run-wide cap on simultaneous paid fal calls).
Cost
$0.48 per video, flat, per run. There's no duration or resolution widget to trade against it - six seconds at 1080p is what the endpoint sells. For a run of iterations, remember that a video gives you no seed back, so "one more take with the same prompt" is another 48 cents rather than a free re-roll. Cheaper habits: write the shot description once, generate with the Fast endpoint first to check the motion idea reads, then spend the Pro money on the version you'll keep.
Outputs
video (native ComfyUI VIDEO - send it to a save node or any downstream video node), video_path (the file as a string), and info, JSON containing the fal request id, the cost estimate, the saved files and fal's full answer. Results are written to output/fal/fal-ai_minimax_hailuo-02_pro_text-to-video/.
Install
ComfyUI Manager → search comfyui-arkennemasis → install, or from a shell:
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
Restart ComfyUI, then add the key line to the .env in the folder holding run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
The fal half of this pack installs no packages and downloads no models - it's standard-library HTTP - and there is no key box on the node, so a shared workflow can't leak your key.
Notes and caveats
Two prompts for the price of one is the thing people forget about prompt_optimizer: your text and the model's rewrite are different prompts, and the difference shows up most on short, vague inputs. If a run surprises you, the first thing to test is the switch, not the wording.
Long runs are normal, and this pack handles them properly: polling has no fixed timeout, the node shows elapsed time and queue status, ComfyUI stays responsive because the wait is off the UI thread, and Cancel cancels the job on fal as well as locally. Failures are contained - once a fal node errors, the fal nodes still queued in that run don't start. And if the app restarts mid-wait, the free Recover Result node in the same pack retrieves the finished clip by id from output/fal/_requests.jsonl, so a crash doesn't cost you the 48 cents.
Inputs (6)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| 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. |