MiniMax H3 on Sume: 9 images, 3 videos, 3 audio, 12 in total check
On Sume, minimax-h3 and minimax-h3-max take at most 9 reference images, 3 videos and 3 audio clips, 12 in all, and audio cannot be alone. Check it in Python.

What are the reference limits for MiniMax H3 on Sume?
Nine reference images, three reference videos and three reference audio clips, with no more than 12 references in total. Audio cannot be the only reference: send at least one image or video next to it. The limits are the same for minimax-h3 and minimax-h3-max.
The three per-type caps add up to 15, so the total of 12 is the rule that bites. Nine images plus three videos is already 12, and one extra audio clip is rejected.
The audio rule trips people who start from a music track. A soundtrack on its own is not a reference here: pair it with a still of the subject or a short clip of the motion, and the model can use the audio next to something it can see. Native stereo audio is generated for these models anyway, so a reference track is for steering, not for adding sound.
Rules and the resolutions they ride on
| Rule | minimax-h3 | minimax-h3-max |
|---|---|---|
| Reference images | At most 9 | At most 9 |
| Reference videos | At most 3 | At most 3 |
| Reference audio | At most 3 | At most 3 |
| References in total | At most 12 | At most 12 |
| Audio only | Rejected | Rejected |
| Clip length | 5 to 15 s | 5 to 15 s |
| Resolutions | 480p, 768p | 480p, 768p, 1080p |
Python check before you submit
Count what you plan to send and let the function name the rule that fails. It stays offline, so it fits in a unit test or a pre-commit hook.
def check_h3_refs(images=0, videos=0, audios=0):
errs = []
if images > 9:
errs.append("more than 9 images")
if videos > 3:
errs.append("more than 3 videos")
if audios > 3:
errs.append("more than 3 audio clips")
if images + videos + audios > 12:
errs.append("more than 12 references in total")
if audios and not (images or videos):
errs.append("audio cannot be the only reference")
return errs
print(check_h3_refs(images=9, videos=3))
print(check_h3_refs(images=9, videos=3, audios=1))
print(check_h3_refs(audios=2))Where the references go in the request
On POST /v1/videos, put them in input_references as image_url, video_url and audio_url entries, each a public HTTPS URL. If you also send frame_images, the frame images win and the request becomes image-to-video, so the references are not used. A first-and-last-frame clip and a reference clip are two separate requests.
The 1080p option on minimax-h3-max is a latent refinement of a native 768p render, which matters for references too: a reference image does not need to be 1080p to be useful, and a very large file only slows your upload. Keep every reference URL public and reachable over HTTPS, because a link that cannot be fetched comes back as an attachment error that is caused by your input, not by the model.
If you need more than 12 references, pick what carries the identity or the motion and drop the rest. Twelve well-chosen references usually say more than a pile of near-duplicates, and the offline check above tells you which rule you hit before the API does. Log the returned list in your job record so a support question about a rejected request has an answer in one line.
Sources
Related posts
More in Developers
- Music-only Short: Timeline silence mode with a soundtrack bed
Build a Short with no voice: audio mode silence plus a soundtrack. The bed plays alone at the default -16 dB with no amix loss. Fields, limits, tail rule.
- Nearest supported aspect ratio per Sume image model, in Python
A model rejects an aspect ratio it does not list. Read the catalog, pick the closest ratio it accepts, generate, then crop to the exact shape you need.
- NestJS raw body controller to verify an AI video webhook signature
Enable rawBody in NestFactory, read req.rawBody in a controller and check Sume's sume-v1 HMAC before you act on a job.completed video event.
- Never set toleranceSeconds to 0 on a Sume webhook verifier
toleranceSeconds 0 skips the timestamp check, so a captured delivery verifies forever. See the replay and a WebCrypto verifier that rejects stale ones.
Written by Sume