MiniMax H3 Video Reference (Soze)
Point the API at Nine Images and Ask for a Video of the Same Subject
- image_batch
- image_1
- image_2
- image_3
- image_4
- image_5
- image_6
- image_7
- image_8
- image_9
- video
- video_url
- task_id
- status
The first MiniMax node gives you one first frame. This one gives the model a whole gallery. MiniMax H3 Video Reference is the same hosted Hailuo H3 API as its sibling, but instead of a single start image it ships up to nine reference images to the model, each tagged as a reference_image. If you're trying to keep a character, a product, or an art style consistent across shots, this is the node you want - one strong reference is a vibe, nine is a spec sheet.
Everything else is shared with the plain MiniMax H3 Video node: same MINIMAX_API_KEY requirement, same async submit-and-poll mechanism, same 4–15s duration, same resolution (2K/1080P/768P) and ratio menu. The one deliberate difference in defaults: ratio starts at adaptive rather than 16:9, because when your input is a batch of reference frames, matching their aspect is usually the right call. Set a fixed ratio only when you specifically want to force a different canvas.
Reference inputs
You've got two ways to feed it:
image_1throughimage_9- individual slots, each its own IMAGE. Connected slots take precedence.image_batch- one IMAGE batch input (capped at nine frames) that the node fans out for you. Ignored if anyimage_Nslot is connected.
So for a quick run, wire one batch and be done; for a controlled setup where you care which frame is which, use the individual slots. Each is sent with role=reference_image, which is how MiniMax knows these are identity/style anchors rather than an animation start point.
The remaining inputs are the boring-but-important ones: poll_interval (seconds between status checks, default 10) and poll_timeout (max wait, default 900s). Outputs mirror the base node: video, video_url, task_id, status.
The honest caveats
This is a paid cloud call every single run, and reference-driven generation is the priciest flavor - more frames, more tokens, longer tasks. Plan your nine images before you queue a batch, not after you see the bill. Two more real gotchas: with no reference images connected the node skips cleanly (good - no wasted credits), and a blank prompt short-circuits the same way. Neither will silently burn money.
Also worth knowing: reference images give the model guidance, not a guarantee. Faces drift, styles soften, physics stays physics. For a character you need to be truly consistent across many shots, the community pattern is reference frames plus a strong prompt describing the subject - the references carry identity, the words carry the action. Treat the first run as a look-see, then tighten.
Install
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt
Then export MINIMAX_API_KEY (optionally MINIMAX_BASE_URL for the CN endpoint). No local models, no VRAM pressure - the only thing this node consumes is your API credits and your patience with polling.
Inputs (16)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | Text prompt (<= 7000 chars). | |
| duration | INT | 64–15 | Clip length in seconds (4-15). |
| resolution | COMBO | 2K | 3 options: 2K, 1080P, 768P |
| ratio | COMBO | adaptive | 'adaptive' matches the reference frames; or pick a fixed ratio. |
| poll_intervalopt | INT | 101–60 | Seconds between status polls. |
| poll_timeoutopt | INT | 90030–3600 | Max seconds to wait before giving up. |
| image_batchopt | IMAGE | Optional IMAGE batch (capped at 9 frames). Ignored if any image_N slot is connected. | |
| image_1opt | IMAGE | Reference image slot 1 (role=reference_image). Overrides image_batch when connected. | |
| image_2opt | IMAGE | Reference image slot 2 (role=reference_image). Overrides image_batch when connected. | |
| image_3opt | IMAGE | Reference image slot 3 (role=reference_image). Overrides image_batch when connected. | |
| image_4opt | IMAGE | Reference image slot 4 (role=reference_image). Overrides image_batch when connected. | |
| image_5opt | IMAGE | Reference image slot 5 (role=reference_image). Overrides image_batch when connected. | |
| image_6opt | IMAGE | Reference image slot 6 (role=reference_image). Overrides image_batch when connected. | |
| image_7opt | IMAGE | Reference image slot 7 (role=reference_image). Overrides image_batch when connected. | |
| image_8opt | IMAGE | Reference image slot 8 (role=reference_image). Overrides image_batch when connected. | |
| image_9opt | IMAGE | Reference image slot 9 (role=reference_image). Overrides image_batch when connected. |
Outputs (4)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_url | STRING | — |
| task_id | STRING | — |
| status | STRING | — |