Skip to content

MiniMax H3

VIDEOminimax-h3

MiniMax H3 (Hailuo-03) is the next-generation open-weight multimodal video model from MiniMax, producing 2K clips at 24 FPS with native stereo audio generated in the same pass. It supports text-to-video and image-to-video with optional first-to-last frame control, durations from 5 to 15 seconds, and six aspect ratios from 21:9 to 9:16. Ideal for cinematic storytelling, social content, and any workflow that needs sound locked to motion without a separate audio pass.

POST
/v2/workspaces/{workspace_id}/base-models/minimax-h3/inferences
curl --request POST \
--url https://api.app.layer.ai/api/v2/workspaces/:workspace_id/base-models/minimax-h3/inferences \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '{
"prompt": "a knight standing in a snowy forest",
"aspect_ratio": "LANDSCAPE_21_9_768p",
"duration_seconds": 5,
"guidance_file_first_frame": [
{
"url": "<file_url>"
}
],
"guidance_file_last_frame": [
{
"url": "<file_url>"
}
]
}'
workspace_id
required
Workspace Id

Id of the workspace that owns the resource.

string format: uuid

Id of the workspace that owns the resource.

session_name
Any of:
string

Organize this run under a named session. A new session is created if none matches.

Media typeapplication/json
MiniMax H3
object
prompt
required
Prompt
string
aspect_ratio
Aspect Ratio
string
default: LANDSCAPE_21_9_768p
Allowed values: LANDSCAPE_21_9_768p LANDSCAPE_16_9_768p LANDSCAPE_4_3_768p SQUARE_768p PORTRAIT_3_4_768p PORTRAIT_9_16_768p LANDSCAPE_21_9_1440p LANDSCAPE_16_9_1440p LANDSCAPE_4_3_1440p SQUARE_1440p PORTRAIT_3_4_1440p PORTRAIT_9_16_1440p LANDSCAPE_21_9_2160p LANDSCAPE_16_9_2160p LANDSCAPE_4_3_2160p SQUARE_2160p PORTRAIT_3_4_2160p PORTRAIT_9_16_2160p
seed
Seed

Advanced field.

integer
nullable
duration_seconds
Duration
integer
default: 5
guidance_file_first_frame
First frame

The frame the video starts on

Array<object>
InferenceFormFileRef

A single guidance/reference file supplied to a reference_image_list field.

The slot’s guidance type is fixed by the field it’s attached to; the caller supplies the file URL and, where the model supports per-file weighting, a weight.

object
url
required
Url
string
weight
Weight
number
nullable
guidance_file_last_frame
Last frame

The frame the video ends on

Array<object>
InferenceFormFileRef

A single guidance/reference file supplied to a reference_image_list field.

The slot’s guidance type is fixed by the field it’s attached to; the caller supplies the file URL and, where the model supports per-file weighting, a weight.

object
url
required
Url
string
weight
Weight
number
nullable
prompt_language
Prompt Language

Advanced field.

string
nullable
Example
{
"prompt": "a knight standing in a snowy forest",
"aspect_ratio": "LANDSCAPE_21_9_768p",
"duration_seconds": 5,
"guidance_file_first_frame": [
{
"url": "<file_url>"
}
],
"guidance_file_last_frame": [
{
"url": "<file_url>"
}
]
}

Successful Response

Media typeapplication/json
ExecuteForgeOutput
object
inference_id
required
Inference Id

Unique identifier for this forge run.

string format: uuid
status
required
InferenceStatus

Current status: IN_PROGRESS.

string
Allowed values: in_progress complete failed cancelled deleted
estimated_price_creative_units
Any of:
number
poll_interval_seconds
required
Poll Interval Seconds

Suggested polling interval in seconds.

integer
created_at
required
Created At

Timestamp of when the run was created.

string format: date-time
session_id
Any of:
string format: uuid
normalized_parameters
Any of:
NormalizedInferenceParameters

Inference parameters after model-specific normalization.

These reflect the actual values used for generation, including model defaults applied for any parameters not explicitly set.

object
width
Any of:
integer
height
Any of:
integer
batch_size
Any of:
integer
num_inference_steps
Any of:
integer
guidance_scale
Any of:
number
duration_seconds
Any of:
number
fps
Any of:
integer
Example
{
"status": "in_progress"
}

Unauthenticated — missing or invalid Bearer token.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Forbidden — insufficient permissions.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Resource not found.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Invalid input parameters.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Rate limited — too many concurrent requests.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}

Internal server error.

Media typeapplication/problem+json
object
type
required
string
title
required
string
status
required
integer
detail
required
string
Example
{
"type": "https://api.layer.ai/errors/ERROR_CODE",
"title": "Error Title",
"status": 400,
"detail": "Human-readable description."
}