MODEL IDminimax:h3@0
live

MiniMax H3

MiniMax
by MiniMax

MiniMax H3 is a multimodal video generation model that supports text-to-video, first-frame and keyframe-guided generation, multi-reference conditioning, and audio-video continuation in a single workflow. It accepts text together with images, videos, and audio references to keep subjects, voice, motion, and scene identity more consistent across shots, while generating synchronized sound natively rather than as a separate dubbing pass. It is well suited to cinematic multi-shot generation, reference-driven character performance, instruction-based video editing, and continuation workflows that extend an existing clip or audio segment into a seamless new video.

MiniMax H3

First and last frame with MiniMax H3

How to animate a still image with MiniMax H3 and bridge a first and last frame into one continuous shot, with the output following the image's own aspect ratio.

Alongside plain text-to-video, MiniMax H3 takes still images as anchor frames. Give it one image and it animates from there. Give it a first and a last image and it generates the shot that travels between them. Either way the clip comes back with native synced audio, and the output takes the aspect ratio of the image you feed it.

The bottle on the right started as the still on the left. H3 held its look and gave it motion, condensation, and sound from the prompt.

Request shape

Anchor frames go in inputs.frameImages, each an image plus a frame position of first or last. There is no width or height in this mode, and the output follows the aspect ratio of the image you provide. The positivePrompt describes the motion and the soundscape, not the scene, since the image already fixes the scene.

import { createClient } from '@runware/sdk'

const client = await createClient({ apiKey: process.env.RUNWARE_API_KEY })
await client.connect()

const [result] = await client.run({
  model: 'minimax:h3@0',
  positivePrompt: 'The camera slowly orbits the bottle as condensation slides down the glass and fine bubbles rise inside, sunlight glinting across the wet surface. Sound: the soft fizz of carbonation, a light clink of glass, gentle kitchen ambience.',
  duration: 6,
  inputs: {
    frameImages: [
      {
        image: 'https://im.runware.ai/image/os/a14d18/ws/2/ii/9f0a1b2c-3d4e-5f60-a1b2-c3d4e5f6a708.jpg',
        frame: 'first'
      }
    ]
  }
})
import asyncio
import os

from runware import Runware


