Skip to navigation

MiniMax H3 Fast

POST https://api.beatapi.io/v1/videos/tasks

The explicit Fast alias of minimax-h3, with the same prices, input contract, and speed tier and 4–15 second output up to 2K.

Supported modes

ModeRequired inputRules
Text to videomodel, promptOmit all media arrays.
First framemodel, prompt, imagesProvide one image URL.
First and last framesmodel, prompt, imagesProvide two image URLs in first-to-last order.
Multimodal referencesmodel, prompt, one reference_* arrayDo not combine images with reference_* inputs.

480p and 1080p: aspect_ratio must be 16:9 or 9:16 (adaptive renders 16:9), duration must be 5–15 seconds, and first and last frames and reference_videos are unavailable. For any other ratio, a 4-second video, first and last frames, or reference videos, use 768P or 2K, which accept every option. A request outside these limits is rejected with a 400 before a task is created, so nothing is charged.

Async flow: Create the task, save data.id, then poll the Task with GET /v1/tasks/{task_id}. On succeeded, read data.output.media. On failed, read data.error_code and data.error_message, then follow the error and retry policy.

Using a local file? upload a local input first and pass the returned data.url.

Authorization

Authorization   string   required

Send your BeatAPI API key as a Bearer token. Create one on the Dashboard.

Authorization: Bearer <BEATAPI_API_KEY>

Keep permanent API keys on trusted servers. Content-Type: application/json is required for the request body. Idempotency-Key is optional when the endpoint exposes it and is recommended for safe retries with the exact same body.

Request body

model   string   required

Must be minimax-h3-fast. This is the explicit Fast alias of minimax-h3.

Value: minimax-h3-fast


prompt   string   required

Video generation instructions.

Length: 1 to 5000 characters


images   string[]   optional

One first-frame image or first- and last-frame images as public HTTPS URLs. First and last frames need 768P or 2K.

Count: 1 to 2 items


reference_images   string[]   optional

Public HTTPS image references for multimodal reference generation.

Count: 1 to 9 items


reference_videos   string[]   optional

Public HTTPS video references for multimodal reference generation. Available at 768P and 2K only.

Count: 1 to 3 items


reference_audios   string[]   optional

Public HTTPS audio references for multimodal reference generation. Audio also requires at least one reference image or video.

Count: 1 to 3 items


duration   integer   optional

Requested output duration in seconds. 480p and 1080p start at 5 seconds.

Default: 5
Range: 4 to 15


aspect_ratio   enum<string>   optional

Text mode defaults to 16:9 and does not accept adaptive. Frame mode always uses adaptive at 768P and 2K. Reference mode defaults to adaptive and also accepts a concrete ratio. 480p and 1080p accept only 16:9 and 9:16 and render adaptive as 16:9.

Available options: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16


resolution   enum<string>   optional

Output resolution tier. 480p and 1080p accept 16:9 or 9:16 only, 5 seconds or longer, without first and last frames or reference videos; 768P and 2K accept every option. 1080p is exclusive to this gateway — nobody else sells H3 at that tier. Price scales with it.

Available options: 480p, 768P, 1080p, 2K
Default: "768P"

Request examples

Text to video

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header 'Authorization: Bearer <BEATAPI_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-fast",
"prompt": "A slow cinematic push through a misty mountain village at dawn.",
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "768P"
}'

First frame

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header 'Authorization: Bearer <BEATAPI_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-fast",
"prompt": "The performer turns toward the camera as neon light sweeps across the scene.",
"images": [
"https://media.beatapi.io/samples/neon-singer.png"
],
"duration": 5,
"resolution": "768P"
}'

First and last frames

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header 'Authorization: Bearer <BEATAPI_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-fast",
"prompt": "Move smoothly from the opening portrait to the final product reveal.",
"images": [
"https://media.beatapi.io/samples/neon-singer.png",
"https://media.beatapi.io/samples/smart-bottle.png"
],
"duration": 5,
"resolution": "768P"
}'

Multimodal references

curl --request POST \
--url https://api.beatapi.io/v1/videos/tasks \
--header 'Authorization: Bearer <BEATAPI_API_KEY>' \
--header 'Content-Type: application/json' \
--data '{
"model": "minimax-h3-fast",
"prompt": "Create a cinematic performance using the supplied visual and audio references.",
"reference_images": [
"https://media.beatapi.io/samples/neon-singer.png"
],
"reference_audios": [
"https://media.beatapi.io/samples/neon-singer-preview.mp3"
],
"duration": 5,
"aspect_ratio": "16:9",
"resolution": "768P"
}'

Response

A successful request returns HTTP 201.

{
"data": {
"id": "task_8K2qA",
"object": "task",
"task_kind": "video",
"capability_id": "minimax-h3-fast",
"capability_version": null,
"media_type": "video",
"model": "minimax-h3-fast",
"status": "queued",
"stage": "queued",
"created_at": 1782210000,
"updated_at": 1782210000,
"completed_at": null,
"output": null,
"usage": {
"credits_reserved": 0.2,
"credits_charged": 0.2,
"billable_duration_seconds": 5,
"credits_settled": 0,
"credits_refunded": 0
},
"request_id": "req_abc123",
"error_code": null,
"error_message": null
}
}

Errors

StatusMeaning
400Malformed JSON or a field, value or combination this endpoint does not accept (bad_request; the message names the field), or input refused by moderation (content_policy_violation). Not retryable unchanged.
401No API key (missing_api_key), or a key that is wrong, expired, disabled or exhausted (invalid_api_key; the message says which). Send it as Authorization: Bearer <key>; the key works with or without the sk- prefix. Not retryable.
402Insufficient balance (insufficient_credits). The account balance is zero or below the price of this request. Top up, then send it again; not retryable before that.
403The key or account is not permitted to make this call (forbidden), for example a model that is not available on free credit (a top-up unlocks it), a request from outside the key’s IP allowlist, or a model outside the key’s group. Not retryable.
409The Idempotency-Key was already used with a different request body, or the first request with it is still being processed (idempotency_conflict). Not retryable unchanged.
429Too many requests (rate_limit_exceeded, including the free-model limits) or too many tasks processing at once (user_concurrency_exceeded). Retryable after Retry-After seconds (also error.retry_after_seconds).
500Unexpected internal error (internal_error). Retryable; keep request_id for support if it persists.
503The request could not be completed (processing_unavailable, processing_timeout, processing_failed or result_transfer_failed). Nothing was charged. Retryable with backoff; Retry-After is sent when the wait is known. BeatAPI does not answer 502 or 504.