MiniMax H3
Generate 4–15 second videos at 768P or 2K from text, one or two frames, or up to 9 images, 3 videos and 3 audio clips as references, priced per second.
- Asynchronous: the create call returns a task ID; the video arrives when the task succeeds.
- Four ways in: text only, a first frame, a first and last frame, or reference images, videos and audio.
- Two resolutions: 768P (the default) and 2K. 480p and 1080p belong to
minimax-h3-normal. - Billed per second of video at the rate of the chosen resolution. A failed task costs nothing.
minimax-h3 is the original ID of this model and behaves exactly like minimax-h3-fast: the same inputs, resolutions and prices. New integrations can use either.
Opens this model in the API Explorer. Enter your BeatAPI API key to create a task: the call is real and is billed to your own balance.
Model IDs
Five MiniMax H3 models share this endpoint but not the same inputs. The values below come straight from the gateway contract.
Endpoint and authentication
POST https://api.beatapi.io/v1/videos/tasks
Authorization
string
Required
Your BeatAPI API key, sent as Bearer <BEATAPI_API_KEY>. Create keys in the Dashboard. Keep keys on your server; never ship them in a browser or mobile app.
Send the body as JSON with Content-Type: application/json. Idempotency-Key is optional: send a unique value (at most 255 characters) per logical request and reuse it only to retry that exact body. Within 24 hours a retry with the same key and body returns the first response again with Idempotent-Replayed: true; the same key with a different body returns 409 idempotency_conflict. Responses other than 2xx are not stored, so a retry after a 400 or 402 runs again.
How a request works
Create the task
POST the parameters below to the endpoint. A 201 means the task was accepted and its price reserved from your balance; the work runs in the background. Save data.id.
Wait for it to finish
Call GET /v1/tasks/{task_id} and wait data.poll_after_seconds between calls (5 s for images, 8 s for videos) until status is succeeded or failed. Or register a webhook for task.succeeded and task.failed; keep polling as the fallback, because a task stopped by the processing timeout sends no event.
Save the result
On succeeded, download every data.output.media[].url and store the files you need; BeatAPI does not promise how long result URLs stay available. On failed, read data.error_code and data.error_message: the reserved amount was returned to your balance, and data.retryable says whether sending the same request again can succeed.
Input modes
Request parameters
model
string
Required
The model to run.
Value: minimax-h3
If the value is wrong
- Missing:
"model" is required - An image model sent to this endpoint:
"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
prompt
string
Required
What happens in the video: subject, action, camera movement and style. With references, say what each input is for.
Length: 1–5000 characters
- Length is counted in characters (a CJK character counts as one).
- Refer to inputs by their position, for example “the first reference image”.
If the value is wrong
- Missing:
"prompt" is required - Empty or longer than the limit:
"prompt" has an unsupported length
images
string[]
Optional
A first frame, or a first and a last frame.
Items: 1–2
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- One link: the video starts from this image. Two links:
images[0]is the first frame andimages[1]the last. - With frames, the shape of the video follows the frames:
aspect_ratiois not applied. - For pictures that guide the video without being frames, use
reference_imagesinstead.
If the value is wrong
- More than two links:
"images" accepts at most 2 items - Combined with any reference_* field:
Cannot combine "images" with reference inputs in one task - Not an https:// link:
"images[0]" must be a public HTTPS URL
reference_images
string[]
Optional
Pictures that guide the content, characters, products or style of the video.
Items: 1–9
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- Refer to them in the prompt by position.
If the value is wrong
- More than the maximum:
"reference_images" accepts at most 9 items - Combined with
images:Cannot combine "images" with reference inputs in one task
reference_videos
string[]
Optional
Videos to take motion, camera work or content from.
Items: 1–3
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- The reference videos together may run at most 15 seconds, at 23.976 to 60 frames per second; see the limits below.
- The length of a reference video does not change the price.
If the value is wrong
- More than the maximum:
"reference_videos" accepts at most 3 items - Together longer than the limit:
The reference videos run 20 seconds in total; this model takes at most 15. - Frame rate outside the limit:
reference_videos[0] runs at 12 frames per second; this model takes 23.976 to 60.
reference_audios
string[]
Optional
Music, voice or sound to follow.
Items: 1–3
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- Audio needs company: send at least one reference image or one reference video with it.
- Each clip must run 2 to 15 seconds.
If the value is wrong
- More than the maximum:
"reference_audios" accepts at most 3 items - Audio without a reference image or video:
minimax-h3 audio reference requires at least one reference image or video - A clip outside 2 to 15 seconds:
reference_audios[0] is 1.5 seconds long; this model takes reference audio of 2 to 15 seconds.
duration
integer
OptionalDefault: 5
Length of the video in seconds, a whole number.
Default: 5
Range: 4–15
- If you leave it out,
5is used. - The price follows this value (see Billing).
If the value is wrong
- Outside the range or not a whole number:
"duration" is outside its supported range
aspect_ratio
string
Optional
Shape of the video as width:height. adaptive lets the model choose from the inputs.
Allowed values: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16
- Text to video: leave it out for
16:9, or send a fixed ratio.adaptiveis refused because there is nothing to adapt to. - First frame or frames: not applied; the video follows the frame shape.
- References: leave it out for
adaptive, or send a fixed ratio.
If the value is wrong
- A value not in the list:
"aspect_ratio" must be one of: [adaptive 21:9 16:9 4:3 1:1 3:4 9:16] adaptivewith text to video:MiniMax H3 text mode does not support aspect_ratio=adaptive
resolution
string
OptionalDefault: 768P
Output resolution. 2K costs more per second than 768P.
Allowed values: 768p, 2K
Default: 768P
768pand768Pmean the same, as do2Kand2k.- 480p, 1080p and 4K are not offered here; for 480p or 1080p use
minimax-h3-normal.
If the value is wrong
- A value not in the list (for example
480p,1080por4K):"resolution" must be one of: [768p 768P 2K 2k]
The gateway also checks these combinations before creating the task:
- images cannot be combined with reference inputs
- Only 768P and 2K are available; both tiers accept the full H3 input contract
Input media limits
The gateway reads every input before the task is created and refuses one outside these limits with a 400 bad_request that names the input. Nothing is charged.
- The limits apply to
imagesandreference_images(images),reference_videos(videos) andreference_audios(audio). - Inputs are checked one by one, in the order
images,reference_images,reference_videos,reference_audios. For one input the order is length, sides, aspect ratio, frame rate; the total length of all reference videos is checked last. The message names the input by list and position, counting from 0 like the field errors:images[0] is 200x200 pixels; this model takes images 256 to 5760 pixels on each side. - Lengths are measured with a 0.1-second tolerance. Sizes are checked only when the host reports them.
- A link is refused at create only when its host answers with an HTTP 4xx error or returns an empty file, for example
reference_videos[0] could not be downloaded: the URL returned HTTP 404.; other problems with an input surface after submission and fail the task (refunded). - Have a local file? Upload it with
POST /v1/filesand pass the returneddata.url.
Fields this model does not accept
Sending one of these is refused before anything is charged, instead of being ignored:
seed,generate_audio,watermark,quality,soundand any other field from other video models →field "seed" is not supported by model minimax-h3(with the field you sent).- Any other unknown field →
unknown field: <name>.
Request examples
Text to video
A 5-second 768P landscape clip.
First frame
The video starts from the image and follows its shape.
First and last frame
The video moves from the first image to the second, in 2K.
Image and audio references
A performance that follows a character image and a music clip (the sample clip runs about 12 seconds).
Image and video references
Replace the video link with your own MP4 or MOV of at most 15 seconds, at 23.976 to 60 frames per second.
Responses
Create a task (201)
The task object. output is null until the task succeeds. Fields marked “while running” disappear once the task finishes.
Finished task
GET /v1/tasks/{task_id} returns HTTP 200 with status: "succeeded" and the result in data.output.
Output fields
Failed task
A failed task is still HTTP 200 on GET /v1/tasks/{task_id}: the failure is in the body. The reservation is returned in full, so nothing is charged.
Complete example
Create a task, wait for it with the server’s polling hint, and print the result URLs. Set BEATAPI_API_KEY in your environment and install requests.
Billing
- Billed per second of video: the requested
durationtimes the rate of the chosen resolution, which is about 0.06 per second at 2K. - The aspect ratio, the number of frames or references, and the length of reference videos do not change the price.
- The price is reserved when the task is created;
usage.billable_duration_secondson the task shows the seconds billed. - A failed task, including one refused by moderation after submission, is refunded in full.
Current list prices, the same as on Pricing. An account with a negotiated discount pays less; data.usage on the task always shows the amount actually charged.
Common errors
HTTP errors at a glance
Errors before a task exists arrive as a non-2xx response, and nothing is charged. Branch on error.code or error.retryable; message names the problem. The full list and retry policy are on Errors.
Authentication
Send your API key as Authorization: Bearer <BEATAPI_API_KEY>.
Headers
Send the body as JSON with Content-Type: application/json. Idempotency-Key is optional: send a unique value (at most 255 characters) per logical request and reuse it only to retry that exact body. Within 24 hours a retry with the same key and body returns the first response again with Idempotent-Replayed: true; the same key with a different body returns 409 idempotency_conflict. Responses other than 2xx are not stored, so a retry after a 400 or 402 runs again.
Request
The model to run.
Value: minimax-h3
If the value is wrong
- Missing:
"model" is required - An image model sent to this endpoint:
"model" nano-banana-2 is served by POST /v1/images/tasks, not this endpoint
What happens in the video: subject, action, camera movement and style. With references, say what each input is for.
Length: 1–5000 characters
- Length is counted in characters (a CJK character counts as one).
- Refer to inputs by their position, for example “the first reference image”.
If the value is wrong
- Missing:
"prompt" is required - Empty or longer than the limit:
"prompt" has an unsupported length
Shape of the video as width:height. adaptive lets the model choose from the inputs.
Allowed values: adaptive, 21:9, 16:9, 4:3, 1:1, 3:4, 9:16
- Text to video: leave it out for
16:9, or send a fixed ratio.adaptiveis refused because there is nothing to adapt to. - First frame or frames: not applied; the video follows the frame shape.
- References: leave it out for
adaptive, or send a fixed ratio.
If the value is wrong
- A value not in the list:
"aspect_ratio" must be one of: [adaptive 21:9 16:9 4:3 1:1 3:4 9:16] adaptivewith text to video:MiniMax H3 text mode does not support aspect_ratio=adaptive
Length of the video in seconds, a whole number.
Default: 5
Range: 4–15
- If you leave it out,
5is used. - The price follows this value (see Billing).
If the value is wrong
- Outside the range or not a whole number:
"duration" is outside its supported range
A first frame, or a first and a last frame.
Items: 1–2
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- One link: the video starts from this image. Two links:
images[0]is the first frame andimages[1]the last. - With frames, the shape of the video follows the frames:
aspect_ratiois not applied. - For pictures that guide the video without being frames, use
reference_imagesinstead.
If the value is wrong
- More than two links:
"images" accepts at most 2 items - Combined with any reference_* field:
Cannot combine "images" with reference inputs in one task - Not an https:// link:
"images[0]" must be a public HTTPS URL
Music, voice or sound to follow.
Items: 1–3
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- Audio needs company: send at least one reference image or one reference video with it.
- Each clip must run 2 to 15 seconds.
If the value is wrong
- More than the maximum:
"reference_audios" accepts at most 3 items - Audio without a reference image or video:
minimax-h3 audio reference requires at least one reference image or video - A clip outside 2 to 15 seconds:
reference_audios[0] is 1.5 seconds long; this model takes reference audio of 2 to 15 seconds.
Pictures that guide the content, characters, products or style of the video.
Items: 1–9
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- Refer to them in the prompt by position.
If the value is wrong
- More than the maximum:
"reference_images" accepts at most 9 items - Combined with
images:Cannot combine "images" with reference inputs in one task
Videos to take motion, camera work or content from.
Items: 1–3
Each item is a public https:// URL. For a local file, upload it first with POST /v1/files and pass the returned data.url.
- The reference videos together may run at most 15 seconds, at 23.976 to 60 frames per second; see the limits below.
- The length of a reference video does not change the price.
If the value is wrong
- More than the maximum:
"reference_videos" accepts at most 3 items - Together longer than the limit:
The reference videos run 20 seconds in total; this model takes at most 15. - Frame rate outside the limit:
reference_videos[0] runs at 12 frames per second; this model takes 23.976 to 60.
Output resolution. 2K costs more per second than 768P.
Allowed values: 768p, 2K
Default: 768p
768pand768Pmean the same, as do2Kand2k.- 480p, 1080p and 4K are not offered here; for 480p or 1080p use
minimax-h3-normal.
If the value is wrong
- A value not in the list (for example
480p,1080por4K):"resolution" must be one of: [768p 768P 2K 2k]
Response
The task object. output is null until the task succeeds. Fields marked “while running” disappear once the task finishes.

