Seedream 5.0 Pro is LIVE | Try in Image Generator →

Hailuo 2.3 I2V Standard

minimax /

MiniMax Hailuo 2.3 Standard is an image-to-video model producing physics-aware 768p output with a 2.5x efficiency improvement. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

image-to-video
Input

Idle

$0.28per run·~35 / $10

Next:

ExamplesView all

Camera: A ground-level, low-angle shot that shakes violently (like an earthquake). The camera rapidly pulls back (dolly out) as Hulk raises both fists high above his head. Effect: Hulk lets out a furious, wide-mouthed roar, then smashes both fists down onto the street in front of him. The asphalt explodes upwards in a shockwave of shattered concrete chunks and dust. Nearby parked cars are thrown into the air. Sounds/Voices: An earth-shattering, deep-chested "ROOOOAAAAR!" followed immediately by the deafening "CRACK-BOOM" of the impact. The sounds of twisting metal and shattering glass echo. Mood: Uncontrollable rage, catastrophic destruction, and immense, raw power. Lighting: Bright, harsh daylight (like the image). The air fills with thick concrete dust, catching the sunbeams. Strong shadows emphasize Hulk's massive muscles.

A medieval archer in chainmail and helmet, with intense, focused eyes, fully draws his longbow and releases the arrow directly towards the enemy lines. Instantly, the camera locks onto the arrow, rapidly accelerating and flying with it in a thrilling 'arrow-cam' perspective. The arrow soars high over the chaotic battlefield, revealing clashing armies, burning siege engines, and the crumbling castle ruins below. After a few seconds of high-speed flight, the arrow makes a dramatic, hard impact, embedding itself deep into the wooden shield of an advancing enemy soldier. Cinematic, high-action, blockbuster movie scene, projectile POV, dynamic camera, epic medieval battle, intense, high-speed, dramatic impact.

A vibrant K-pop girl group of four members, each with unique, colorful hairstyles and stylish stage outfits, performs a high-energy, perfectly synchronized dance routine on a brightly lit concert stage. They execute sharp, precise movements with powerful grace, transitioning seamlessly between formations. Their expressions are confident and charismatic, engaging directly with the audience. Dynamic camera angles capture their full body choreography and close-ups of their captivating visuals. Fast-paced, energetic, pop concert atmosphere, glamorous, bold fashion, professional choreography, bright spotlights, fan cheering implied, blockbuster music video quality.

Camera: A slow, deliberate low-angle orbit shot around the armored warrior. The camera then subtly pulls back (dolly out), revealing more of the desolate, burning cityscape behind them. Effect: The warrior's steam-punk-esque goggles subtly fog and clear. The burning car in the background flickers with intense orange flames and billows thick, dark smoke that slowly drifts across the frame. Loose debris (dust, embers) gently shifts and floats in the polluted air. The neon sign flickers erratically. Sounds/Voices: A low, tense, ambient drone mixed with the crackling and roaring of the burning car. The distant, hollow sound of wind whistling through derelict buildings. The erratic, soft "BZZZT" of the neon sign. Mood: Gritty, desolate, dangerous, and atmospheric. A sense of weary vigilance in a ruined world. Lighting: The scene is dominated by the sickly, ominous green glow of the sky and the harsh, flickering orange-red light from the burning car, casting dynamic shadows. The neon sign emits a stark, pulsing pink and blue glow, reflecting off the rusty armor.

Camera: A dynamic, low-angle orbit shot that quickly circles the robot. As the laser fires, the camera suddenly whips over and tracks the laser beam to the alien warlord, then violently shakes upon impact. Effect: The robot's laser weapons fire intense, glowing red beams that visibly scorch the air as they cut across the ruined cityscape. The alien warlord hovers menacingly, surrounded by crackling purple energy that pulses and flares as it deflects the laser. Debris from the surrounding ruined buildings continuously falls and shifts with dramatic smoke and sparks. Sounds/Voices: The sharp, powerful "ZAP!" and continuous "HISSSS" of the robot's laser fire. The alien warlord emits a deep, guttural, distorted growl/chant as it deflects the energy. The creaking and groaning of collapsing metal and distant explosions fill the soundscape. Mood: Intense, climactic, desperate, and visually spectacular. A desperate, high-stakes final battle. Lighting: The scene is dominated by the blinding red glow of the robot's lasers and the vibrant, pulsating purple energy of the alien warlord. These primary light sources cast dynamic, contrasting shadows across the ruined city, highlighting the textures of metal and debris. Flames from burning wreckage provide flickering orange highlights.

