Introduction
Image to video on MiniMax H3 HighSpeed starts from a still you already have and animates it into a 4–15 second MP4 at 768p, with sound. The picture fixes the look; the prompt only has to say what moves.
Choose a mode by starting material
| What you have | Mode |
|---|---|
| only an idea | MiniMax H3 HighSpeed Text to video |
| a frame to animate, with an optional closing frame | MiniMax H3 HighSpeed Image to video |
| people, outfits, places, motion clips or voices | MiniMax H3 HighSpeed Reference to video |
Key features & highlights
The frame sets the look
Faces, clothing, light and composition come from your opening frame. The clip keeps its shape, and there is no aspect-ratio field, so crop the still to the format you want, wide or tall, before you send it.
Optional closing frame
Add last_image_url and the clip settles on that second picture, giving you a controlled move between two stills. That helps when one shot has to cut cleanly into the next.
Sound included
The motion arrives with matching sound such as surf, footsteps, a laugh or a quoted line, at no extra charge. An Audio: line in the prompt steers the music style or room tone.
Request parameters
| Parameter | Required | Description |
|---|---|---|
prompt | Yes | Required. Accepts 1 to 7,000 characters and rejects anything longer. at least 1 characters · at most 7000 characters |
image_url | Yes | Required opening frame; the clip follows its shape. Each side must measure 256 to 5,760 pixels, with a width-to-height ratio between 0.4 and 2.5. |
last_image_url | No | Optional second image for the end of the shot; the clip comes to rest on it. Adds nothing to the price. |
resolution | No |
|
duration_seconds | No | A whole number from 4 to 15 (default 5), with each second billed at the 768p rate. A 4-second request came back as a 3.75-second clip. |
Pricing
You pay for each second of the finished clip at 768p; the live rate is on the model page.
| Specification | Price |
|---|---|
| $0.072 / second |
Use cases
Product and fashion stills that move
A catalogue photo of a jacket, bag or pair of shoes can open a short clip in which the item is worn, turned or picked up, in the lighting of the original shoot.
Bringing a portrait to life
A single portrait becomes a short clip with a smile, a head turn or a step toward the camera, which is enough to bring a profile picture or character card to life.
Controlled transitions
With an opening and a closing frame, the model fills in the move between them: before and after shots, outfit changes, or a character who starts in one pose and ends in another.
Prompt guide & pro tips
Describe the next moment, not the picture
Use the prompt to add a short sequence to the frame: a product turning toward its label, a portrait looking up, the camera drifting closer. Put the action first, then camera, then sound.
Use frames that fit the limits
Keep each side between 256 and 5,760 pixels and the width-to-height ratio between 0.4 and 2.5. The output follows your frame's shape at 768p, so check faces, labels and edges in the result before you publish.
Pair frames that match
Give the opening and closing frames the same framing and aspect ratio, and plan one transition that fits inside 4 to 15 seconds. Watch the last second to see whether the shot lands on the closing frame.
You pay for each second of the finished clip at 768p; the live rate is on the model page.
API quick start
# Generate the idempotency key once; reuse it when retrying after a lost response.
export SPICY_IDEMPOTENCY_KEY="${SPICY_IDEMPOTENCY_KEY:-$(uuidgen)}"
curl -X POST https://api.spicyapi.ai/api/v1/jobs/createTask \
-H "Authorization: Bearer $SPICY_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $SPICY_IDEMPOTENCY_KEY" \
-d '{
"model": "minimax/h3-highspeed/image-to-video",
"input": {
"duration_seconds": 5,
"image_url": "https://example.com/reference.png",
"prompt": "A slow aerial shot drifting over a misty pine forest at sunrise",
"resolution": "768p"
}
}'
# Copy data.taskId from the response into TASK_ID, then poll the status.
TASK_ID="TASK_ID_FROM_RESPONSE"
curl "https://api.spicyapi.ai/api/v1/jobs/recordInfo?taskId=$TASK_ID" \
-H "Authorization: Bearer $SPICY_API_KEY"
See the API reference for authentication, the complete schema, polling, and error handling.
















