A single continuous cinematic side-tracking shot beneath a wide concrete urban overpass in soft afternoon light. One adult skateboarder in a rust-orange jacket and dark trousers rides smoothly up a very low concrete bank, briefly clears the lip with the skateboard beneath both feet, lands on all four wheels with bent knees, and rolls forward. Keep the whole body and board visible. Foreground bridge columns pass slowly across the edge of the frame with strong parallax. Realistic human anatomy, balanced landing and grounded wheel contact. No cuts, no lettering, no logos, no advertising.
Hailuo 02 Standard Text to Video API
minimax/hailuo-02/standard/text-to-videoHailuo 02 Standard Text to Video transforms text prompts into cinematic 512P and 768P video scenes, supporting 6-second or 10-second clips, realistic physical simulation, and optional prompt refinement. It preserves compositional spatial coherence and fine lighting texture while delivering fluid camera movement and expressive character dynamics.
Examples
REST API Spec
Quick Start
Submit an endpoint request and poll for status. Replace example URLs with your accessible files.
Step 1: Configure API authentication
Obtain an API key from the dashboard and include Authorization: Bearer <API_KEY> in every request header.
- Submission Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Auth Header
- Authorization: Bearer VIDGO_API_KEY
Step 2: Submit a generation task
POST /api/generate/submit. Pass model and optional callback_url at the root level, with generation parameters inside input.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "minimax/hailuo-02/standard/text-to-video",
"input": {
"prompt": "One continuous wide natural-history shot in a dramatic limestone stone forest at dawn. A single great hornbill with a clearly defined curved yellow casque and black-and-cream wings stands on a near rock pinnacle. It crouches, pushes off, opens both wings and flies through a broad gap between two distant pillars. The camera pans gently to follow the bird as it becomes smaller in the landscape. Consistent anatomy and wingbeat rhythm, convincing depth and brief natural rock occlusion. No other birds, no cuts, no text, no logos.",
"prompt_optimizer": false,
"duration": 6
}
}
JSON
)
RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
CODE=$(printf '%s' "$RESPONSE" | jq -r '.code // empty')
if [ "$CODE" != "0" ] && [ "$CODE" != "200" ]; then
printf 'API error: %s
' "$RESPONSE" >&2
exit 1
fi
printf '%s
' "$RESPONSE"Step 3: Poll for task completion
Poll status with task_id; continue while not_started or running, and stop on finished or failed. Read video URLs from data.files[].file_url on success, or data.error_message on failure.
Status Endpoint
GET https://api.vidgo.ai/api/generate/status/{task_id}Poll status using task_id; continue while not_started or running, stop when finished or failed. On success, read data.files[].file_url; on failure, read data.error_message.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "510G37CWFG1XX0QG",
"status": "running",
"created_time": "2026-09-22T13:03:05"
}
}{
"code": 200,
"data": {
"task_id": "task-unified-...",
"status": "finished",
"files": [
{
"file_url": "https://storage.vidgo.ai/generated/video.mp4",
"file_type": "video"
}
],
"created_time": "2026-08-22T10:00:00Z",
"progress": 100,
"error_message": null
}
}Complete end-to-end script example
Expand to view a production-ready script with retry logic, error handling, and timeout safeguards.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "minimax/hailuo-02/standard/text-to-video",
"input": {
"prompt": "One continuous wide natural-history shot in a dramatic limestone stone forest at dawn. A single great hornbill with a clearly defined curved yellow casque and black-and-cream wings stands on a near rock pinnacle. It crouches, pushes off, opens both wings and flies through a broad gap between two distant pillars. The camera pans gently to follow the bird as it becomes smaller in the landscape. Consistent anatomy and wingbeat rhythm, convincing depth and brief natural rock occlusion. No other birds, no cuts, no text, no logos.",
"prompt_optimizer": false,
"duration": 6
}
}
JSON
)
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
--request POST \
--url "https://api.vidgo.ai/api/generate/submit" \
--header "Authorization: Bearer $VIDGO_API_KEY" \
--header "Content-Type: application/json" \
--data "$REQUEST_BODY")
TASK_ID=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.data.task_id // .task_id // empty')
BUSINESS_CODE=$(printf '%s' "$SUBMIT_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Submit failed:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
if [ -z "$TASK_ID" ]; then
printf 'Submit response did not include task_id:
%s
' "$SUBMIT_RESPONSE" >&2
exit 1
fi
START_TIME=$(date +%s)
POLL_DELAY=2
while true; do
if [ $(( $(date +%s) - START_TIME )) -ge 600 ]; then
printf 'Timed out after 600 seconds
' >&2
exit 1
fi
STATUS_RESPONSE=$(curl --silent --show-error --fail-with-body \
--url "https://api.vidgo.ai/api/generate/status/$TASK_ID" \
--header "Authorization: Bearer $VIDGO_API_KEY")
STATUS=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.data.status // .status // empty')
BUSINESS_CODE=$(printf '%s' "$STATUS_RESPONSE" | jq -r '.code // empty')
if [ "$BUSINESS_CODE" != "0" ] && [ "$BUSINESS_CODE" != "200" ]; then
printf 'Status request failed:
%s
' "$STATUS_RESPONSE" >&2
exit 1
fi
case "$STATUS" in
finished)
printf '%s' "$STATUS_RESPONSE" | jq -r '(.data.files // .files // [])[]?.file_url'
break
;;
failed)
printf '%s' "$STATUS_RESPONSE" | jq -r '.data.error_message // .error_message // "Generation failed"' >&2
exit 1
;;
not_started|running)
sleep "$POLL_DELAY"
if [ "$POLL_DELAY" -lt 10 ]; then POLL_DELAY=$((POLL_DELAY + 1)); fi
;;
*)
printf 'Unexpected task status: %s
' "$STATUS" >&2
exit 1
;;
esac
doneRequest Parameters (input object)
Supported generation parameters inside the input object when submitting a POST request to /api/generate/submit:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| prompt | string | Yes | — | Required nonblank string, trimmed before validation. Maximum 1500 Unicode characters. |
| resolution | string | No | 768P | 512P or 768P; defaults to 768P. |
| duration | integer | No | 6 | 6 or 10 seconds; defaults to 6. |
| prompt_optimizer | boolean | No | — | Optional boolean; omit to leave unspecified upstream. The playground starts with false. |
Response Fields (query result)
Task details returned when polling GET /api/generate/status/{task_id}:
| Field | Type | Description |
|---|---|---|
| code | integer | Business response code, 200 on success. |
| data.task_id | string | Globally unique asynchronous task identifier. |
| data.status | string | Execution status: not_started, running, finished, or failed. |
| data.files | array | Generated video files upon completion, each with file_url and file_type. |
| data.error_message | string | null | Error description if task fails. |
Task Lifecycle
Clients should inspect the status field and stop polling when reaching finished or failed:
not_startedTask received and queued for execution.
runningGeneration is in progress.
finishedGeneration complete; retrieve video URL from data.files.
failedGeneration failed; inspect data.error_message; deducted credits are refunded per standard policy.
Polling & Error Handling
- Recommended Polling IntervalStart polling every 2–3 seconds, increasing to 5 seconds as the task continues, to avoid excessive requests.
- Network Fluctuations & RetriesIf status polling encounters 5xx or timeouts, the task is still running; retry querying after a brief pause.
- Asynchronous Webhook CallbackProvide callback_url at the root of the request payload to receive the completed task result automatically via POST.
Specifications
| Specification | Value | Description |
|---|---|---|
| Model ID | minimax/hailuo-02/standard/text-to-video | Root-level model field. |
| Resolution | 512P / 768P | 512P or 768P; defaults to 768P. |
| Duration | 6 / 10s | Defaults to 6 seconds. |
Hailuo 02 Standard Text to Video
Hailuo 02 Standard Text to Video is developed by MiniMax for high-fidelity scene synthesis from natural language prompts. By describing subject appearance, setting dynamics, and camera choreography, creators can generate continuous 6-second or 10-second video clips. The model simulates natural physical interactions and nuanced motion across 512P and 768P resolutions with transparent per-second pricing.
Why Choose This?
Pure Text-Driven Scene CreationBuild vivid characters, environments, and motion directly from natural language without uploading starting assets.
Realistic Physical Motion SimulationAccurately replicates gravity, fluid inertia, and soft-body collisions for believable environmental interactions.
Flexible Duration and Resolution TiersSupports 6-second agile scenes or 10-second extended shots across economical 512P and default 768P resolutions.
Optional Intelligent Prompt OptimizationExpands concise prompts with rich cinematography, textural lighting, and environmental nuances without extra charges.
Predictable Per-Second BillingCharges strictly by output resolution and duration, with automatic credit refunds if a task encounters an error.
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| prompt | Required | Required nonblank string, trimmed before validation. Maximum 1500 Unicode characters. |
| resolution | Optional | 512P or 768P; defaults to 768P. Default 768P |
| duration | Optional | 6 or 10 seconds; defaults to 6. Default 6 |
| prompt_optimizer | Optional | Optional boolean; omit to leave unspecified upstream. The playground starts with false. |
How to Use
Define Subject and SettingEstablish character appearance, focal props, and scenic backdrops in the opening sentence to anchor the composition.
Outline Motion and Camera MotionDescribe actions chronologically and specify explicit camera directions such as dolly zoom, panning, or tracking.
Select Resolution and DurationPick 6 seconds for concise clips or 10 seconds for narrative progression, alongside 512P or 768P resolution.
Toggle Prompt OptimizationEnable prompt_optimizer when working from concise concepts to enrich cinematic atmosphere and lighting.
Submit and Retrieve ResultDispatch the asynchronous generation task and poll with task_id to stream or download the finished MP4 video file.
Pricing
1 credit = $0.005. Billed by resolution and output duration.
| Usage | Rate | Details |
|---|---|---|
| 512P / 6s | 18 credits ($0.090) | 3 credits/second |
| 512P / 10s | 30 credits ($0.150) | 3 credits/second |
| 768P / 6s | 42 credits ($0.210) | 7 credits/second |
| 768P / 10s | 70 credits ($0.350) | 7 credits/second |
Best Use Cases
Commercial Storyboard PrototypingTranslate script lines into dynamic motion previews to validate pacing and camera angles before physical production.
Social Media & Viral ContentQuickly generate captivating realistic video clips and aesthetic visual loops for digital channels.
Film and Drama PrevisualizationTurn narrative script beats into continuous 6-to-10-second dramatic scenes to guide directorial vision.
World-Building Concept VisualizationBreathe life into speculative world descriptions, sci-fi machinery, and natural phenomena.
Pro Tips
- Decouple Subject Motion from Camera Direction: Specify what the subject does and how the camera moves in distinct sentences for cleaner choreography.
- Leverage the 1500-Character Prompt Capacity: Use detailed sensory adjectives covering atmospheric haze, reflective textures, and depth of field.
- Choose When to Enable Prompt Optimization: Turn the optimizer on for concise conceptual ideas, and keep it off when strict adherence to a precise directorial prompt is required.
- Test Pacing with 512P First: Validate action timing quickly with 512P / 6s (18 credits) before committing to 768P / 10s for final deliverables.
- Anchor Abstract Adjectives to Physical Cues: Replace words like 'epic' or 'amazing' with concrete physics cues such as 'dust kicks up underfoot' or 'light reflects off wet asphalt'.
Notes
- Text-Only Input Contract: This endpoint accepts a single trimmed prompt string up to 1500 Unicode characters without image attachments.
- Discrete Resolution and Duration Constraints: Parameters only accept 512P or 768P for resolution, and 6 or 10 integer seconds for duration.
- Asynchronous Execution & Safe Billing: Tasks process asynchronously via unique task_id; credits are deducted upon validation and refunded immediately if execution fails.
Related Models
Hailuo 02 Standard Text to Video API frequently asked questions
What is the Hailuo 02 Standard Text to Video API?
Hailuo 02 Standard Text to Video is a MiniMax model for video generation from text. It generates continuous dynamic videos at 512P or 768P resolution directly from text prompts, supporting 6-second or 10-second durations, realistic physical simulation, and optional prompt refinement. Built on MiniMax's advanced video generation architecture, it faithfully executes narrative choreography and camera movement while preserving scenic coherence and lighting fidelity. You can call it programmatically or try it from the playground above.
Does Hailuo 02 Standard Text to Video support 10-second generations?
Yes. The model provides discrete 6-second and 10-second duration options, with 6 seconds as the default. Choosing 10 seconds allows creators to depict multi-stage actions, extended narrative arcs, and gradual camera transitions in a single clip.
How does the prompt optimizer work in Hailuo 02 Standard Text to Video?
The prompt optimizer (prompt_optimizer) enriches concise user prompts by automatically incorporating cinematic lighting, realistic textures, and camera framing details. It is an optional boolean parameter disabled by default in the playground, and enabling it incurs no extra credits.
What prompt length is supported by Hailuo 02 Standard Text to Video?
The prompt is trimmed of leading and trailing whitespace and accepts between 1 and 1,500 Unicode characters. This generous length allows detailed descriptions of subject characteristics, progressive actions, and environmental lighting.
How is Hailuo 02 Standard Text to Video billed?
This endpoint is billed on a per-second basis based on output resolution and duration (1 credit = $0.005). The 512P tier costs 3 credits/second (18 credits for 6s, 30 credits for 10s), while 768P costs 7 credits/second (42 credits for 6s, 70 credits for 10s).
Can Hailuo 02 Standard Text to Video control camera movement via prompts?
Yes. You can incorporate standard cinematography terms (such as 'slow push-in', 'lateral tracking shot', or 'wide high-angle crane') directly into your prompt. The model coordinates camera movement seamlessly with the subject's actions.
When should I choose Hailuo 02 Standard Text to Video over the Pro version?
Choose the Standard mode when you require explicit 6-second or 10-second duration control, economical per-second pricing (such as 512P at 3 credits/sec), or high-throughput conceptual prototyping. Choose the Pro mode when producing final hero assets demanding heightened cinematic dynamics.