Related Models

README

MiniMax Hailuo 2.3 — Image-to-Video (I2V) Standard

Hailuo 2.3 I2V Standard is MiniMax’s latest image-to-video model, designed to animate static images into smooth, cinematic video clips. It combines natural motion synthesis, physical realism, and character consistency — enabling creators to bring still visuals vividly to life.

🎬 Why It Looks Great

  • Cinematic Motion – Generates dynamic, camera-like movement such as panning, tracking, and zooming.
  • Physics-Aware Animation – Simulates object dynamics (wind, light reflection, motion blur) with realistic precision.
  • Consistent Structure – Preserves the original image’s composition, lighting, and character details.
  • Flexible Duration Options – Choose between 6-second and 10-second clips.
  • Professional Fidelity – Delivers filmic quality suitable for storytelling, ads, or product demos.

⚙️ Limits and Performance

  • Input: single reference image (JPEG / PNG)
  • Optional Input: text prompt to guide motion and scene behavior
  • Duration: 6 seconds or 10 seconds
  • Output resolution: 768p

💰 Pricing

DurationResolutionCost per Job
6 seconds768p$0.28
10 seconds768p$0.56

🚀 How to Use

  1. Upload a reference image as your base frame.
  2. (Optional) Add a prompt describing the desired motion or action. Example: “A motorcycle drives along a winding mountain road, camera panning smoothly to follow.”
  3. Choose the duration (6 s or 10 s).
  4. Click Run and wait for processing.
  5. Download your animated video.

💡 Pro Tips

  • Keep prompts concise (1–2 sentences) to maintain visual stability.
  • Use camera verbs like pan, follow, zoom, or rotate to define motion direction.
  • For dynamic results, pick 10 s; for previews or loops, choose 6 s.
  • The model preserves fine lighting and depth details — great for cinematic storytelling and concept visuals.
Note:This website uses AI models provided by third parties.

Hailuo 2.3 I2v Standard API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/minimax/hailuo-2.3/i2v-standard with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Hailuo 2.3 I2v Standard below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "duration": 6,
    "enable_prompt_expansion": false
}
JSON
)

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

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; 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 has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  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
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/minimax/hailuo-2.3/i2v-standard";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
        "duration": 6,
        "enable_prompt_expansion": false
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = task.urls?.get ||
  `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout"].includes(result.status)) throw new Error(JSON.stringify(result));
  if (!["created", "processing"].includes(result.status)) throw new Error("Unexpected status: " + result.status);
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "image": "https://interactive-examples.mdn.mozilla.net/media/cc0-images/painted-hand-298-332.jpg",
    "duration": 6,
    "enable_prompt_expansion": False
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/minimax/hailuo-2.3/i2v-standard", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = task.get("urls", {}).get("get") or f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout"}:
        raise RuntimeError(result)
    if status not in {"created", "processing"}:
        raise RuntimeError(f"Unexpected status: {status}")
    time.sleep(2)

Hailuo 2.3 I2v Standard API — Frequently asked questions

What is the Hailuo 2.3 I2v Standard API?

Hailuo 2.3 I2v Standard is a MiniMax model for video generation from images, exposed as a REST API on WaveSpeedAI. MiniMax Hailuo 2.3 Standard is an image-to-video model producing physics-aware 768p output with a 2.5x efficiency improvement. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Hailuo 2.3 I2v Standard API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates production-oriented Python, JavaScript, and cURL examples with timeouts, transient-error handling, and safe GET retries. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/minimax/minimax-hailuo-2.3-i2v-standard.

How much does Hailuo 2.3 I2v Standard cost per run?

Hailuo 2.3 I2v Standard starts at $0.28 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Hailuo 2.3 I2v Standard accept?

Key inputs: `prompt`, `image`, `duration`, `enable_prompt_expansion`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/minimax/minimax-hailuo-2.3-i2v-standard.

How long does Hailuo 2.3 I2v Standard take to generate?

Median end-to-end generation time on WaveSpeedAI is around 64 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.

Can I use Hailuo 2.3 I2v Standard outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (MiniMax). The license summary appears on the model card above; see WaveSpeedAI's Terms of Service for platform-level conditions.

Hailuo 2.3 I2V Standard | Fast Image-to-Video API | WaveSpeedAI