all dispatches
Video Generation APIOct 23, 20269 min read

MiniMax H3 Reference to Video: One Character, Every Shot

A reference pack, a prompt that gives every file a job, a shot list and a voice clip. Here's the step-by-step method for keeping one character identical across a multi-shot MiniMax H3 sequence on each::labs.

MiniMax H3 Reference to Video: One Character, Every Shot

Four shots. One courier in a rust-orange raincoat. A wide establishing shot, a tracking shot through the rain, a close-up as she checks the parcel, a final beat at the door. On paper it's a twelve-second spot. In practice it's four chances for her face to change.

Most people who try MiniMax H3 Reference to Video already know it can hold identity. We covered why in MiniMax H3 Speaks Your Visual Language. What they don't have is a method. They throw nine photos at it, write one long paragraph and wonder why shot three looks like her cousin. This guide is the method, step by step. Everything below runs on each::labs, where the whole MiniMax H3 family lives side by side.

Build the Reference Pack Before You Write a Word

Consistency doesn't start in the prompt. It starts in the pack, because references are the only thing that stays fixed between takes.

For a character, start with three stills: a front-facing portrait in neutral light, a three-quarter view, and a full-body shot that shows the wardrobe clearly. Same lighting, same color grade, same outfit in all three. If one photo is warm tungsten and another is cold overcast, you've asked the model to average two different people, and averaged is exactly what you'll get.

For a product, use front, side and a detail shot of whatever makes it recognizable, on a plain background so the backdrop doesn't become part of the object.

Don't have clean stills? Make them. An image editing model like Nano Banana 2.1 Edit can take one good photo of your character and give you the other angles in matching light, which is often faster than a reshoot.

Add one motion clip if the sequence needs a specific camera language, and a voice clip if your character speaks. We'll come back to both.

Show it from three angles and it stops guessing.
Show it from three angles and it stops guessing.

How MiniMax H3 Reference to Video Reads Your Inputs

Here's what the each::labs request accepts, straight from the model's schema.

Images: up to 9 in reference_image_urls, in JPG, JPEG, PNG, WEBP, HEIC or HEIF, each 30MB or smaller. Videos: up to 3 in reference_video_urls, MP4 or MOV, each clip between 2 and 15 seconds and no larger than 50MB. Audio: up to 3 in reference_audio_urls, WAV or MP3, each 2 to 15 seconds, with a combined length of 15 seconds or less. Audio can't travel alone. It has to be paired with at least one image or video reference. MiniMax's own documentation adds that a single request tops out at 12 reference files across all three types.

The output side is just as specific. duration is a whole number from 4 to 15 seconds, defaulting to 5. ratio defaults to adaptive, which lets the model pick from your inputs, or you can lock it to 21:9, 16:9, 4:3, 1:1, 3:4 or 9:16. resolution is 768P or 2K, with 2K as the default. And the prompt is required, up to 7,000 characters.

Every signal needs an address.
Every signal needs an address.

Write a Prompt That Gives Every Reference a Job

This is the step everyone skips. A reference with no assigned role is a suggestion. The model has to guess whether that video clip is there for its camera move, its lighting or the person in it. Guessing is drift.

MiniMax's answer is plain language. Their H3 announcement shows the pattern: number each input by type, then describe the relationship in words. Their own example reads "Reference the Hitchcock camera movement from Video 1, have the character in Image 2 sing, with the vocals matching Audio 3." No special syntax. Just a sentence per file.

Keep your URL order fixed so the numbers stay predictable, write the roles first and the action second. Shot two:

Image 1, Image 2 and Image 3 show the same woman: a bike courier in her late twenties with a short black bob, a rust-orange raincoat with reflective piping and a grey canvas messenger bag. Keep her face, hair, coat and bag identical to these images throughout. Video 1 is the camera reference: copy its low, smooth tracking move alongside the subject at walking pace. She cycles through a narrow cobbled street at dusk in steady rain, headlight on, glancing once toward the camera. Wet stones reflect amber shopfront light. Shallow depth of field, cinematic grade. Sound: rain on fabric, bicycle chain ticking, distant traffic hiss, no music.

That prompt doesn't re-describe her face in poetic detail, because the images carry it. Text goes to what references can't show: action, place, this shot's light, its sound. Pictures handle identity. Words handle intent.

One more habit worth stealing: write the identity sentence once and paste it unchanged into every shot of the sequence. If the wording drifts between prompts, so will the character.

Plan the Shot List Before You Generate

Each generation runs 4 to 15 seconds, so a sequence is a set of shots you assemble. Plan it on paper first.

Give every shot a framing, an action, a duration and its references. Shot one, a wide of the rainy street with the courier small in frame, 5 seconds, images only. Shot two, the tracking move above, 6 seconds, images plus the camera clip. Shot three, a close-up as she checks the parcel label, 4 seconds, images only with the portrait listed first. Shot four, she knocks and speaks one line at the door, 6 seconds, images plus a voice reference.

Two decisions belong at this stage. First, pick one ratio for the whole sequence and set it explicitly rather than leaving it on adaptive, so a vertical motion reference can't quietly turn one shot vertical. Second, keep the reference set consistent shot to shot. You can reorder images to emphasize the close-up angle, but swapping in a new photo halfway through is how a sequence picks up a stranger.

Here's shot three, written to the same pattern:

Image 1, Image 2 and Image 3 show the same woman: a bike courier in her late twenties with a short black bob, a rust-orange raincoat with reflective piping and a grey canvas messenger bag. Keep her face, hair, coat and bag identical to these images. Tight close-up, static camera. Under a shop awning she pulls a small brown parcel from the bag, wipes rain off the label with her thumb and reads it, a faint smile. Raindrops fall out of focus behind her. Sound: rain drumming on the awning, paper rustle.
A voice is a reference too.
A voice is a reference too.

