
Does MiniMax H3 Require a Strict Prompt Format? Template + Rules
How to write MiniMax H3 prompts for omni-reference video: use a six-part formula to define assets, retention, shots, dialogue, sound, and music.
I opened a six-part MiniMax H3 prompt template beside MiniMax's public API documentation because the template was being described as mandatory. The two sources did not say the same thing.
The six-part structure is useful. It forces you to assign jobs to reference assets, separate strong constraints from loose inspiration, and write shots that can actually fit inside the clip. But it is not a required API schema. MiniMax's public examples accept ordinary natural-language prompts, while the separate H3-Context-IR endpoint can turn multimodal inputs into a richer structured prompt.
So this guide treats the six parts as an advanced authoring framework, not magic syntax. You can use it in the official API, adapt it for the MiniMax H3 generator, or keep the same planning logic while using a shorter prompt.
What the six-part format is — and is not
MiniMax H3 accepts text, images, video, and audio, but not in every combination. First- and last-frame images belong to image-to-video. Reference images, videos, and audio belong to reference-to-video. The API does not allow those two modes in one request.
The public video generation guide documents these API-level roles:
first_frameandlast_framefor image-to-videoreference_image,reference_video, andreference_audiofor reference generation- one required text item containing the prompt
Those role values belong in the API request. Labels such as <Subject1>, <Picture1>, <Video1>, and <Audio1> belong inside the prompt. They are readable aliases you create so the instructions stay consistent. They are not API enum values.
The aliases do not bind themselves to uploaded files. This guide numbers assets by upload order and defines every alias at the top of the prompt. That is a writing convention; MiniMax does not document special parsing for these XML-style labels.
The same distinction applies to retention terms such as fully_preserved or attribute_transfer. They can be useful planning labels, but the public API does not validate them as separate fields. The model reads them as part of your prompt.
That leaves us with a practical rule:
Use API roles to upload the assets. Use prompt labels to explain what each asset contributes, what must remain stable, and where it appears in the video.

