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

Editing video with MiniMax H3

How to edit a finished clip with a prompt in MiniMax H3: replace a subject, relight a scene, add or remove elements, and combine edits, keeping the rest untouched.

The other reference modes make something new. Editing changes something you already have. Pass a finished clip in inputs.referenceVideos, describe the edit in the prompt, and MiniMax H3 returns the same shot with your change applied and everything else left alone. The subject keeps moving, the camera keeps its path, and only what you named is different.

SourceEdited
The same park bench, edited from bright daylight to a warm-lamp night.

That bench was shot once in flat daylight. Naming only the light moved the whole frame to night, while the bench, the tree, and the drift of the camera came through the edit unchanged.

Request shape

The clip you want to edit goes in inputs.referenceVideos, and the prompt is an instruction rather than a description. Point at the source as "Video 1", name the change, and state what must stay. Setting width and height to the source's aspect keeps the framing, or omit them and H3 follows the source.

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: 'In Video 1, change the lighting from bright day to night: a deep blue sky, a warm lamppost glow across the bench, and soft moonlight on the grass. Keep the bench, the tree, and the camera drift exactly the same. Sound: soft night crickets.',
  width: 2560,
  height: 1440,
  duration: 5,
  inputs: {
    referenceVideos: [
      'https://vm.runware.ai/video/os/a14d18/ws/2/vi/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.mp4'
    ]
  }
})
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": "In Video 1, change the lighting from bright day to night: a deep blue sky, a warm lamppost glow across the bench, and soft moonlight on the grass. Keep the bench, the tree, and the camera drift exactly the same. Sound: soft night crickets.",
            "width": 2560,
            "height": 1440,
            "duration": 5,
            "inputs": {
                "referenceVideos": [
                    "https://vm.runware.ai/video/os/a14d18/ws/2/vi/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.mp4"
                ]
            }
        })


asyncio.run(main())
curl https://api.runware.ai/v1 \
  -H "Authorization: Bearer $RUNWARE_API_KEY" \
  -H "Content-Type: application/json" \
  -d '[
    {
      "taskType": "videoInference",
      "taskUUID": "b7c8d9e0-1f2a-4b3c-9d4e-5f6a7b8c9d0e",
      "model": "minimax:h3@0",
      "positivePrompt": "In Video 1, change the lighting from bright day to night: a deep blue sky, a warm lamppost glow across the bench, and soft moonlight on the grass. Keep the bench, the tree, and the camera drift exactly the same. Sound: soft night crickets.",
      "width": 2560,
      "height": 1440,
      "duration": 5,
      "inputs": {
        "referenceVideos": [
          "https://vm.runware.ai/video/os/a14d18/ws/2/vi/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.mp4"
        ]
      }
    }
  ]'
runware run minimax:h3@0 \
  positivePrompt="In Video 1, change the lighting from bright day to night: a deep blue sky, a warm lamppost glow across the bench, and soft moonlight on the grass. Keep the bench, the tree, and the camera drift exactly the same. Sound: soft night crickets." \
  width=2560 \
  height=1440 \
  duration=5 \
  inputs.referenceVideos.0=https://vm.runware.ai/video/os/a14d18/ws/2/vi/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.mp4
{
  "taskType": "videoInference",
  "taskUUID": "b7c8d9e0-1f2a-4b3c-9d4e-5f6a7b8c9d0e",
  "model": "minimax:h3@0",
  "positivePrompt": "In Video 1, change the lighting from bright day to night: a deep blue sky, a warm lamppost glow across the bench, and soft moonlight on the grass. Keep the bench, the tree, and the camera drift exactly the same. Sound: soft night crickets.",
  "width": 2560,
  "height": 1440,
  "duration": 5,
  "inputs": {
    "referenceVideos": [
      "https://vm.runware.ai/video/os/a14d18/ws/2/vi/1a2b3c4d-5e6f-4708-9a1b-2c3d4e5f6071.mp4"
    ]
  }
}
Response
[
  {
    "taskType": "videoInference",
    "taskUUID": "b7c8d9e0-1f2a-4b3c-9d4e-5f6a7b8c9d0e",
    "videoUUID": "8e9f0a1b-2c3d-4e5f-9a6b-7c8d9e0f1a2b",
    "videoURL": "https://vm.runware.ai/video/os/a14d18/ws/2/vi/8e9f0a1b-2c3d-4e5f-9a6b-7c8d9e0f1a2b.mp4"
  }
]

