MiniMax H3 reference mix: why 9 + 3 + 3 fails the 12 cap
H3 and H3 Max allow 9 images, 3 videos and 3 audios, but only 12 inputs in total. A Python preflight counter and the cost of images past five.

A reference-to-video request on MiniMax H3 or H3 Max can carry at most 12 inputs in total. The per-type maxima are 9 images, 3 videos and 3 audio clips, but they add up to 15, so you cannot fill all three. Send 9 images and 3 videos, and you have used all 12; a single audio clip pushes the request over.
The full constraint set
MiniMax's H3 announcement says H3 accepts image, video and audio references (read 2026-10-04). The Sume catalog turns that into concrete limits for both ids.
- Images: at most 9.
- Videos: at most 3, each 2-15 s, combined at most 15 s.
- Audios: at most 3, each 2-15 s, combined at most 15 s.
- Images plus videos plus audios: at most 12.
- Audio cannot be the only reference.
Mixes that fit and mixes that do not
The table checks a few common combinations against the rules.
| Images | Videos | Audios | Total | Fits |
|---|---|---|---|---|
| 9 | 3 | 0 | 12 | Yes |
| 9 | 3 | 3 | 15 | No, over 12 |
| 6 | 3 | 3 | 12 | Yes |
| 5 | 2 | 2 | 9 | Yes |
| 0 | 0 | 2 | 2 | No, audio only |
Extra images cost extra on H3
On minimax-h3 the first 5 reference images are free; each extra image is $0.08 list, $0.10 billed. Nine images therefore add four extra, or $0.40 billed. For H3 Max the reference-token overage is not reserved. The rest of the bill is the per-second rate, $0.75 for a 10 s H3 clip at 768p.
Run the check offline
This preflight needs no network or key. Run it before you upload.
def check(images, videos, audios):
errors = []
if images > 9:
errors.append("max 9 images")
if videos > 3:
errors.append("max 3 videos")
if audios > 3:
errors.append("max 3 audios")
if images + videos + audios > 12:
errors.append("max 12 inputs in total")
if audios and not (images or videos):
errors.append("audio cannot be the only reference")
return errors
for mix in [(9, 3, 0), (9, 3, 3), (6, 3, 3), (0, 0, 2)]:
print(mix, check(*mix) or "ok")Sources
Related posts
More in Developers
- Music 1.0 is retiring: moving to the Music Router in one line
Sume Music 1.0 routes keep working but resolve through the Music Router. New code should call POST /v1/music-router/generate. What changes and what does not.
- Nano Banana exact pixels: target_pixels, then resize yourself
Nano Banana renders at a native ratio, not your pixels. Sume maps 1080x1350 to 4:5 and records target_pixels on the job; finish with a resize or crop.
- Next.js ImageResponse RCE fix: safe share card from a Sume job
Next.js 16.3.6 patched a critical ImageResponse RCE. After upgrading, build a share-card route that reads the Sume artifact server-side, not from the URL.
- Next.js 16.3.8 dev-server MCP disclosure and where the Sume key lives
Next.js 16.3.8 fixes a low-severity dev-server MCP disclosure and a high-severity image SSRF. How to keep a Sume API key server-side as you upgrade.
Written by Sume