MiniMax H3 Max · Image to Video
Give It a First Frame, Get the Shot With Sound
- image_url
- last_image_url
- video
- task id
Image-to-video is where most people actually start, because they already have a still they like and want it to move. This node takes that still as the opening frame - optionally a second image as the closing frame - and animates the space between them, with ambience, foley and music generated alongside the picture.
What "Max" means here
MiniMax H3 is MiniMax's 33B omni-modal video model: one context covering text, image, video and audio, so the sound is generated with the shot rather than dubbed over it. It's the first open-weights generation release from the lab behind the closed Hailuo service, and the first open-weights answer to Veo's native audio. "Max" is the fast-generation variant of H3, so you trade a little of the flagship's polish for speed at roughly $0.05 per second of output. This node runs it hosted through SpicyAPI: no GPU, no weights, no 40GB download.
Worth knowing if you're the type who reads licences: the H3 open weights geofence out the US, EU, UK and Korea. That applies to running the local checkpoint. The hosted path this node uses is a different licence and runs globally - which is arguably the most useful thing about paying per call here.
How it works
The node is built from the model's published input schema, so what's on the node is exactly what the API takes. On Run it uploads your frame, prices the job, creates it, polls while showing progress text on the node, downloads the MP4 and hands it back as a ComfyUI VIDEO. Uploaded media is cached per account for 12 hours by content hash, so running a second prompt against the same source image doesn't re-upload it.
Inputs and outputs
Required:
- image_url - the opening frame. It fixes the composition and the subject the clip starts from, so this is the one input to get right; a 16:9 image and a 9:16 intent are a bad marriage.
- prompt - what happens after the opening frame: action, camera, mood.
- duration_seconds - default 8, range 5 to 15. Note the floor is 5 here, not the 3 you get on other H3 variants.
- resolution - 480p or 768p, default 768p.
- enable_prompt_expansion - off by default, and it adds a flat per-request fee. Turn it on when your prompt is a sentence fragment and you want the model to flesh it out; leave it off when you already know what you want.
Optional: last_image_url, a closing frame the clip should resolve to. It can only be sent alongside an opening frame - that's the model's rule, not the node's whim.
Outputs are video (feed Save Video) and task id, the string to quote when you ask support why a job died.
There is no seed and no aspect-ratio widget on this variant. Aspect comes from the opening image; if you need reproducible takes, use one of the H3 variants that exposes a seed.
Installing it
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
Restart, then Settings > SpicyAPI → paste a key from spicyapi.ai/console/keys. Restart once more so the node list is built from your account catalogue. Nothing else installs: the pack has zero declared dependencies and uses ComfyUI's own aiohttp, torch and PyAV. ComfyUI Manager users can just search SpicyAPI and hit install. On a remote box, SPICY_API_KEY in the environment does the same job as the settings field.
Where it bites
Set Max cost per run before your first 15-second 768p attempt, and remember that prompt expansion is a flat add-on per request. Cancelling the node stops you waiting; the task keeps running on SpicyAPI, gets charged if it finishes, and stays in your console for up to 14 days. And if a run dies with a 40004, the model genuinely has no deployment for that combination - read the option name in the message and change it. Failed runs aren't charged unless the model's own page says otherwise.
Inputs (7)
| Name | Type | Default | Description |
|---|---|---|---|
| image_url | IMAGE | Opening frame. It fixes the composition and the subject the clip starts from. | |
| prompt | STRING | Describe what happens after the opening frame: the action, the camera, and the mood. | |
| duration_seconds | INT | 85–15 | Requested output length in seconds, from 5 to 15. |
| resolution | COMBO | 768p | Output resolution. |
| enable_prompt_expansion | BOOLEAN | false | Expand the prompt into a fuller description before generating. Requests with it on add a flat per-request prompt-expansion fee. |
| seed | INT | 00–2147483647 | This model takes no seed, so the number is never sent. Changing it makes ComfyUI run the node again: set 'control after generate' to randomize for a new result on every run; every run is billed. |
| last_image_urlopt | IMAGE | Optional closing frame the clip should resolve to. It may only be sent together with an opening frame. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |