MiniMax H3

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

Generate 4–15 second videos from text, first/last frames, or multimodal references, with 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.

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.

Value: minimax-h3


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.

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.

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.

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. Reference mode defaults to adaptive and also accepts a concrete ratio.

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


resolution   enum<string>   optional

Output resolution tier.

Available options: 768P, 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",
> "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",
> "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",
> "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",
> "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.

1{
2 "data": {
3 "id": "task_8K2qA",
4 "object": "task",
5 "task_kind": "video",
6 "capability_id": "minimax-h3",
7 "capability_version": null,
8 "media_type": "video",
9 "model": "minimax-h3",
10 "status": "queued",
11 "stage": "queued",
12 "created_at": 1782210000,
13 "updated_at": 1782210000,
14 "completed_at": null,
15 "output": null,
16 "usage": {
17 "credits_reserved": 0.2,
18 "credits_charged": 0.2,
19 "billable_duration_seconds": 5,
20 "credits_settled": 0,
21 "credits_refunded": 0
22 },
23 "request_id": "req_abc123",
24 "error_code": null,
25 "error_message": null
26 }
27}

Errors

StatusMeaning
400Invalid request.
401Missing, invalid, or inactive API key.
402Insufficient USD balance
409Idempotency key conflicts with another request body
429Request rate limit exceeded.