MiniMax H3 video generation
MiniMax's H3 model, called directly against MiniMax rather than through a broker. It generates 5–15 second clips at 2K (2560×1440) at 24 fps with a native stereo audio track, and covers five input modes: text-to-video, first-frame, last-frame, first-and-last-frame, and reference-to-video with up to nine reference images plus three video and three audio clips.
Unlike most engines here there is no operation discriminator — the mode is inferred from which media fields you populate:
| Mode | Populate | aspectRatio |
|---|---|---|
| Text-to-video | nothing but prompt | a concrete ratio (not adaptive) |
| Image-to-video | firstFrameImage | ignored — derived from the image |
| Last-frame | lastFrameImage | ignored |
| First and last frame | both firstFrameImage and lastFrameImage | ignored |
| Reference-to-video | any of referenceImages (≤9), referenceVideos (≤3), referenceAudios (≤3) | ignored |
Default choice: resolution: "2K", duration: 5, aspectRatio: "16:9". Every H3 job exceeds the 100-second request timeout — always submit with wait=0.
The request shape
A single videoGen step on SubmitWorkflow. engine is the only discriminator:
{
"$type": "videoGen",
"input": {
"engine": "minimax-h3",
"prompt": "…",
"resolution": "2K",
"duration": 5
}
}Text-to-video
Text-to-video is the one mode that requires a concrete aspectRatio — MiniMax rejects adaptive when there is no image to derive geometry from. If you leave it at the default, 16:9 is substituted for you.
POST https://orchestration.civitai.com/v2/consumer/workflows?wait=0
Authorization: Bearer <your-token>
Content-Type: application/json
{
"steps": [{
"$type": "videoGen",
"input": {
"engine": "minimax-h3",
"prompt": "A golden retriever puppy running along a sunny beach, waves splashing, cinematic slow motion",
"aspectRatio": "16:9",
"resolution": "2K",
"duration": 5
}
}]
}/v2/consumer/workflowsRequest body — edit to customize (e.g. swap the image URL or prompt)
Image-to-video
Pass firstFrameImage to animate forward from a still. aspectRatio is ignored — the output geometry follows the image.
{
"engine": "minimax-h3",
"prompt": "Pull focus to the people in the background and add steam rising from the bowl",
"firstFrameImage": "https://image.civitai.com/.../first-frame.jpeg",
"resolution": "2K",
"duration": 5
}/v2/consumer/workflowsRequest body — edit to customize (e.g. swap the image URL or prompt)
Last frame
Pass lastFrameImage instead to generate the run-up that ends on the supplied still.
{
"engine": "minimax-h3",
"prompt": "The camera slowly pushes in until it settles on this composition",
"lastFrameImage": "https://image.civitai.com/.../final-frame.jpeg",
"resolution": "2K",
"duration": 5
}/v2/consumer/workflowsRequest body — edit to customize (e.g. swap the image URL or prompt)
First and last frame
Supply both and H3 interpolates between them.
{
"engine": "minimax-h3",
"prompt": "A smooth cinematic transition between the two compositions",
"firstFrameImage": "https://image.civitai.com/.../start.jpeg",
"lastFrameImage": "https://image.civitai.com/.../end.jpeg",
"resolution": "2K",
"duration": 5
}/v2/consumer/workflowsRequest body — edit to customize (e.g. swap the image URL or prompt)
Reference-to-video
Guide generation with up to nine reference images, three reference video clips, and three reference audio clips. Reference media cannot be combined with firstFrameImage/lastFrameImage — MiniMax treats those as different task types, and mixing them is rejected with a 400.
{
"engine": "minimax-h3",
"prompt": "The character from the references walks through a rain-soaked night market",
"referenceImages": [
"https://image.civitai.com/.../subject-a.jpeg",
"https://image.civitai.com/.../subject-b.jpeg"
],
"resolution": "2K",
"duration": 5
}Reference audio is how you drive a spoken performance — describe the line in the prompt and the voice timbre follows the supplied clip.
/v2/consumer/workflowsRequest body — edit to customize (e.g. swap the image URL or prompt)
Reference media must be publicly reachable
MiniMax fetches referenceVideos and referenceAudios server-side, from its own infrastructure. Signed URLs that expire, private buckets, and internal hostnames all fail with an opaque 400. Host the media somewhere publicly fetchable for the lifetime of the job. Images passed via firstFrameImage, lastFrameImage, and referenceImages go through the Civitai image pipeline first and don't have this restriction.
Parameters
The schema in the API reference is authoritative.
| Field | Default | Notes |
|---|---|---|
engine | — ✅ | "minimax-h3" |
prompt | — ✅ | Up to 7000 characters. |
resolution | "2K" | "2K" is the only value H3 accepts today; MiniMax has a cheaper 768P tier in flight. H3's 2K is natively generated rather than upscaled. |
duration | 5 | Integer seconds, 5–15. |
aspectRatio | "adaptive" | "adaptive", "21:9", "16:9", "4:3", "1:1", "3:4", "9:16". Only read for text-to-video, where adaptive is not allowed. |
firstFrameImage | — | Single image used as the opening frame. |
lastFrameImage | — | Single image used as the closing frame. |
referenceImages[] | [] | Up to 9. First 5 free, then billed. Cannot be combined with first/last frame. |
referenceVideos[] | [] | Up to 3, 2–15 s each and ≤15 s in total, ≤50 MB, MP4/MOV. |
referenceAudios[] | [] | Up to 3, 2–15 s each, ≤15 MB, WAV/MP3. Must accompany a reference image or video. |
watermark | false | Adds MiniMax's AIGC watermark to the output. |
Image limits: 256–5760 px per side, aspect ratio between 0.4 and 2.5, ≤30 MB, JPG/PNG/WEBP/HEIC/HEIF.
Cost
Billed per second in Buzz on the workflow's transactions. Use whatif=true for an exact preview; see Payments (Buzz) for currency selection.
total = 170 × (duration + referenceVideoSeconds) + 52 × max(0, referenceImages − 5)duration | 5 s | 10 s | 15 s |
|---|---|---|---|
| 2K, no reference media | 850 | 1 700 | 2 550 |
Three rules govern reference input:
| Reference input | Billing |
|---|---|
| Audio | Free |
| Image | First 5 free, then 52 Buzz each |
| Video | Billed at the output rate — 170 Buzz per second of uploaded clip |
Reference video is charged on the length of the clip you upload, not the output. A 10-second generation over a 5-second reference clip bills 15 seconds, so whatif=true measures your clips before quoting. Some worked examples:
| Scenario | Total |
|---|---|
| 10 s, no reference | 1 700 |
| 10 s + 3 reference images | 1 700 |
| 10 s + 8 reference images | 1 700 + 3 × 52 = 1 856 |
| 10 s + a 5 s reference video | 15 × 170 = 2 550 |
Failed generations and clips rejected by MiniMax's content review are not charged.
Reading the result
Same as any videoGen step — a single video blob:
{
"steps": [{
"output": {
"video": {
"id": "…",
"url": "https://orchestration.civitai.com/v2/consumer/blobs/…"
}
}
}]
}The blob URL is signed and expires — refetch the workflow with GetWorkflow for a fresh one rather than storing it.
The output is H.264 at 2560×1440 in an MP4 container, with an AAC audio track generated alongside the video. A 5-second clip is roughly 6 MB.
Runtime
A 5-second 2K clip takes around three minutes end to end, and 15-second clips considerably longer — far past the 100-second inline request budget. Submit with wait=0 and collect the result via a webhook or by polling — see Results and webhooks.
Troubleshooting
| Symptom | Cause | Fix |
|---|---|---|
400 mentioning ratio | adaptive on a text-to-video request | Pass a concrete aspectRatio, or supply a firstFrameImage. |
400 mentioning resolution | Anything other than 2K | H3 supports only 2K. |
400 on a reference-media request | URL not publicly fetchable, or a clip outside the size/duration limits | Check the limits above and that the URL resolves from the public internet. |
400 combining reference media with a frame image | Different MiniMax task types | Use one or the other. |
| Content-policy rejection | MiniMax's own input review | Rephrase the prompt or swap the source media. Not billed. |
| Job retries across workers | Provider rate limit | Expected under load — H3 capacity is intentionally throttled. |
Related
SubmitWorkflow·GetWorkflow- Other video engines: WAN, Veo 3, Kling, Happy-Horse, FLUX-3
- Schema:
MiniMaxH3VideoGenInputin the API reference