MiniMax H3 reference limits: 9 images, 3 videos, 3 audio, 12 total
The MiniMax H3 reference-to-video limits and the errors Sume returns when you cross them. Counts, clip lengths, the audio-only rule and image price.

MiniMax H3 accepts up to 9 reference images, 3 reference videos and 3 audio clips in one request, and no more than 12 files in total. MiniMax's model card and API docs state those counts; Sume enforces the counts on both minimax-h3 and minimax-h3-max, and its catalog notes add that audio cannot be the only reference.
Counts are from MiniMax's model card and API docs; clip lengths and rules from Sume's catalog notes in code and the Video generation docs, read 2026-09-29.
What are all the limits?
| Input | Limit | Source |
|---|---|---|
| Images | Up to 9 | MiniMax model card; Sume code |
| Videos | Up to 3; total duration up to 15 seconds | MiniMax API docs; Sume catalog notes 2–15 s each |
| Audio | Up to 3; total duration up to 15 seconds | MiniMax API docs; Sume catalog notes 2–15 s each |
| All types | 12 files at most | MiniMax model card; Sume code |
| Audio alone | Not allowed; add an image or a video | Sume catalog notes |
| Prompt | Up to 7,000 characters | MiniMax API docs |
Where do references go in the request?
In input_references on POST /v1/videos, each entry typed image_url, video_url or audio_url. For a first or last frame use frame_images instead; if you send both fields, frame_images wins and the request is image-to-video. See the first and last frame post.
What happens if I go over?
Sume checks the counts when it validates the request, so an over-limit request is refused at submit instead of becoming a job. In current code the message names the limit, for example that minimax-h3 accepts at most 9 image input_references.
Does a reference always change the price?
Reference videos and audio do not add a per-file charge in Sume's pricing code. On minimax-h3, reference images after the fifth do; see MiniMax H3 reference images: what you pay past the fifth.
Sources
Related posts
More in Developers
- Promise.allSettled vs Promise.all for a batch of API jobs
Promise.allSettled waits for every promise and reports each outcome; Promise.all rejects on the first failure. For paid API jobs, use allSettled.
- Python API rate limiting: stay under a per-minute limit
Pace Python API calls with an asyncio limiter set under the API's per-minute budget, keep polling on its own budget, and back off on 429 retry-after.
- Python requests default timeout: there isn't one
Python Requests has no default timeout: without timeout= a call can hang indefinitely. Set (connect, read) on every call, and keep it short for job APIs.
- Real time speech to text API: what a file-based API can do
Sume's speech to text API isn't real time: it transcribes recordings of up to 10 minutes at a URL. Chunked recordings give near-live transcripts.
Written by Sume