Give the Voice Its Own Reference

H3 generates stereo audio with every clip, so silence is never the default. If you say nothing about sound, you'll still get some. Shot four is where you stop leaving it to chance.

Add a clean voice clip to reference_audio_urls: a few seconds of the voice you want, dry, without music or room noise underneath. Remember the rules from the schema. It must be 2 to 15 seconds, and it can only ride along with an image or video reference, which is fine here because the three character stills are already in the request.

Then name the job, the same way you did for the camera clip. MiniMax's API documentation uses the phrasing "Voice timbre follows reference audio 1," and that's a good template:

Image 1, Image 2 and Image 3 show the same woman: a bike courier in her late twenties with a short black bob, a rust-orange raincoat with reflective piping and a grey canvas messenger bag. Keep her identical to these images. Medium shot at a dark green front door, rain behind her. She knocks twice, the door opens off-screen, and she holds out the parcel. She says: "Made it before the storm." Voice timbre follows Audio 1. Sound: knocks on wood, rain, the door latch, no music.

Keep the line short. One sentence in a six-second shot leaves room for the timing to land.

Iterate One Variable at a Time

The first pass will be close and wrong somewhere. How you respond decides whether this takes two hours or two days.

Fix one thing at a time. If the coat shifted toward red, fix the references first (is one still warmer than the others?) before you touch the prompt. If the face is right but the motion is wrong, leave the images alone and adjust only the camera clip or the movement sentence.

Treat resolution as a draft setting. Lock motion, framing and identity at 768P, then rerun the approved prompt and pack at 2K for delivery. Same inputs, same instructions, so what you approved is what comes back, just sharper.

Log the prompt, reference order, ratio, duration and resolution of every take you keep. It feels like admin until a client asks for a fifth shot three weeks later.

Write the pattern once and the loom remembers.
Write the pattern once and the loom remembers.

Pin the Opening and Closing With MiniMax H3 Image to Video

Sometimes a shot doesn't need flexible identity. It needs an exact frame. The client approved a specific opening composition, or the final shot has to land on a product layout down to the pixel. That's a job for MiniMax H3 Image to Video.

Its schema is deliberately narrow: a required prompt (up to 7,000 characters), a required first_frame_url, an optional last_frame_url, duration from 4 to 15 seconds and resolution at 768P or 2K. There's no ratio setting because the output follows your first frame. MiniMax's documentation is clear that frame inputs and reference inputs don't mix in one request, so on each::labs they're two separate models.

The trick is to combine them across the sequence rather than inside one call. Generate your reference-driven shots, pull the best frame from shot four, and use it as the first_frame_url for a closing shot whose last_frame_url is the approved end card composition. Because that first frame came from the shot before it, the cut reads as continuous.

The courier hands the parcel through the doorway and steps back into the rain, the camera slowly pulling back and rising to reveal the whole wet street glowing amber, ending on the composition of the final frame. Sound: rain easing, a distant bicycle bell.

For pure exploration before you've built any references, MiniMax H3 Text to Video is the sketchpad. Find the look in text, then commit it to a pack.

Wire the Whole Sequence Into an each::labs Flow

Once the method works by hand, stop doing it by hand. each::labs AI Flows let you chain the steps into one reusable pipeline: an image edit step that generates the matching character angles, a set of reference-to-video steps that share the same pack and identity sentence, and an image-to-video step that takes the last shot's frame and lands it on the approved ending.

Now the identity sentence and reference order live in the flow, not in someone's notes, so a teammate can run shot five without seeing the original prompts. Calling the API directly instead? The request is compact:

{
  "model": "minimax-h3-reference-to-video",
  "input": {
    "prompt": "Image 1, Image 2 and Image 3 show the same woman...",
    "reference_image_urls": ["https://.../front.png", "https://.../three-quarter.png", "https://.../full-body.png"],
    "reference_video_urls": ["https://.../tracking-move.mp4"],
    "ratio": "16:9",
    "duration": 6,
    "resolution": "768P"
  }
}

Swap the model to minimax-h3-image-to-video and the input to first_frame_url plus last_frame_url for the closing shot. If speed matters more than reference control for a particular piece, our look at P-Video 2 Pro and MiniMax H3 covers that trade. For a character who has to survive four shots, though, the pack plus the prompt is the whole game. More options sit in the image-to-video catalog.

Frequently Asked Questions

How many references can MiniMax H3 Reference to Video take?

Up to 9 images, 3 video clips and 3 audio clips, with MiniMax capping a request at 12 files in total. In practice, three to five well-matched images plus one motion clip beat a full load.

How do I tell MiniMax H3 which reference is for what?

Number them by type in the prompt and give each one a sentence: Image 1 to 3 hold the character, Video 1 sets the camera move, Audio 1 sets the voice timbre. MiniMax's own examples use exactly this plain-language pattern. Keep your URL order fixed so the numbers always point to the same files.

Can I use MiniMax H3 image to video and reference to video together?

Not in the same request, since frame inputs and reference inputs are separate modes. Across a sequence, though, they pair well. Build the character shots with references, then hand a frame from the last shot to Image to Video as the first frame and set your approved ending as the last frame.

Why does my character still drift between shots?

Usually it's the pack, not the model. Check for one image with different lighting or a slightly different outfit, an identity sentence that changed between prompts, or a ratio left on adaptive while the inputs vary. Fix those three and most drift disappears.