Next-generation Hailuo motion
Hailuo 03 builds on the series that made complex human motion its signature, pushing body movement, dance, and fast action further with cleaner limb continuity and fewer artifacts than any previous Hailuo release.
Generate cinematic AI video with MiniMax's Hailuo 03 — the next-generation successor to Hailuo 2.3 — through one unified API. A single REST endpoint, async jobs, and webhooks, with no separate MiniMax account to manage.
Integrate Hailuo 03 with a single API call — one key, one unified endpoint, and shared billing across every model on Apiframe.
model: "hailuo-03" Hailuo 03 builds on the series that made complex human motion its signature, pushing body movement, dance, and fast action further with cleaner limb continuity and fewer artifacts than any previous Hailuo release.
Lighting direction, shadow transitions, and scene geometry stay stable through dynamic camera moves, with stronger physical realism than Hailuo 2.3 across collisions, fluids, and cloth.
Multi-step actions, camera direction, and scene composition follow the prompt more faithfully, so complex shots land in fewer retries — and bracketed camera moves give you director-style control from plain text.
Start from a text prompt, or supply a reference image as the first frame to animate a still — the same request shape as every other video model on Apiframe.
Beyond realism, the Hailuo family supports anime, illustration, ink-wash painting, game CG, and other distinct art styles with stable, vivid output.
Submit a generation, poll the job, or receive a webhook when the clip is ready — behind the same endpoint, pricing model, and API key as the rest of the Apiframe catalog.
A few outputs generated through the Hailuo 03 API on Apiframe.
Drone shot flying over a tropical coastline at sunrise, smooth cinematic motion
A vintage car driving through a rainy neon city at night, reflections on the asphalt
Time-lapse of clouds rolling over a mountain range in warm golden light
Send a single POST /v2/videos/generate request with your API key to
generate with Hailuo 03. The call returns a jobId you can poll or
receive via webhook.
curl -X POST https://api.apiframe.ai/v2/videos/generate \
-H "X-API-Key: afk_your_api_key_here" \
-H "Content-Type: application/json" \
-d '{
"prompt": "a cinematic sunrise over a futuristic cityscape, smooth camera push-in",
"model": "hailuo-03",
"hailuoParams": {
"image": "https://example.com/input.jpg",
"resolution": "768p",
"prompt_optimizer": true
}
}'import requests
response = requests.post(
"https://api.apiframe.ai/v2/videos/generate",
headers={
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
json={
"prompt": "a cinematic sunrise over a futuristic cityscape, smooth camera push-in",
"model": "hailuo-03",
"hailuoParams": {
"image": "https://example.com/input.jpg",
"resolution": "768p",
"prompt_optimizer": True
}
},
)
print(response.json()) # { "jobId": "...", "status": "QUEUED" }const response = await fetch("https://api.apiframe.ai/v2/videos/generate", {
method: "POST",
headers: {
"X-API-Key": "afk_your_api_key_here",
"Content-Type": "application/json",
},
body: JSON.stringify({
"prompt": "a cinematic sunrise over a futuristic cityscape, smooth camera push-in",
"model": "hailuo-03",
"hailuoParams": {
"image": "https://example.com/input.jpg",
"resolution": "768p",
"prompt_optimizer": true
}
}),
});
const { jobId } = await response.json();
console.log(jobId);Generation is asynchronous. A successful submission returns 202 Accepted with a jobId. Poll GET /v2/jobs/{id} (or supply a webhook_url) until the status is COMPLETED; the result field then holds the output URL(s).
{
"jobId": "b2c3d4e5-f6a7-8901-bcde-f23456789012",
"status": "QUEUED"
}curl https://api.apiframe.ai/v2/jobs/JOB_ID \
-H "X-API-Key: afk_your_api_key_here"import requests, time
while True:
job = requests.get(
"https://api.apiframe.ai/v2/jobs/JOB_ID",
headers={"X-API-Key": "afk_your_api_key_here"},
).json()
if job["status"] in ("COMPLETED", "FAILED"):
break
time.sleep(2)
print(job["result"])let job;
do {
await new Promise((r) => setTimeout(r, 2000));
job = await fetch("https://api.apiframe.ai/v2/jobs/JOB_ID", {
headers: { "X-API-Key": "afk_your_api_key_here" },
}).then((r) => r.json());
} while (job.status !== "COMPLETED" && job.status !== "FAILED");
console.log(job.result);Request parameters accepted by the Hailuo 03 endpoint. Model-specific options are nested under the params object shown below.
| Parameter | Type | Required | Default | Allowed / range | Description |
|---|---|---|---|---|---|
| prompt | string | required | — | — | Text description of what to generate. |
| model | string | required | "hailuo-03" | "hailuo-03" | The model identifier for this endpoint. |
| hailuoParams.image | string (URL) | optional | — | — | Use a still as the first frame. |
| hailuoParams.resolution | string | optional | "768p" | "768p", "1080p" | Resolution |
| hailuoParams.prompt_optimizer | boolean | optional | true | — | Let Hailuo rewrite your prompt for better results. |
Common questions about the Hailuo 03 API.
Hailuo 03 is MiniMax's next-generation video model and the successor to Hailuo 2.3, focused on stronger motion realism, physics, and prompt adherence for text-to-video and image-to-video.
Hailuo 03 is announced but not yet launched on Apiframe. It will be available at this page and through the API the moment MiniMax releases it — no code changes needed on your side beyond setting the model id.
A text prompt for text-to-video, or a prompt plus a reference image used as the first frame for image-to-video, with an optional prompt-optimizer toggle.
Per clip, based on resolution and duration, like the rest of the Hailuo family on Apiframe — you only pay for successful generations. Final pricing will be confirmed at launch.
Exactly like Hailuo 2.3: POST to /v2/videos/generate with model "hailuo-03", then poll the job or receive a webhook when the video is ready.
Still have questions?
Get your API key and integrate Hailuo 03 in minutes — Pay-as-you-go.
Questions? Join our Discord or contact sales.