TensorScale MiniMax H3 Video Reference (Soze)
Image, video, and audio slots in one node
- reference_image_1
- reference_image_2
- reference_image_3
- reference_image_4
- reference_image_5
- reference_image_6
- reference_image_7
- reference_image_8
- reference_image_9
- reference_video_1
- reference_video_2
- reference_video_3
- reference_audio_1
- reference_audio_2
- reference_audio_3
- video
- video_path
- request_id
- config
- status
The sibling of the MiniMax H3 video node, and the one to pick when you have source material instead of just a prompt. Where the plain H3 node conditions on first/last frames, this one is true reference-to-video-and-audio: nine image slots, three video slots, three audio slots, and a text field for raw URLs. It's the most reference-rich node in the TensorScale family, and the one with the most ways to blow past the API's size limit - so read the gotcha section before you wire a big video into it.
The inputs
Core set is the same as the sibling: prompt, duration_seconds, aspect_ratio (with the same aspect_ratio_override escape hatch), seed. Then the references:
reference_image_1throughreference_image_9- images that define characters, settings, objects.reference_video_1throughreference_video_3- motion/style references from existing clips.reference_audio_1throughreference_audio_3- the voice-cloning / native-sound inputs. A short clip of a voice here is how H3 makes the speaker sound like that person.reference_uris- a multiline text field where each line istype|https://...(or a bare URL whose extension implies the type). Anything pasted here is appended after the socket references, so it's the escape hatch for material you have as a public URL rather than a local asset.
The prompt is where you wire it together and describe the sound: "The narrator in reference_audio_1 introduces the hero from reference_image_1, who runs through the market in reference_video_1." Yes, the prompt is the mix console - H3's audio comes from the same generation pass, not a separate TTS node bolted on later.
How it works
TensorScale runs /v2/MiniMax-H3/ref2va synchronously with a model-scoped key (TENSORSCALE_API_KEY_MINIMAX_H3, falling back to TENSORSCALE_API_KEY). Media is inlined as base64 data URIs by default, and this is where the 10 MiB body cap bites hardest in the whole pack - a video reference inlined as base64 will exceed it almost immediately. The tooltips on the video slots say it plainly: turn on use_fal_upload, or feed raw URLs through reference_uris. use_fal_upload pushes the connected media to FAL's CDN, which means it needs a working FAL_KEY too.
Outputs: video, video_path, request_id, config, status - the standard TensorScale set.
Install and key
From the Soze pack ("Quality of Life Nodes for ComfyUI"), via ComfyUI Manager or:
cd ComfyUI/custom_nodes
git clone https://github.com/SozeInc/ComfyUI_Soze.git
pip install -r ComfyUI_Soze/requirements.txt
Restart, then set TENSORSCALE_API_KEY or TENSORSCALE_API_KEY_MINIMAX_H3 (environment variable or .env in the repo root). Don't commit keys.
Common issues
- Video references silently fail. They blew past the 10 MiB cap when inlined. Use
use_fal_uploadorreference_uriswith a public URL - not optional for video. - Audio reference doesn't clone the voice. The audio needs to be clean and short; a noisy clip gives a noisy voice.
- Key scope errors. This endpoint needs the MiniMax scope; a generic key or the wrong model-scoped variable won't authenticate.
Inputs (28)
| Name | Type | Default | Description |
|---|---|---|---|
| prompt | STRING | — | |
| duration_seconds | FLOAT | 5.01–60 | Target length. Aligned server-side to the 24 fps / 17n+5 frame grid. |
| aspect_ratio | COMBO | 16:9 | 8 options: 16:9, 9:16, 1:1, 4:3, 3:4, 21:9, +2 |
| seed | INT | 11010–4294967295 | — |
| reference_urisopt | STRING | One reference per line: 'type|https://...' with type image/video/audio, or a bare URL whose extension implies the type. Appended after the sockets. | |
| aspect_ratio_overrideopt | STRING | Any W:H from 1:4 to 4:1. Replaces the dropdown when set. | |
| num_inference_stepsopt | INT | 502–200 | — |
| flow_shiftopt | FLOAT | 12.00–50 | — |
| audio_flow_shiftopt | FLOAT | 3.00–50 | — |
| use_fal_uploadopt | BOOLEAN | false | Upload connected media to FAL's CDN and send URLs. Strongly recommended for video/audio references. |
| image_formatopt | COMBO | PNG | 2 options: PNG, JPEG |
| api_key_envopt | STRING | TENSORSCALE_API_KEY_MINIMAX_H3 | Environment variable holding the model-scoped key. Falls back to TENSORSCALE_API_KEY when unset. |
| timeoutopt | INT | 180060–7200 | Read timeout in seconds. These endpoints are synchronous — the socket stays open for the whole generation. |
| reference_image_1opt | IMAGE | Image reference slot 1. | |
| reference_image_2opt | IMAGE | Image reference slot 2. | |
| reference_image_3opt | IMAGE | Image reference slot 3. | |
| reference_image_4opt | IMAGE | Image reference slot 4. | |
| reference_image_5opt | IMAGE | Image reference slot 5. | |
| reference_image_6opt | IMAGE | Image reference slot 6. | |
| reference_image_7opt | IMAGE | Image reference slot 7. | |
| reference_image_8opt | IMAGE | Image reference slot 8. | |
| reference_image_9opt | IMAGE | Image reference slot 9. | |
| reference_video_1opt | VIDEO | Video reference slot 1. Use use_fal_upload — inline video rarely fits the 10 MiB body cap. | |
| reference_video_2opt | VIDEO | Video reference slot 2. Use use_fal_upload — inline video rarely fits the 10 MiB body cap. | |
| reference_video_3opt | VIDEO | Video reference slot 3. Use use_fal_upload — inline video rarely fits the 10 MiB body cap. | |
| reference_audio_1opt | AUDIO | Audio reference slot 1 (voice cloning / native sound). | |
| reference_audio_2opt | AUDIO | Audio reference slot 2 (voice cloning / native sound). | |
| reference_audio_3opt | AUDIO | Audio reference slot 3 (voice cloning / native sound). |
Outputs (5)
| Name | Type | Description |
|---|---|---|
| video | VIDEO | — |
| video_path | STRING | — |
| request_id | STRING | — |
| config | STRING | — |
| status | STRING | — |