Hailuo 02 Fast is a minimax image-to-video model that creates high-quality 6s and 10s clips at 512p for creators and marketers. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
निष्क्रिय
$0.1प्रति रन·~10 / $1
A top snowboarder launches off a massive kicker on a cliff's edge, executing a grab in mid-air. The backdrop is a clear blue sky and a vast mountain range. Powdered snow erupts behind him like smoke in the bright sunlight. Drone-following shot, capturing his perfect form in the air and his smooth landing from a side angle. Extreme sports, 4K, high frame rate, GoPro-like perspective.
A girl in a white tracksuit is jogging on a coastal road. The soft morning sun illuminates the side of her face as a bead of sweat rolls down her cheek. Waves rhythmically crash onto the beach in the background, with the horizon stretching out where the sea meets the sky. A side-tracking shot captures her light-footed stride and determined expression. Motion blur effect, inspirational mood, fresh colors.
In a dimly lit boxing ring, two boxers are intensely facing off. Their eyes are sharp, their bodies slightly swaying as they look for an opening. Sweat glistens on their foreheads. The camera rapidly switches between the two fighters, capturing the moments of their punches, dodges, and powerful expressions. Competitive, tense, a sense of power.
A surfer is riding inside the barrel of a massive, crystal-clear wave. The camera is positioned inside the tube, offering a breathtaking view of the water wall enveloping the surfer. Sunlight filters through the curtain of water, creating dreamlike light effects. Water splashes, the surfer's expression is focused and exhilarated. First-person view (FPV), wide-angle lens, underwater photography texture, realism.
A tranquil lake at sunset, a gentle breeze rustles the trees on the shore, the camera slowly pans across the water, the golden light reflects on the ripple, ultra realistic, cinematic, high detail.
Hailuo 02 Fast is the speed/throughput variant of the Hailuo 02 engine. It animates a single image into a smooth clip in 6s or 10s, with prompt-aware motion, strong physics, and a cost optimized for rapid iteration and batch A/B testing.
| Name | Description |
|---|---|
| image* | Starting frame (JPG/PNG). Required. |
| prompt | Optional scene/camera/motion description to guide animation. |
| duration | 6s or 10s. |
| enable_prompt_expansion | Auto-refines prompt + safety check. |
| go_fast | Prioritize speed with a moderate quality trade-off (recommended ON). |
| Duration | Cost per job |
|---|---|
| 6 s | $0.10 |
| 10 s | $0.15 |
A top snowboarder launches off a massive kicker on a cliff’s edge; drone follows, powdered snow billows in bright sunlight; fast shutter, cinematic grade.
Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/minimax/hailuo-02/fast 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 02 Fast below.
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": true,
"go_fast": true
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/minimax/hailuo-02/fast" \
-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
doneconst submitUrl = "https://api.wavespeed.ai/api/v3/minimax/hailuo-02/fast";
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": true,
"go_fast": true
}),
});
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));
}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": True,
"go_fast": True
}
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-02/fast", 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 02 Fast is a MiniMax model for video generation from images, exposed as a REST API on WaveSpeedAI. Hailuo 02 Fast is a minimax image-to-video model that creates high-quality 6s and 10s clips at 512p for creators and marketers. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.
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-02-fast.
Hailuo 02 Fast starts at $0.10 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.
Key inputs: `prompt`, `image`, `duration`, `enable_prompt_expansion`, `go_fast`. 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-02-fast.
Median end-to-end generation time on WaveSpeedAI is around 116 seconds per request, based on recent successful runs. Queue time varies with global demand; live status is visible in the prediction record.
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.