arkennemasis fal · MiniMax H3 Max Styles 16-bit Pixel · $0.08/s
Video in a style the prompt can't ruin
- image
- video
- video_path
- seed
- info
Style locked in the endpoint, not in your prompt
You can get a pixel-art look from a general video model with the right prompt and enough luck. This endpoint removes the luck: the 16-bit pixel style is applied automatically, and your prompt describes only the scene, the action, the camera and the sound. No "retro SNES sprite art, 16-bit, dithering" incantation, no style drift when you change a word, no fighting the model's default realism.
That's the trade. You give up control of the look and get consistency across shots - which, if you're making a sequence, is the thing you were going to spend an afternoon failing to hold with prompts.
How it works
This is an H3 Max style endpoint: text prompt in, 768p video with audio out, durations 5–15 seconds. Audio is included in the price rather than generated as a separate pass, so describing a sound effect in your prompt is not wasted. You can optionally feed a first-frame image, and if you do, its aspect ratio sets the output canvas and the aspect_ratio box is ignored.
Cost is flat for the tier: $0.08 per second at 768p, audio included. Five seconds is $0.40, fifteen seconds is $1.20. No 480p rung and no 1080p rung to think about.
Inputs that matter
- prompt - scene, action, camera, sound. Describe what happens; don't describe the style, because the node applies it. This is the adjustment people miss: a prompt stuffed with style keywords fights the endpoint's own pipeline for no gain.
- image - optional first frame. The tooltip's advice is worth following: use pixel artwork for the most consistent style. Feeding it a photoreal frame into a pixel endpoint is asking it to translate, and translations wobble.
- duration - seconds, default 5, and the endpoint supports 5 to 15.
- aspect_ratio -
21:9,16:9(default),4:3,1:1,3:4,9:16. Only used for text-only generation; ignored when you supply an image. - seed -
-1lets the model pick. Set a value when you want the same scene twice.
Plus the pack's shared guards on every fal node: max_cost_usd (default $20, checked before upload, 0 turns it off), reuse_identical_run (identical inputs return the already-paid result instead of buying a second one), extra_json (raw JSON merge for anything the widgets don't cover) and max_concurrent (default 1 - one paid fal call at a time across the whole run).
Outputs
video (to SaveVideo, PreviewVideo, or the pack's Video Assemble), video_path, seed (the one actually used, which matters when you left it at -1 and loved the result) and info with the request id, cost estimate, saved files and fal's raw answer.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/Hishamahmer/comfyui-arkennemasis
pip install -r comfyui-arkennemasis/requirements.txt
Restart ComfyUI, then it's under arkennemasis/fal/Video/MiniMax - the styles nodes sit alongside the general H3 ones. Key line in the .env next to run_nvidia_gpu.bat:
FAL_KEY=your-key-from-fal.ai/dashboard/keys
Where people get burned
Writing style into the prompt. "16-bit pixel art, retro game, sprite" in a prompt for a node that applies 16-bit pixel styling is at best neutral and at worst noisy. Save the tokens for the scene.
Expecting 1080p. This endpoint is 768p, full stop, and the price is fixed per second accordingly. If you need bigger, upscale locally afterward - a pixel-art clip survives upscaling far better than most styles.
Feeding it a photoreal first frame. The first frame sets the canvas and anchors the look, so the more unlike pixel art your input is, the more the model has to convert, and conversion is where the seams appear.
Chaining clips and losing the palette. Each run is independent. If you're building a sequence, keep the seed and the first-frame source stable, or accept that shot four will have a slightly different colour ramp than shot one.
Billing is per generated second, so duration is your budget dial. Fifteen seconds is three times a five-second clip. Do the motion test at 5 and extend once you're happy.
A crash mid-wait doesn't cost extra. Submits are logged in output/fal/_requests.jsonl; the job finishes on fal and fal Recover Result collects it by request id, free.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Describe the scene, action, camera and sound. The 16-bit pixel style is applied automatically. | |
| duration | INT | 55–15 | Requested video duration in seconds. |
| aspect_ratio | COMBO | 16:9 | Video aspect ratio for text-only generation. Ignored when image_url is provided. |
| seed | INT | -1-1–2147483647 | Random seed. Omit to choose one automatically. -1 leaves it to the model. |
| imageopt | IMAGE | Optional first-frame image. Use pixel artwork for the most consistent style. When provided, its aspect ratio determines the output canvas. | |
| 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 | — |
| seed | INT | — |
| info | STRING | JSON: request id, cost estimate, saved files and fal's full answer. |