Skip to main content
POST
cURL
A fast open video model that generates video and stereo audio together.

Options by model

The tokens each variant accepts. A field left out inherits the architecture default, clamped to the variant’s first listed token when the variant does not offer it.

Mentions

Write @handle in prompt to attach one of your saved entities, exactly as in the app. Each mention counts against the budget below; a mention that does not resolve, or that the chosen model does not support, is refused with 400 invalid_config before any gems are charged. See Characters and references.
A mentioned character’s voice is sent with its image and counts as an audio source. Send use_character_voices: false to leave the voices out.

Rules

A request that breaks one of these is refused with 400 invalid_config before any gems are charged.
  • First and last frames cannot be combined with reference images or videos: send one kind or the other.
  • Up to 9 reference images and 3 reference videos of 2 to 15 seconds each.
  • References share a 21-second budget with the clip: duration, plus 2 seconds for each reference image, mentioned character, and mentioned reference, plus 1.15 seconds for each second of each reference video (counted up to duration), must come to at most 21.
Every field below that you leave out keeps its default. Option values are the tokens listed per field; a numeric token may be sent as a number. Fields the schema does not list pass through to the model unchanged. The exact charge for other settings is in the response’s billing.gems_charged, and the balance at GET /v1/account.

Authorizations

Authorization
string
header
required

Create a key in API → API Keys: select Create API key, name it in the popup, then select Create key. Copy the one-time key and send it as Authorization: Bearer mage_sk_…. Keys are for server-side code only.

Headers

Idempotency-Key
string

A key of your choosing, 1 to 255 characters, scoped to your API key. A retried submit with the same key returns the original request with 200 instead of charging again. The key identifies the first submission made with it; later bodies are not compared. A refusal recorded under the key (its envelope carries request_id) replays the same way, so a new attempt needs a new key.

Required string length: 1 - 255

Body

application/json

A partial config for MiniMax-H3.

prompt
string
required

The text prompt.

Minimum string length: 1
seed
integer | null

Integer seed for reproducible output; omit or send null for a random seed.

model_id
enum<string>
default:minimax-h3-turbo

The model variant to generate with.

Available options:
minimax-h3-turbo,
minimax-h3
aspect_ratio
enum<string>
default:16:9

Aspect ratio as W:H.

Available options:
21:9,
16:9,
3:2,
5:4,
1:1,
4:5,
2:3,
9:16,
9:21
resolution
enum<string>
default:480p

Output resolution token.

Available options:
480p,
544p,
720p,
768p
duration
enum<string>
default:5

Clip length in seconds, as a token.

Available options:
5,
6,
7,
8,
9,
10,
11,
12,
13,
14,
15
first_image

The first frame image. An https URL or a data URL.

last_image

The last frame image. An https URL or a data URL.

image

The reference image. An https URL or a data URL.

additional_images
(string<uri> | string)[]

Additional reference images. Each an https URL or a data URL.

videos
(string<uri> | string)[]

The source videos. Each an https URL or a data URL.

use_character_voices
boolean
default:true

Response

The request was accepted; poll status_url for the result. A retried submit whose Idempotency-Key was used before answers 200 with the same shape, the original request, and charges nothing.

request_id
string<uuid>
required

The request id, also the id in status_url and cancel_url.

status
enum<string>
required

queued and in_progress are live; completed, failed, and cancelled are final.

Available options:
queued,
in_progress,
completed,
failed,
cancelled
architecture
string
required

The architecture the request generates with.

model_id
string | null
required

The model variant, when the architecture has variants.

created_at
string<date-time>
required

When the request was accepted.

updated_at
string<date-time>
required

When the request last changed.

billing
object
required
result
object | null
required

The output once status is completed, else null.

error
object | null
required

Why the request failed once status is failed, else null.

status_url
string<uri>
required

Poll this URL for the request.

cancel_url
string<uri>
required

POST to this URL to stop the request.

Last modified on September 30, 2026