Editing is part of Omni Reference, the same mode that carries motion and performance. The difference is intent: there you lift a reference onto a new scene, here you transform the source in place. Because it is Omni Reference, it cannot be combined with first and last frame, and the edited clip comes back with native audio.

Replacing a subject or object

The cleanest edit swaps one element for another. Name the thing to replace, name what replaces it, and restate everything that should hold. Here the source is a woman sipping a cappuccino, and the edit turns the cup into a glass of iced matcha while her motion runs on untouched:

The lift and the sip are the same gesture in both clips, but the cup is now a glass. The instruction that makes this reliable is the second half: "keep the woman, her exact motion and sip, the table, and the blurred background." Editing works by preservation, so the model needs to know what not to touch as clearly as what to change.

Relighting and backgrounds

The hero at the top is a relight: an edit that changes the light across the whole frame while the geometry stays fixed. It is the fastest way to get a night version of a daytime shot, or to move a scene from overcast to golden hour, without reshooting. What changed there is the sky, the colour temperature, and where the light falls, and nothing else. Relighting also invites a matching audio edit: the daytime birdsong became night crickets because the prompt asked for it, so the sound tracks the new time of day. The same approach replaces a background, swapping what is behind the subject while the subject holds.

Adding and removing elements

You can also introduce or delete objects. Adding reads as placing new items into the scene that behave as though they were always there, and removing works the same way in reverse. Here two props are added to a kitchen counter while the lemons, the light, and the push-in stay put:

The loaf and the flowers sit in the light the scene already had, and the push-in carries across them as if they had been on the counter the whole time. To remove something instead, name it and say to take it out, then describe what should fill the space it leaves.

Editing keeps whatever you do not mention, so the most common failure is under-specifying. If a detail matters, name it in the "keep" half of the instruction. A short list of what to hold is worth more than a long description of the change.

Combining edits in one instruction

Single edits are reliable, and H3 also lands several at once. Here one call against a plain daytime street makes three changes together: a car swapped, the light pushed to sunset, and a cyclist added, with the houses, trees, road, and camera push all held.

Structure the prompt as a numbered or listed set of changes followed by one clear "keep everything else the same", and the model treats each edit as its own instruction. The more edits you stack, the more the preservation clause earns its place, since it is the only thing telling H3 which of the original frame to protect.

Where it fits

Editing is strongest for coherent, physical changes: a swap, a relight, an added prop, a new background. It holds motion and camera continuity well because it is working from a real clip rather than inventing one. It is weaker where precision is unforgiving, so small on-screen text, exact logos, or a busy crowd that must stay frame-for-frame identical can drift. When an edit is delicate, isolate it: one change per call reads more cleanly than five, and a shorter source gives the model less to preserve.

Tips

  1. Point at the source as "Video 1". The clip in inputs.referenceVideos is the thing you are editing, and naming it keeps the instruction unambiguous.

  2. Say what to keep, not just what to change. Editing preserves everything you leave out, so a clear "keep the subject, the motion, and the background" is what makes the change surgical.

  3. Match the output aspect to the source. Set width and height to the source's pair, or omit them so H3 follows the source and holds the framing.

  4. Edit the sound too. A relight or a scene change can carry a matching audio edit in the same Sound: clause, so day birdsong can become night crickets.

  5. List multiple edits explicitly. Number the changes and close with one preservation clause, and the model applies each in a single pass.

  6. Isolate delicate edits. Fine text or exact detail holds better as one change on a short clip than as one of several on a long one.