--- name: wavespeed-minimax-h3 description: Generate and edit videos with the open-weights MiniMax H3 model via WaveSpeed AI. Covers text-to-video, image-to-video (first and last frame), reference-to-video (up to 9 images, 3 videos and 3 audios), video edit and video extend, with 3-15 second clips at 480p, 540p, 768p (default) or 1080p and native stereo audio. Use when the user asks for MiniMax H3, or wants an affordable video from a prompt, an animated image, a clip built from reference media, an edited video, or a continued clip. metadata: author: wavespeedai version: "1.0" --- # WaveSpeedAI MiniMax H3 Video Generation Generate and edit videos with the open-weights MiniMax H3 model on the WaveSpeed AI platform. Text, image and reference inputs produce 3-15 second clips with native stereo audio; video edit rewrites an existing clip and video extend appends a new segment. The default resolution is `768p`, the model's native canvas and its counterpart of other models' 720p; `480p`, `540p` and `1080p` are also available. ## Setup Install the open-source CLI once and sign in; the CLI stores the key, so never ask the user to paste an API key into the chat: ```bash npm install -g @wavespeed/cli wavespeed login # opens https://wavespeed.ai/accesskey and stores the key wavespeed status # confirms you are signed in ``` For CI or one-off shells, `WAVESPEED_API_KEY` in the environment also works. Prefer MCP tools over shell commands? The same platform is exposed as an MCP server: hosted at `https://api.wavespeed.ai/mcp` (browser sign-in) or locally with `npx -y @wavespeed/mcp@latest`; every example below maps onto `run_model` with the same model id and input fields. ## Quick Start The shortcut commands use the same model and pick the endpoint from the inputs: `wavespeed generate video "" -m minimax-h3`, and likewise `wavespeed edit video` and `wavespeed extend video`; the MCP tools `generate_video`, `edit_video` and `extend_video` take the same `model` value (confirm the keys with `wavespeed generate video --help`). With this model the shortcuts map `--resolution 720p` to `768p`. Add `--estimate --json` first to see the chosen endpoint, final input and price without submitting. ```bash wavespeed generate video "A paper boat drifting down a rain-soaked street" -m minimax-h3 --estimate --json ``` ### Text-to-Video ```bash OUTPUT_URL=$(wavespeed run wavespeed-ai/minimax-h3/text-to-video \ -p "A golden retriever running through a field of sunflowers at sunset, slow tracking shot, birdsong" \ --json | jq -r '.outputs[0]') ``` ### Image-to-Video The `image` parameter accepts an image URL. If you have a local file, pass it with the `@path` marker and the CLI uploads it and substitutes the hosted URL. ```bash OUTPUT_URL=$(wavespeed run wavespeed-ai/minimax-h3/image-to-video \ -i image=@./photo.png \ -p "The person slowly turns and smiles at the camera" \ --json | jq -r '.outputs[0]') ``` Existing URLs work as-is: ```bash OUTPUT_URL=$(wavespeed run wavespeed-ai/minimax-h3/image-to-video \ -i image="https://example.com/photo.jpg" \ -p "The person slowly turns and smiles at the camera" \ --json | jq -r '.outputs[0]') ``` ## API Endpoints On every endpoint `duration` is an integer from 3 to 15 seconds and `resolution` is one of `480p`, `540p`, `768p` (default) or `1080p`. Audio is generated natively with the video; only video edit has a `generate_audio` switch. The catalog also lists LoRA variants (`text-to-video-lora`, `image-to-video-lora`, `reference-to-video-lora`), the `wavespeed-ai/minimax-h3-singularity/*` image- and reference-to-video endpoints, `image-to-video-spicy`, `controlnet-union` (follows the motion and structure of a source video) and still-image endpoints (`text-to-image`, `image-edit`); inspect any of them with `wavespeed run -h`. The separate `minimax/h3`, `minimax/h3-highspeed` and `minimax/h3-lite` families (text, image and reference-to-video, 4-15 s; `minimax/h3` at 768p or 2K, Highspeed at 768p, Lite at 768p or 480p) have their own schemas and prices and are not covered here. ### Text-to-Video **Model ID:** `wavespeed-ai/minimax-h3/text-to-video` #### Parameters | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `prompt` | string | Yes | -- | Scene, action, camera movement and the desired soundtrack | | `aspect_ratio` | string | No | `16:9` | One of: `16:9`, `9:16`, `1:1`, `4:3`, `3:4`, `21:9`, `9:21` | | `duration` | integer | No | `5` | Seconds. Range: 3-15 | | `resolution` | string | No | `768p` | One of: `480p`, `540p`, `768p`, `1080p` | | `seed` | integer | No | -- | Random seed; `-1` for random | #### Example ```bash OUTPUT_URL=$(wavespeed run wavespeed-ai/minimax-h3/text-to-video \ -p "A timelapse of a city skyline transitioning from day to night, cinematic slow pan, distant traffic hum" \ -i aspect_ratio="21:9" \ -i duration=10 \ -i resolution="1080p" \ --json | jq -r '.outputs[0]') ``` ### Image-to-Video **Model ID:** `wavespeed-ai/minimax-h3/image-to-video` The output canvas follows the first image's aspect ratio; there is no `aspect_ratio` field. #### Parameters | Parameter | Type | Required | Default | Description | |-----------|------|----------|---------|-------------| | `image` | string | Yes | -- | First-frame image URL | | `prompt` | string | Yes | -- | Motion, scene and soundtrack | | `last_image` | string | No | -- | Last-frame image URL; the video interpolates from the first frame to it | | `duration` | integer | No | `5` | Seconds. Range: 3-15 | | `resolution` | string | No | `768p` | One of: `480p`, `540p`, `768p`, `1080p` | | `seed` | integer | No | -- | Random seed; `-1` for random | #### Example ```bash OUTPUT_URL=$(wavespeed run wavespeed-ai/minimax-h3/image-to-video \ -i image=@./start-frame.png \ -i last_image=@./end-frame.png \ -p "Smooth transition from day to night as the lights come on, crickets begin to chirp" \ -i duration=8 \ --json | jq -r '.outputs[0]') ``` ### Reference-to-Video **Model ID:** `wavespeed-ai/minimax-h3/reference-to-video` At least one reference input is required. In the prompt, refer to inputs as ``..``, `