MiniMax H3 LoRA · Reference to Video
Nine Images, Three Clips and Your Own LoRAs in One Shot
- reference_image_urls
- reference_video_urls
- reference_audio_urls
- loras
- video
- task id
Reference-to-video is the answer to the problem character-consistency docs keep circling: you have a handful of images of a character, a location and a prop, and you want them all in one moving shot without the model reinventing anyone's face. This node hands MiniMax H3 up to nine images, three video clips and three audio clips, plus up to three of your own LoRAs, and asks it for a 3-to-15 second shot with stereo sound.
What it actually is
MiniMax H3 is the Shanghai lab's 33B omni-modal video model - the one behind the closed Hailuo service, opened to weights in August 2026 and the first credible open-weight answer to Veo's welded-in audio. This node does not run H3 on your machine. It calls SpicyAPI, which runs it on their GPUs and hands back a VIDEO. Nothing to download, no VRAM check, works on a laptop.
The "LoRA" in the name is the point of this variant: you can attach your own H3-trained weights by URL and they get applied server-side on top of the base model. It is priced from about $0.06 per second of output, with a per-reference charge on top for each image and audio clip, and reference video seconds billed exactly like output seconds.
How it works
The node is generated from the model's published input schema, so the widgets you see are literally what the API accepts. When you hit Run, it uploads your reference media, takes a quote, creates a task under an idempotency key, polls until the job finishes, then downloads the MP4 and converts it to a ComfyUI VIDEO. Same image bytes re-uploaded within 12 hours reuse the previous upload, so tweaking your prompt does not re-send the same nine pictures.
The inputs that matter
- prompt (required) - the one place beginners stumble. Refer to your references by number: "image 1 walks through the doorway from video 2, ambient Audio: rain on metal". The author's own tooltip says to describe the shot the references should produce, sound included.
- duration_seconds - 3 to 15, default 5. resolution starts at 480p; aspect_ratio defaults to 16:9. Loosen the resolution until you like the shot - a 15-second 1080p run is where the bill gets real.
- reference_image_urls / reference_video_urls / reference_audio_urls - autogrow socket groups. Connect one and a new free socket appears next to it, up to nine images, three clips (15 seconds total) and three audio clips.
- loras - takes the
lorasoutput of a SpicyAPI LoRA node (a direct.safetensorsURL plus a strength, chainable). Up to three. - seed - same seed and settings, same result.
Outputs are video and a task id string, which is what support asks for if a run dies.
Installing it
ComfyUI Manager → search SpicyAPI, install, restart. Or:
cd ComfyUI/custom_nodes
git clone https://github.com/spicyapi-ai/comfyui-spicyapi
There are no Python dependencies to resolve - the pack installs nothing and uses what ComfyUI already ships. Then paste a key from spicyapi.ai/console/keys into Settings > SpicyAPI and restart once so the node list comes from your account. On a headless box, set SPICY_API_KEY instead. Wire the video output into Save Video.
Where people get burned
The three unavoidable ones. Cost: every run is billed, and reference images and reference video seconds add line items, so quote-check a 1080p 15-second attempt before you queue six of them. Set Max cost per run in Settings and the node refuses anything above it before charging a cent. Cancelling the run in ComfyUI stops waiting, not the job - the task keeps generating server-side, is charged if it succeeds, and lands in your console for up to 14 days. And seeds default to fixed on purpose, because a billed node that silently re-rolls on re-queue would be rude; switch control after generate to randomize when you want a new take.
Inputs (9)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Refer to the references by number and describe the shot they should produce, including the sound. | |
| aspect_ratio | COMBO | 16:9 | Output aspect ratio. |
| resolution | COMBO | 480p | Output resolution. |
| duration_seconds | INT | 53–15 | Requested output length in whole seconds, from 3 to 15. |
| seed | INT | 00–2147483647 | Same seed and settings, same result. Set 'control after generate' to randomize to get a new result on every run; every run is billed. |
| reference_image_urlsopt | COMFY_AUTOGROW_V3 | Reference images, up to nine. Each one adds a per-reference charge. | |
| reference_video_urlsopt | COMFY_AUTOGROW_V3 | Reference videos, up to three and 15 seconds in total. Their seconds are billed like output seconds. | |
| reference_audio_urlsopt | COMFY_AUTOGROW_V3 | Reference audio clips, up to three. Each one adds a per-reference charge. | |
| lorasopt | SPICY_LORAS | Up to three LoRA weight files trained for MiniMax H3, each with its own strength. |
Outputs (2)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| task id | STRING | The SpicyAPI task id, for the console logs or support. |