MiniMax H3 Max
MiniMax H3 Max makes video with sound from text, from one first frame, or from reference media. It renders at 480p, 768p or 1080p, in any whole length from 5 to 15 seconds. It follows the prompt closely and it is one of the most affordable premium lanes.
video · model h3-max · catalog model-catalog@2026-10-06.v5 · pricing customer-pricing@2026-11-05.v15.Endpoint
POST https://api.roasos.com/v1/video/h3-maxSend your API key as a bearer token. The key needs the scope api:write. Every paid request also needs an Idempotency-Key header.
The envelope fields quote_only, quote_id, webhook_url and wait_timeout_seconds behave the same on each model endpoint. Refer to Jobs and Quotes and credits.
Good at
The model follows the prompt closely. Name the subject, the action and the camera move plainly, and it renders them. A single take can run 15 seconds.
Every output has a generated soundtrack. To use your own voiceover or music, send audio_url on text-to-video or image-to-video. The audio replaces the generated sound. It is trimmed to the clip, or padded with silence when it is shorter.
The reference lane takes up to 9 images, 3 video clips and 3 audio clips, and 12 files at most. Send references, video_urls and audio_urls. Add product_id to attach the product's kit shots, and avatar_id to attach a saved person. Each reference clip must be 2 to 15 seconds long, and the clips of one kind must total 15 seconds or less. The prompt names the media by type and position: Image 1, Video 1, Audio 1. The platform names the product and avatar shots for you at the end of the prompt.
Text-to-video takes six aspect ratios (21:9 to 9:16). The reference lane also takes auto (adaptive framing). Image-to-video takes its framing from the first frame, and end_image_url pins the last frame. A seed makes a result repeatable.
Pricing
The unit is one clip. Pricing key: h3-max.
| Request | Credits |
|---|---|
5s_768p | 5 |
10s_768p | 10 |
15s_768p | 15 |
The credits come from the roasOS pricing table. No other field changes the price. To get the exact price of your request, send it with quote_only: true first.
Modes
text-to-videoimage-to-videoreference-to-video
roasOS selects the mode from the media fields of your request. You do not send a mode.
Provider endpoints: minimax/h3-max/image-to-video · minimax/h3-max/reference-to-video · minimax/h3-max/text-to-video.
Request fields
| Field | Type | Required | Default | Rule |
|---|---|---|---|---|
aspect_ratio | enum | no | 16:9 | 21:9, 16:9, 4:3, 1:1, 3:4, 9:16, auto; only in text-to-video, reference-to-video |
audio_url | string | no | — | https URL; ≤ 4,096 characters |
audio_urls | string[] | no | — | ≤ 3 items; only in reference-to-video |
avatar_id | string | no | — | UUID |
avatar_outfit | string | no | — | ≤ 500 characters |
duration_seconds | integer enum | no | 5 | 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15 |
end_image_url | string | no | — | https URL; ≤ 4,096 characters; only in image-to-video |
extend_of_generation_id | string | no | — | UUID |
image_url | string | no | — | https URL; ≤ 4,096 characters; only in image-to-video |
mode | enum | no | — | text-to-video, image-to-video, reference-to-video |
product_id | string | no | — | UUID |
prompt | string | yes | — | ≥ 1 character; ≤ 10,000 characters |
quote_id | string | no | — | UUID |
quote_only | boolean | no | false | — |
references | string[] | no | — | ≤ 9 items; only in reference-to-video |
resolution | enum | no | 768p | 480p, 768p, 1080p |
scene_id | string | no | — | UUID |
seed | integer | no | — | 0–2147483647 |
video_urls | string[] | no | — | ≤ 3 items; only in reference-to-video |
wait_timeout_seconds | integer | no | 0 | 0–60 |
webhook_url | string | no | — | https URL; ≤ 4,096 characters |
The schema is strict. A field that is not in this table gets 400 unsupported_option. The field names are the roasOS role names. One role has one name in every family.
Media
This endpoint accepts these media roles:
avatar_id— identity; the saved character reference sheet, with a derived portrait only where the model requires a single face or source frameproduct_id— product; resolves to the product image listreferences— style and appearance referencesimage_url— first frame (or the single source image)end_image_url— last framescene_id— first frame — a scene this workspace ownsvideo_urls— reference videosaudio_urls— reference or driving audioaudio_url— the driving audio track
| Role | Items | Maximum size | Content types | Duration |
|---|---|---|---|---|
audio_urls | ≤ 3 | 15 MB | audio/mp3, audio/mpeg, audio/wav, audio/wave, audio/x-wav | — |
end_image_url | ≤ 1 | 10 MB | image/jpeg, image/png, image/webp | — |
image_url | ≤ 1 | 10 MB | image/jpeg, image/png, image/webp | — |
references | ≤ 9 | 10 MB | image/jpeg, image/png, image/webp | — |
video_urls | ≤ 3 | 100 MB | video/mp4, video/quicktime | — |
Every other role is refused: elements, product_images, reference_images, scene_image, video_url, voice_id. A refused role gets 400 unsupported_option.
https://cdn.roasos.com that your workspace owns. Any other URL gets 400 reference_media_not_workspace_owned. Refer to Reference media and uploads to learn how to put a file there.Prompt
Limit 10,000 characters. The provider expands the prompt lightly before generation ("balanced" mode, pinned).
- Name the subject, one action and one camera move. The model adds the atmosphere.
- For a 10-15 second take, describe the action as one continuous progression.
- In image-to-video, describe the motion, not the scene. The first frame owns the scene.
- On the reference lane, say what each input controls: "the product in Image 1", "the motion of Video 1".
- Direct the sound (room tone, music mood, a spoken line in quotes), or the model makes its own.
- End with "No on-screen text, no captions, no subtitles." Add text in post-production.
Not exposed
These catalog entries describe omitted inputs, pinned values and source constraints. They do not imply that the provider accepts every listed field.
prompt_expansion_mode— pinned topinned to "balanced"; "disabled" and "quality" are not served.enable_safety_checker— pinned toprovider default (on); never sent.sync_mode— not accepted by this public endpoint.negative_prompt— not accepted by this public endpoint.generate_audio— pinned toevery output carries a generated soundtrack; there is no on/off field.cfg_scale— not accepted by this public endpoint.shot_type— not accepted by this public endpoint.multi_prompt— not accepted by this public endpoint.
Result
The result kind is video. Always present: url.
{
"data": {
"id": "gen_…",
"kind": "video",
"model": "h3-max",
"status": "completed",
"result": {
"url": "https://cdn.roasos.com/workspaces/ws_01/result"
}
}
}The files are immutable objects on https://cdn.roasos.com. A result URL is a valid media input for your next request.
Example
The three steps are always the same: quote, run, poll.
# 1. Quote. Nothing is spent.
curl -X POST https://api.roasos.com/v1/video/h3-max \
-H "Authorization: Bearer roasos_sk_live_..." \
-H "Idempotency-Key: 0f1c9e2a-h3-max-0001" \
-H "Content-Type: application/json" \
-d '{"quote_only":true,"prompt":"A woman holds the bottle at eye level in a bright kitchen, morning light, static camera."}'
# 200 { "data": { "kind": "quote", "quote_id": "q_7Hk...", "credits": 5, "expires_at": "...",
# "confirmation": { "model": "h3-max", "example": "5s_768p" } } }
# 2. Run. Same body, same Idempotency-Key, quote_id in place of quote_only.
curl -X POST https://api.roasos.com/v1/video/h3-max \
-H "Authorization: Bearer roasos_sk_live_..." \
-H "Idempotency-Key: 0f1c9e2a-h3-max-0001" \
-H "Content-Type: application/json" \
-d '{"quote_id":"q_7Hk...","prompt":"A woman holds the bottle at eye level in a bright kitchen, morning light, static camera."}'
# 201 { "data": { "id": "gen_...", "status": "queued", "credits_reserved": 5 } }
# 3. Poll, then read the result.
curl https://api.roasos.com/v1/jobs/gen_.../status -H "Authorization: Bearer roasos_sk_live_..."
curl https://api.roasos.com/v1/jobs/gen_.../result -H "Authorization: Bearer roasos_sk_live_..."The deprecated path
POST /v1/generations still reaches this model for one minor version. It is deprecated. This is how it maps:
POST /v1/video/h3-max with prompt, and image_url or scene_id (image-to-video), end_image_url, references, product_id, avatar_id, video_urls, audio_urls, audio_url, duration_seconds (5-15), aspect_ratio, resolution (480p|768p|1080p) and seed.
See also
llms.txtfor this model — the same facts as one plain-text file for an agent.GET https://api.roasos.com/v1/catalog/h3-max— the machine-readable form: enums, defaults, limits and prices. Refer to the API reference.- Jobs — how to poll a job and read its result.
- Provider endpoints:
minimax/h3-max/image-to-video·minimax/h3-max/reference-to-video·minimax/h3-max/text-to-video.
Gemini Omni Flash Extend
Gemini Omni Flash Extend adds 3 to 10 seconds after an existing clip. The model reads the last 10 seconds of the source, so the motion, the camera and the sound continue across the join. The result is the source followed by the new footage, in one clip.
MiniMax H3 Extend
MiniMax H3 Extend adds 5 to 15 seconds of new footage after an existing clip. The prompt describes what happens next. The output is the whole clip with the new footage, or only the new footage.