The six parts at a glance
subject_definitions— name the reusable people, objects, scenes, actions, and audio references.summary— state the intended video and give every uploaded asset one clear job.retention_analysis— separate hard identity constraints from editable or weakly referenced attributes.detailed_description— describe the visible and audible result shot by shot.overall_soundscape— list sounds that exist inside the scene.non_diegetic_music— describe music that only the audience hears.
The order matters as a writing discipline: inventory first, decisions second, execution last. The model can still understand another order, but moving between these six questions prevents omissions.
1. Define subjects, not just files
A file is a container. A subject is the element you want H3 to extract and reuse.
One portrait can provide a face, hairstyle, outfit, and body proportions. One room image can provide the environment. A reference video might provide an action without contributing its performer, clothes, background, or audio.
Write that division explicitly:
subject_definitions:
<Subject1> is the night-shift editor whose facial identity, short dark
hair, navy overshirt, and body proportions come from <Picture1>.
<Subject2> is the apartment interior from <Picture2>, including the
floor-to-ceiling window, low sofa, reading lamp, and city view.
<Subject3> is the slow walk-and-sit motion from <Video1>, transferred
to <Subject1>. Do not copy the performer or background from <Video1>.
<Audio1> is the voice-timbre reference for <Subject1> (S1). It provides
vocal tone and pacing only; do not copy its original words.This example does four useful things:
- It separates identity from motion.
- It prevents the source performer's appearance from leaking into the target character.
- It keeps the apartment tied to one image.
- It distinguishes voice reference from audio reuse.
Use <PictureN> as a composition or appearance reference when the image itself matters to a shot. If the image must be the actual opening or closing frame, upload it with the API role first_frame or last_frame in a separate image-to-video request; do not combine it with reference_video or reference_audio.
Use <VideoN> for whole-clip relationships such as editing rhythm, camera movement, continuation, or source-video editing. If you only need one action from the clip, define that action as a subject and say what must not transfer. And if continuation is the whole point — you are chaining segments into a 60- or 120-second video — the H3 long video planner writes those per-segment prompts for you.
2. Write a summary that assigns jobs
The summary is not a plot synopsis. It is a production brief.
Weak:
A man returns home on a rainy evening and looks out of the window.Better:
summary:
[reference generation + audio reference] Create a 12-second cinematic
interior scene in which <Subject1> enters <Subject2>, sits beside the
window, and speaks one quiet line. <Picture1> supplies identity,
<Picture2> supplies the environment and composition, <Video1> supplies
the walk-and-sit motion, and <Audio1> supplies voice timbre only.The bracketed task label is optional prompt scaffolding. It helps a human reviewer see the intended operation, but it does not replace the actual API roles.
Do not write “use Video1 for everything.” If an asset has three jobs, list the three jobs. If one part must be ignored, say that too.
3. Separate hard constraints from soft references
Not every reference deserves the same strength. A face may need to remain stable while lighting changes freely. A camera rhythm may be inspiration rather than a shot-for-shot copy.
Four visual relationships cover most cases:
fully_preserved— identity, product geometry, clothing, layout, or a keyframe must remain stable.partially_preserved— keep selected features while allowing named changes.attribute_transfer— move an action, expression, outfit, or other trait to a different target.weak_reference— borrow only broad mood, palette, framing, or pace.
For audio, the public API exposes reference_audio. Use the prompt to say whether you want timbre, delivery, rhythm, or acoustic style. It does not promise verbatim preservation of the source signal; keep any exact recording in post-production.
Here is the retention block for the apartment scene:
retention_analysis:
<Subject1> (Shots 1-3): fully_preserved — retain facial identity, short
dark hair, navy overshirt, and body proportions.
<Subject2> (Shots 1-3): partially_preserved — retain room layout,
window position, sofa, and lamp; change the exterior from sunset to rain.
<Subject3> (Shots 1-2): attribute_transfer — transfer only the walking,
turning, and sitting motion to <Subject1>.
<Video1> (timing): weak_reference — borrow the unhurried pace, not its
camera angle, performer, environment, or audio.
<Audio1>: reference — follow the low, tired timbre and measured delivery;
do not copy the original signal or words.These labels only help if the sentence after them is concrete. “Fully preserve the character” is still vague. Name the face, hair, clothing, proportions, or accessories that identify the character.
4. Turn the story into visible shots
detailed_description does the real work. A story says, “He comes home tired.” A shot description says what the viewer can see and hear:
[Shot1] A medium-wide shot faces the apartment entrance. <Subject1>,
the short-haired editor in a navy overshirt, enters from frame left and
closes the door with his right hand. His shoulders hang low. The camera
makes a slow handheld pan to the right. Wet shoes squeak once on the floor.For each shot, write in roughly this order:
- Shot size and composition
- Subject position and first-appearance identity cues
- One main action
- A visible change in expression, posture, light, or object state
- Camera movement, or an explicit static camera
- Sound and dialogue that occur during the shot
The first shot can begin without a timestamp. Give later shots a start time:
[Shot2] At 00:04.000, cut to a side medium shot...
[Shot3] At 00:08.000, cut to a close-up...The timestamp marks the cut, not the duration of the action. Keep the actions physically possible inside each interval. Four seconds is enough to cross a small room and sit if the movement is simple. It is not enough to enter, remove a coat, make tea, answer a call, cross the room, sit, speak, and react.
One short shot, one main action. Split complicated beats.
Dialogue and speaker IDs
For dialogue-heavy prompts, fixed speaker IDs make the source clear:
<Subject1> (S1) says in a low, tired voice,
<d>[English] I thought the rain had stopped.</d>Keep (S1) attached to the same voice throughout the video. If the character speaks off-screen, say so. Write the actual line instead of “he says something about the rain.”
The <d>...</d> wrapper and language tag are useful conventions, not documented API requirements. Their value is practical: the line is easy to find, the language is unambiguous, and the model is less likely to treat narration as dialogue.
5. Keep scene sound separate from music
overall_soundscape describes diegetic sound — audio that could physically exist in the scene:
overall_soundscape:
Low apartment room tone, steady rain against the window, one wet shoe
squeak, soft fabric movement, a distant elevator bell, and the ceramic
click of a mug touching the side table.Avoid dumping dialogue here. Dialogue belongs in the shot where it happens, because timing and lip movement depend on that placement.
Specific sounds work better than “cinematic ambience.” Name the floor creak, refrigerator hum, paper rustle, traffic wash, or wind pressure that belongs to the room.
6. Give audience-only music its own instruction
non_diegetic_music is the score. The character cannot hear it.
non_diegetic_music:
A sparse felt-piano motif at a slow tempo, very low in the mix. Hold
silence under the spoken line, then return with one unresolved note as
the final close-up holds.Four details are usually enough: instrument, tempo, emotional direction, and where the music changes. If you do not want a score, write N/A or say “no non-diegetic music.”
Copy-paste six-part template
subject_definitions:
<Subject1> is [person, animal, object, action, or scene], whose
[identity / appearance / motion] comes from <Picture1> or <Video1>.
<Picture2> is the [composition / appearance] reference for [ShotN].
<Video1> supplies [whole-clip camera movement / editing rhythm / source
video / continuation context].
<Audio1> supplies [voice timbre / delivery / rhythm / acoustic style].
summary:
[task type] Create a [duration]-second video showing [subject, setting,
and core event]. [Asset] supplies [one explicit job].
retention_analysis:
<Subject1> (Shots [N-N]): [fully_preserved / partially_preserved /
attribute_transfer / weak_reference] — [specific retained and editable
features].
<Audio1>: [reference / weak_reference] — [what to follow and what not
to copy].
detailed_description:
The target video uses [one main visual style] with [lighting, palette,
and texture].
[Shot1] A [shot size] shows [composition]. <Subject1> is at [position].
[One main action]. [Visible state change]. The camera [movement/static].
[Scene sound or dialogue].
[Shot2] At [start time], cut to [composition]. [One main action].
<Subject1> (S1) says in [voice description],
<d>[Language] Exact dialogue.</d> The camera [movement/static].
[Shot3] At [start time], cut to [composition]. [One main action].
The shot ends on [specific final-frame state].
overall_soundscape:
[Room tone, weather, footsteps, cloth, props, impacts, and other sounds
that exist inside the scene].
non_diegetic_music:
[Instrument, tempo, mood, mix level, and cue changes — or N/A].Delete empty definitions. A prompt with one image does not need fake <Video1> and <Audio1> lines. The structure is a checklist, not paperwork.
If an image must be the actual first or last frame, move it out of this reference template and use an image-to-video request with the corresponding API role.
Eight mistakes that make reference prompts harder to follow
1. Treating every uploaded image as a keyframe
An identity photo is not automatically a first frame. Define what you need from it. Use a keyframe only when the actual composition or frame must anchor a shot.
2. Calling an extracted action “the video”
If you need a hand gesture from a clip, define the gesture and transfer it. Referring to the entire video invites the model to borrow the performer, background, camera, and sound as well.
3. Writing “use this as reference”
Reference which feature? Face, outfit, room layout, lens movement, voice timbre, timing? Name it.
4. Giving one asset an unlimited job
“Use Video1 for everything” creates conflicts. Split appearance, action, pacing, camera, and audio into separate instructions.
5. Writing plot instead of frames
“A tense interview happens” is a story. Positions, actions, expressions, camera movement, and timed lines are a shot plan.
6. Packing too many actions into one shot
Reduce the action count before adding adjectives. A clean four-second gesture is more usable than eight unfinished beats.
7. Renumbering subjects or speakers
Once a character is <Subject1> and (S1), keep those labels for the full prompt.
8. Treating an audio reference as an exact soundtrack
“Preserve this recording” and “follow this voice timbre” are different intentions. The public reference role does not guarantee exact signal reuse, so keep any recording that must survive unchanged in post-production.
A three-step production routine
Step 1: Make an asset ledger
Before writing prose, list each upload and complete this sentence: “This file provides ___, but must not provide ___.” This catches most reference conflicts before you spend a generation.
Step 2: Write the shots before the style paragraph
Divide the duration into realistic intervals. Give every interval one main action and one final state. Then add style, lighting, and texture around that skeleton.
Step 3: Iterate one constraint at a time
Check identity, action completion, dialogue timing, and final-frame editability. Change only the line connected to the failure. Rewriting the whole prompt makes it impossible to tell which instruction helped.
The bottom line
MiniMax H3 does not need six headings to accept a prompt. You need the six headings when a pile of images, clips, voices, and constraints becomes hard to reason about.
Start with the asset jobs. Lock only the features that truly matter. Turn the event into timed, visible shots. Keep environmental sound and audience-only music separate. If your setup is simple, shorten the template. If it is complex, the structure earns its space.
For text or the image inputs available in the site UI, try the prompt in the MiniMax H3 generator or browse reusable ideas in the H3 prompt library. For reference video, reference audio, or any input role not exposed in the site UI, use the official API and check the MiniMax H3 API guide. For broader model context, see what MiniMax H3 is and the MiniMax H3 vs. Seedance comparison.
More Posts

MiniMax H3 Martial Arts LoRA: 3 Files, 2 Triggers
MiniMax H3's martial arts LoRA has three files and two trigger words. The highest step count is not the newest version — here is which one fits your shot.


MiniMax H3 vs Seedance 2.0: Specs, Cost, 4 Tests
MiniMax H3 and Seedance 2.0 compared on specs and cost, plus four tests: game UI, 2D-3D fusion, video replication, and long-prompt continuity.


What Is MiniMax H3? What It Can Make, How Good It Is, What It Costs
MiniMax H3 (Hailuo 3) generates video and audio together in one pass. What kinds of clips it makes, what it can't do, how to start, and pricing from $0.08/second.

Generate your first video with GPT Image 2.5 — right now
Create videos from text or a reference image, with ready-to-use prompt examples to help you get started. No downloads — just open it in your browser.