MiniMax
Hailuo 2.3
hailuo-2.3/text-to-video
A video generation model launched by MiniMax that supports both text-to-video and image-to-video, with improvements over the previous generation in anime-style consistency, full-body motion rendering, and the realism of subtle facial expressions, making it suitable for anime shorts and live-action-feel commercial videos
Try hailuo-2.3/text-to-video
Input
Showcases
View all showcasesOutput
videoPricing
hailuo-2.3/text-to-video per video
| Specifications | Unit Price |
|---|---|
| 6S | $0.400 |
| 10S | $0.800 |
Overview
Hailuo 2.3 is a video generation model series from MiniMax, and this route is its text-to-video version: input a text description and directly produce video material. It continues the series' emphasis on smooth motion and character performance, making it suitable for developers who need to quickly turn creative scripts into dynamic visuals, such as anime-style short films, character performance content, and preliminary test shoots for commercial promos. Call it through the unified HiAPI.ai interface without integrating with upstream providers separately.
Core Highlights
- Direct text-to-video, covering the pure creative workflow — A single prompt is enough to generate a video, making it suitable for creative pipelines that start from the script stage without existing footage.
- More complete character motion and facial performance — This series has targeted optimizations for complex full-body movements and realistic micro-expressions, making close-up character shots more usable in final cuts.
- Improved stability for stylized subjects such as anime — Generation quality and consistency for special art styles such as 2D anime have been strengthened, facilitating serialized content production.
- Duration can be selected according to material use — Supports generating 6-second or 10-second videos; short material for test shoots, long material for final-cut segments.
Capabilities
Text-to-video generation: Describe the scene content with a prompt of up to 2000 characters and directly obtain a video file, suitable for building shots from scratch.
Two duration outputs: You can specify 6 seconds or 10 seconds, with 6 seconds as the default, making it easy to choose material length according to placement or editing rhythm.
Automatic prompt optimization: prompt_optimizer is enabled by default and can complete short descriptions into more executable generation instructions, reducing tuning costs.
Character and stylized performance: The series' capabilities cover full-body movements such as dance and anime styles, suitable for content that requires character performance or consistent style.
Use Cases
- Script-to-video for anime and 2D creators — Input stylized plot descriptions to produce short-film shots for social platform serials or style test clips.
- Script test shoots for advertising and product promos — Input product selling points and scene descriptions to produce dynamic sample videos for proposal presentations and direction confirmation before shooting.
- Shot generation for character performance content — Input dance or action descriptions to produce video clips with complete body movements for editing and material filling.
Limitations and Selection Advice
Only text-to-video is supported; images cannot be used as the first frame to drive the visuals. First and last frame control is not supported, so the starting and ending points of a shot cannot be precisely specified. The prompt limit is 2000 characters, and the maximum duration per generation is 10 seconds; longer narratives need to be generated in segments and then spliced together. If you already have reference images and want to maintain subject consistency, you should use the image-to-video route instead; if you value output speed and cost more than text-to-video capability, consider the lightweight version in the same series.
What's new
View changelog →- New model New model available: hailuo-2.3-fast/image-to-video
Frequently asked questions
View all FAQs →-
Does Hailuo 2.3 Image to Video require an input image?
Yes. hailuo-2.3/image-to-video is an image-to-video route. The image establishes the subject and opening composition; the prompt directs motion, camera, and environmental change.
-
Which durations and resolutions does Hailuo 2.3 Image to Video support?
The current HiAPI contract supports 6s / 10s. Check the page controls and API docs for the current options.
-
How is Hailuo 2.3 Image to Video billed?
Each generated video is billed at the selected duration tier. The page follows the global display unit, while the successful task record contains the final charge.
-
How can I improve subject consistency?
Use a clear, unobstructed source with a complete composition. Describe the main action and camera first, then name the appearance, material, and background relationships that must remain stable. Validate a short clip first.
Create a generation task
https://api.hiapi.ai/v1/tasks Headers
AuthorizationstringRequiredAccount API key. Required on every request. Example: Bearer YOUR_HIAPI_API_KEY. Get your API key
Content-TypestringOptionalThe request body is always parsed as JSON; when sent, only application/json (optionally with charset) is accepted — any other value returns 415. Example: application/json.
Idempotency-KeystringOptionalIdempotency key, up to 255 bytes. Retries with the same key from the same account create the task only once; replays return the original taskId.
On network timeouts or client retries, the same key creates the task only once — no double charges (scope: the API key's account). Use a business-unique identifier as the key (e.g. "order-42"); replays return the original taskId, and keys expire 24 hours after the first request. See the Unified Async API overview for the full scenario matrix.
Body
modelstringRequiredCurrent fixed value: hailuo-2.3/text-to-video
routestringOptionalCurrent fixed value: default
inputobjectRequired
Business parameters for hailuo-2.3/text-to-video and route default — see the parameter table below.
promptstringRequiredminLength 1maxLength 2000Text description for video generation, used to specify the visual content to be generated; given as a string, required input.
durationstringOptionalDefault: "6"Duration of the generated video, in seconds; given as a string, default 6.
610prompt_optimizerbooleanOptionalDefault: trueWhether to automatically optimize the prompt for better generation results; given as a boolean, default true.
callbackobjectOptional
Terminal-state notification config. When omitted, no callback is delivered — poll the task yourself. See the callback note below.
Provide callback.url when creating a task and HiAPI POSTs to your service once the task reaches a terminal state — no polling needed. The callback payload mirrors the task detail structure; signature verification, delivery retries and idempotency are documented on the Unified Async API overview page.
urlstringRequiredRequired when callback is present. A POST is sent to this URL once the task reaches a terminal state; must be a valid http(s) URL.
whenstringOptionalDefault: "final"Only final is supported today — notified on both success and fail.
finalstoragestringOptionalDefault: "temp"Artifact storage tier: temp (default, retained about 7 days) or persistent (long-term, billed by size). Insufficient balance or exceeding the storage cap silently downgrades to temp; the effective tier is shown in the task detail response.
temppersistentRequest examples
# Submit an async task; returns a taskId immediately (no waiting for generation)
curl -X POST "https://api.hiapi.ai/v1/tasks" \
-H "Authorization: Bearer $HIAPI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "hailuo-2.3/text-to-video",
"input": {
"prompt": "…",
"duration": "6",
"prompt_optimizer": true
}
}' const res = await fetch("https://api.hiapi.ai/v1/tasks", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.HIAPI_API_KEY}`,
"Content-Type": "application/json",
},
body: JSON.stringify({
model: "hailuo-2.3/text-to-video",
input: {
"prompt": "…",
"duration": "6",
"prompt_optimizer": true
}
}),
});
const task = await res.json();
// { code: 200, message: "success", data: { taskId } } import os, requests
res = requests.post(
"https://api.hiapi.ai/v1/tasks",
headers={"Authorization": f"Bearer {os.environ['HIAPI_API_KEY']}"},
json={
"model": "hailuo-2.3/text-to-video",
"input": {
"prompt": "…",
"duration": "6",
"prompt_optimizer": True
}
},
)
print(res.json()) # { code, message, data: { taskId } } 200 OK
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR"
}
} 400 Bad Request
{
"code": 400,
"message": "invalid request",
"data": null,
"error_code": "INVALID_REQUEST"
} Get task detail
https://api.hiapi.ai/v1/tasks/:id Response fields
taskIdstringRequiredTask ID, always prefixed with tk-hiapi-.
modelstringRequiredResolved full model name. Tasks submitted with the route parameter return base@route (e.g. gpt-image-2/text-to-image@ext); otherwise identical to the name passed at creation.
routestringOptionalPresent only when the task was submitted with an explicit route parameter; echoes the submitted value.
statusstringRequiredTask status.
queued Queued, not started yet.
handling Being processed.
archiving Processing finished, artifacts being prepared.
success Terminal: completed, artifacts available (output returned).
fail Terminal: failed (error returned).
After submission, check status: success and fail are terminal, everything else is non-terminal. Poll every 1–3 seconds until terminal. On success, download artifacts from output[].url and transfer them before expireAt; pass storage: "persistent" at creation time when long-term retention is needed.
creatednumberRequiredTask creation time (Unix seconds).
completednumberRequiredUnix seconds when the task reached a terminal state; fixed to 0 while not terminal.
outputarrayOptional
Present only when status == success. Artifact list — always an array; a single task may return multiple types at once (e.g. video + first_frame).
Array [ object ]
Array items
urlstringRequiredArtifact URL, directly downloadable.
typestringRequiredCurrent possible values: video, image, audio, first_frame, last_frame, thumbnail; more may be added later.
expireAtnumberRequiredUnix seconds until which the artifact remains accessible; download or transfer before it expires.
errorobjectOptional
Present only when status == fail.
codestringRequiredBusiness error code.
messagestringRequiredError description.
Response examples
Success
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-01HZTQ8BX2N3GM3YFK4Z9D7VQR",
"model": "happyhorse-1-0",
"status": "success",
"created": 1777282033,
"completed": 1777282099,
"output": [
{
"url": "https://cdn.hiapi.ai/tasks/.../video.mp4",
"type": "video",
"expireAt": 1777886899
}
]
}
} Processing (non-terminal)
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "archiving",
"created": 1777282033,
"completed": 0
}
} Failed
{
"code": 200,
"message": "success",
"data": {
"taskId": "tk-hiapi-...",
"model": "happyhorse-1-0",
"status": "fail",
"created": 1777282033,
"completed": 1777282099,
"error": {
"code": "TASK_FAILED",
"message": "task failed"
}
}
} Articles
View all articles →Related Models
View all models →Same Type
-
Gemini Omni 1.1 Flash Google $0.450 /video -
HeyGen Avatar IV HeyGen $0.150 /second -
Runway Gen 4.5 Runway $0.172 /second -
MiniMax H3 MiniMax $0.072 /second -
Grok Imagine 1.5 Lite xAI $0.029 /second -
LTX 2.5 Fast Lightricks $0.086 /second -
Kling 3.0 Turbo Kuaishou $0.130 /second -
Kling AI Avatar Kuaishou -- -
Wan 2.6 Flash Alibaba $0.043 /second -
Kling 4.0 Kuaishou $0.330 /second -
Hailuo 2.3 MiniMax $0.270 /video -
FLUX 3 Max Black Forest Labs $0.061 /second