async def main():
    async with Runware(api_key=os.environ["RUNWARE_API_KEY"]) as client:
        results = await client.run({
            "model": "minimax:h3@0",
            "positivePrompt": "The camera slowly orbits the bottle as condensation slides down the glass and fine bubbles rise inside, sunlight glinting across the wet surface. Sound: the soft fizz of carbonation, a light clink of glass, gentle kitchen ambience.",
            "duration": 6,
            "inputs": {
                "frameImages": [
                    {
                        "image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/9f0a1b2c-3d4e-5f60-a1b2-c3d4e5f6a708.jpg",
                        "frame": "first"
                    }
                ]
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "c8d9e0f1-2a3b-4c4d-9e5f-6a7b8c9d0e1f",
      "model": "minimax:h3@0",
      "positivePrompt": "The camera slowly orbits the bottle as condensation slides down the glass and fine bubbles rise inside, sunlight glinting across the wet surface. Sound: the soft fizz of carbonation, a light clink of glass, gentle kitchen ambience.",
      "duration": 6,
      "inputs": {
        "frameImages": [
          {
            "image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/9f0a1b2c-3d4e-5f60-a1b2-c3d4e5f6a708.jpg",
            "frame": "first"
          }
        ]
      }
    }
  ]'
runware run minimax:h3@0 \
  positivePrompt="The camera slowly orbits the bottle as condensation slides down the glass and fine bubbles rise inside, sunlight glinting across the wet surface. Sound: the soft fizz of carbonation, a light clink of glass, gentle kitchen ambience." \
  duration=6 \
  inputs.frameImages.0.image=https://im.runware.ai/image/os/a14d18/ws/2/ii/9f0a1b2c-3d4e-5f60-a1b2-c3d4e5f6a708.jpg \
  inputs.frameImages.0.frame=first
{
  "taskType": "videoInference",
  "taskUUID": "c8d9e0f1-2a3b-4c4d-9e5f-6a7b8c9d0e1f",
  "model": "minimax:h3@0",
  "positivePrompt": "The camera slowly orbits the bottle as condensation slides down the glass and fine bubbles rise inside, sunlight glinting across the wet surface. Sound: the soft fizz of carbonation, a light clink of glass, gentle kitchen ambience.",
  "duration": 6,
  "inputs": {
    "frameImages": [
      {
        "image": "https://im.runware.ai/image/os/a14d18/ws/2/ii/9f0a1b2c-3d4e-5f60-a1b2-c3d4e5f6a708.jpg",
        "frame": "first"
      }
    ]
  }
}
Response
[
  {
    "taskType": "videoInference",
    "taskUUID": "c8d9e0f1-2a3b-4c4d-9e5f-6a7b8c9d0e1f",
    "videoUUID": "5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e",
    "videoURL": "https://vm.runware.ai/video/os/a14d18/ws/2/vi/5b6c7d8e-9f0a-4b1c-8d2e-3f4a5b6c7d8e.mp4"
  }
]

An image is passed by URL or by the UUID of a previous generation. With no frameImages at all, the same model runs as text-to-video.

Animating from a first frame

A single image at frame: first sets the opening frame, and the prompt says what happens next. This is the mode for bringing a fixed composition to life: the still locks the look, and the model adds only motion and sound. The landscape below is one photograph, then the same photograph animated:

The cliff, the light, and the composition are exactly the still. What the prompt added is the drift of the mist, the roll of the waves, and the surf on the soundtrack. Describe motion the frame can support: the wind and water were already implied by the scene, so asking them to move reads as natural rather than invented.

Bridging a first and last frame

Add a second image at frame: last and H3 generates the shot that travels from the first to the last. It works best when the two frames share a composition and differ in one thing, so the model has a clean path to interpolate. Below, the same peony as a closed bud and in full bloom:

H3 generates the bloom between the two frames

The closed peony bud opens across the shot, petals unfurling layer by layer until it reaches full bloom, one smooth continuous time-lapse. Soft and elegant. Sound: a gentle ambient swell and the faint papery rustle of opening petals.

Because the two frames are the same flower in the same position, the model can unfurl the petals continuously instead of cutting. Keep the last frame reachable from the first: a bud opening to a bloom morphs cleanly, but two unrelated images produce a hard change partway through rather than a transition. The most reliable last frames are an edit of the first, changing state, light, or one element while holding the frame.

The output follows the image

Because this mode has no width or height, the video comes out at the aspect ratio of the anchor image. A vertical still yields a vertical clip with no extra settings, which makes it the direct route to social formats: shoot the frame in the shape you need and the video matches.

To change format, change the image, not a parameter. The same portrait rendered at 16:9 would give a 16:9 clip.

Directing the motion and the sound

The prompt in this mode is a motion and audio brief, not a scene description. The image owns the composition, so spend the words on what moves and what it sounds like. Two habits carry most of the results:

  • Ask for motion the frame already implies. Hair in a breeze, a blink, drifting mist, rising bubbles, a slow camera push. Motion that fits the still lands. Motion that fights it (a static portrait suddenly sprinting) tends to break the likeness.
  • Write the soundscape. The same Sound: clause that shapes text-to-video works here, so the surf, the fizz, and the rustle of petals all came from the prompt. An anchored clip with a named soundscape feels finished rather than like a silent moving photo.

Subtle motion holds identity best. A portrait that blinks and lets its hair move stays recognisably the same person, while a portrait asked to perform a big action drifts from the source. For a strong, specific performance, drive it with a reference video instead of a first-frame prompt.

Tips

  1. Use one frame to animate, two to transition. A single first frame brings a still to life, and a first and a last generate the shot between them.

  2. Keep the last frame reachable. Bud to bloom, day to night, closed to open. Deriving the last frame as an edit of the first keeps the path clean.

  3. Let the image set the format. There is no width or height here, so the clip matches the anchor image. Make the still vertical for vertical video.

  4. Prompt motion, not the scene. The frame already fixes the look, so describe what moves and how the camera behaves.

  5. Write the sound. A Sound: clause turns an animated still into a finished clip with synced audio.

  6. Keep the motion honest to the still. Small, physical movements preserve the likeness, while large actions the frame cannot support tend to warp it.