Minimax H3 Text To Video API Documentation

Minimax H3 Text To Video API Documentation

Playground

Try it on WaveSpeedAI!

MiniMax H3 Text to Video generates coherent 2K videos from text prompts, with flexible 5-15 second duration and adaptive or custom aspect ratios for cinematic scenes, creative videos, and production workflows. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

MiniMax H3 Text-to-Video generates high-resolution videos from text prompts. Describe the video scene, action, camera movement, and visual style, then choose aspect ratio and duration to create a 2k video output.


Why Choose This?

  • Text-to-video generation
    Generate videos directly from natural-language prompts.

  • 2K video output
    Create high-resolution video outputs with the fixed 2k resolution tier.

  • Flexible aspect ratios
    Supports wide, landscape, square, portrait, and vertical formats including 21:9, 16:9, 4:3, 1:1, 3:4, and 9:16.

  • Selectable duration
    Generate videos from 4 to 15 seconds.

  • Simple generation workflow
    Provide a prompt, choose aspect ratio and duration, then generate the final video.


Parameters

ParameterRequiredDescription
promptYesText description of the video scene, action, camera movement, and style. Minimum length: 1 character.
aspect_ratioNoOutput aspect ratio: 21:9, 16:9, 4:3, 1:1, 3:4, or 9:16.
resolutionNoOutput video resolution. Supported values: 768p or 2k.
durationNoOutput video duration in seconds. Supported values: 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, or 15.

How to Use

  1. Write your prompt — Describe the scene, subject, action, camera movement, lighting, mood, and visual style.
  2. Choose aspect ratio — Select the layout that matches your target format.
  3. Set duration — Choose a video length from 4 to 15 seconds.
  4. Submit — Generate the video and retrieve the output URL.

Pricing

Pricing is based on output resolution and generated video duration.

ResolutionPer second5s10s15s
768p$0.10$0.50$1.00$1.50
2K$0.14$0.70$1.40$2.10

Best Use Cases

  • Cinematic video generation — Create high-resolution video scenes from detailed text prompts.
  • Marketing and campaign videos — Generate polished video concepts for ads, brand visuals, and promotional content.
  • Social media content — Produce landscape, square, or vertical videos for different platforms.
  • Story and scene prototyping — Turn written ideas into short motion clips for creative planning.
  • Visual concept development — Explore camera movement, action, lighting, and mood before production.

Pro Tips

  • Use detailed prompts with subject, action, camera movement, lighting, style, and mood.
  • Choose 16:9 for widescreen video, 9:16 for vertical mobile content, and 1:1 for square layouts.
  • Use 21:9 for cinematic wide-frame scenes.
  • Use shorter durations for quick prompt testing and longer durations when the scene needs more time to develop.
  • Keep the prompt focused on visible motion and scene progression.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "aspect_ratio": "16:9",
  "resolution": "768p",
  "duration": 5
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/minimax/h3/text-to-video" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL=$(printf '%s' "${TASK}" | jq -r '.urls.get // empty')
if [ -z "${RESULT_URL}" ]; then RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"; fi

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    created|processing) sleep 2 ;;
    *) printf 'Unexpected status: %s
' "${STATUS}" >&2; exit 1 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-Text description of the video scene, action, camera movement, and style.
aspect_ratiostringNo16:921:9, 16:9, 4:3, 1:1, 3:4, 9:16Output aspect ratio. Adaptive selects a suitable ratio automatically.
resolutionstringNo768p768p, 2kOutput video resolution.
durationintegerNo54, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15Output video duration in seconds.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to retrieve the prediction result
data.statusstringStatus of the task: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.urls.getstringURL to poll for the prediction result
data.statusstringStatus: created, processing, completed, or failed
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.