A plump raccoon wearing a tiny translucent yellow rain poncho with the hood up stands at a flooded brick alley intersection at blue hour. Puddles cover the cobblestones. Several folded paper boats float in the largest puddle like tiny vehicles. The raccoon holds one autumn maple leaf as a conductor baton and directs the paper boats: first pointing left, then sweeping right, as if managing puddle traffic. Tiny raindrops tap the poncho. Camera: one continuous five-second waist-height lateral tracking shot moving left to right, staying parallel to the raccoon, gentle handheld sway, no cuts. Synchronized audio: steady rain on puddles, raccoon chitters, one distant bicycle bell. No readable text, letters, numbers, captions, labels, logos, brands, watermarks, advertisements, posters, UI screens, or product packaging. No people.
Wan 3.0 Text-to-Video API
alibaba/wan-3.0/text-to-videoWan 3.0 (Text-to-Video) transforms text prompts into 480p to 1080p high-definition video, supporting 2 to 30 second continuous generation, native audiovisual synchronization, and flexible aspect ratios. It preserves lifelike facial micro-expressions and camera trajectory while creating seamless sound effects and atmospheric audio.
Input
Output
ReadyContinue with
Examples
REST API Reference
Quick Start
Submit a text-to-video request using your API key and retrieve the video at your selected resolution.
Step 1: Set up authentication
Generate an API Key in the dashboard and attach it as Authorization: Bearer <API_KEY> on all HTTP requests.
- Submit Endpoint
- POST
https://api.vidgo.ai/api/generate/submit - Authorization Header
- Authorization: Bearer VIDGO_API_KEY
Step 2: Submit a text-to-video task
Send a POST request to /api/generate/submit specifying alibaba/wan-3.0/text-to-video and your input parameters.
REQUEST_BODY=$(cat <<'JSON'
{
"model": "alibaba/wan-3.0/text-to-video",
"input": {
"prompt": "A plump raccoon wearing a tiny translucent yellow rain poncho with the hood up stands at a flooded brick alley intersection at blue hour. Puddles cover the cobblestones. Several folded paper boats float in the largest puddle like tiny vehicles. The raccoon holds one autumn maple leaf as a conductor baton and directs the paper boats: first pointing left, then sweeping right, as if managing puddle traffic. Tiny raindrops tap the poncho. Camera: one continuous five-second waist-height lateral tracking shot moving left to right, staying parallel to the raccoon, gentle handheld sway, no cuts. Synchronized audio: steady rain on puddles, raccoon chitters, one distant bicycle bell. No readable text, letters, numbers, captions, labels, logos, brands, watermarks, advertisements, posters, UI screens, or product packaging. No people.",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": true,
"enable_safety_checker": true
}
}
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 completion
Poll with task_id while status is not_started or running, and stop at finished or failed. On success, read data.files[].file_url; on failure, read data.error_message.
Status Endpoint
GET https://api.vidgo.ai/api/generate/status/{task_id}Poll with task_id while status is not_started or running, and stop at finished or failed. On success, read data.files[].file_url; on failure, read data.error_message.
not_startedrunningfinishedfailed{
"code": 200,
"data": {
"task_id": "task-wan30-t2v-987214",
"status": "running",
"created_time": "2026-09-16T08:30:00Z"
}
}{
"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 executable script
Expand to review an end-to-end script with automatic polling, error handling, and timeout safeguards.
set -euo pipefail
: "${VIDGO_API_KEY:?Set VIDGO_API_KEY in your environment}"
REQUEST_BODY=$(cat <<'JSON'
{
"model": "alibaba/wan-3.0/text-to-video",
"input": {
"prompt": "A plump raccoon wearing a tiny translucent yellow rain poncho with the hood up stands at a flooded brick alley intersection at blue hour. Puddles cover the cobblestones. Several folded paper boats float in the largest puddle like tiny vehicles. The raccoon holds one autumn maple leaf as a conductor baton and directs the paper boats: first pointing left, then sweeping right, as if managing puddle traffic. Tiny raindrops tap the poncho. Camera: one continuous five-second waist-height lateral tracking shot moving left to right, staying parallel to the raccoon, gentle handheld sway, no cuts. Synchronized audio: steady rain on puddles, raccoon chitters, one distant bicycle bell. No readable text, letters, numbers, captions, labels, logos, brands, watermarks, advertisements, posters, UI screens, or product packaging. No people.",
"duration": 5,
"resolution": "720p",
"aspect_ratio": "16:9",
"audio": true,
"enable_safety_checker": true
}
}
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 to /api/generate/submit:
| Field | Type | Required | Default | Description |
|---|---|---|---|---|
| prompt | string | Yes | - | Text prompt detailing scenes, actions, lighting, and sound; supports 1 to 20,000 characters. |
| duration | integer | No | 5 | Output video duration in whole seconds between 2 and 30. |
| resolution | string | No | 720p | Resolution tier: 480p, 720p, or 1080p. |
| aspect_ratio | string | No | adaptive | Aspect ratio: adaptive, 16:9, 4:3, 1:1, 3:4, or 9:16. |
| audio | boolean | No | true | Whether to generate a synchronized native audio track; billed at the same rate as silent output. |
| seed | integer | No | - | Seed value (0–2,147,483,647) for reproducible generation. |
| enable_safety_checker | boolean | No | true | Enables content compliance and safety checking. |
Response Fields (Status Query)
Details returned by GET /api/generate/status/{task_id}:
| Field | Type | Description |
|---|---|---|
| code | integer | HTTP/business response status code (200 indicates success). |
| data.task_id | string | Globally unique task identifier. |
| data.status | string | Task lifecycle state: not_started, running, finished, or failed. |
| data.files | array | Array of output assets containing file_url and file_type upon completion. |
| data.error_message | string | null | Error diagnostic details if the task status is failed. |
Task Lifecycle
Clients should poll status until reaching either the finished or failed terminal state:
not_startedTask queued successfully and awaiting GPU compute resource allocation.
runningThe Diffusion Transformer model is actively synthesizing video frames and audio.
finishedVideo generation completed and stored; download URL available in data.files[0].file_url.
failedTask stopped due to parameter validation failure or safety moderation.
Polling & Error Handling
- Polling frequencyStart polling with a 2 to 3-second interval, gradually increasing to 5 seconds for extended takes.
- Network resiliencyTransient 5xx responses or timeouts do not signify task failure; retry status requests after a short backoff.
- Webhook callbacksProvide a top-level callback_url in your submission payload to receive completion notifications automatically.
Specifications
| Specification | Value | Description |
|---|---|---|
| Model identifier | alibaba/wan-3.0/text-to-video | API route identifier passed in the request body model field. |
| Input mode | Text prompt | A prompt describes subjects, actions, camera motion, lighting, and sound design. |
| Output format | 30 fps / MP4 (H.264) | High-compatibility MP4 container with native AAC audio. |
| Duration | 2–30 seconds | Configurable in whole seconds from 2 to 30 seconds per task. |
| Resolution | 480p / 720p / 1080p | Three native resolution tiers; 720p is the default. |
Wan 3.0 Text-to-Video
Wan 3.0 Text-to-Video generates continuous high-definition video with native synchronized audio from text prompts alone. Specify subject action, scene progression, and camera choreography to create 2 to 30-second clips at up to 1080p resolution in a single generation.
Why Choose This?
Text-only generationBuild complete characters, environments, and dynamic storylines directly from language without preparing or uploading source images.
Native audiovisual synthesisGenerate video frames and synchronized speech, ambient room tone, and action sound effects simultaneously within a single Diffusion Transformer pipeline.
Continuous 30-second clipsProduce extended takes up to 30 seconds with consistent subject identity, lifelike facial expressions, and complex multi-beat choreography.
Cinematic camera controlDirect pans, tilts, tracking shots, orbits, and crane movements while tailoring framing with adaptive, landscape, square, or vertical aspect ratios.
Up to 1080p resolutionSelect from 480p, 720p, and 1080p native output tiers to preserve intricate lighting, fine surface textures, and rich atmospheric details.
Parameters
| Parameter | Requirement | Description |
|---|---|---|
| prompt | Required | String. Detailed description of subjects, actions, camera choreography, lighting, and sound effects; supports 1 to 20,000 characters. |
| duration | Optional | Integer. Output duration in whole seconds between 2 and 30; playground defaults to 5 seconds. Default 5 |
| resolution | Optional | String. Native output resolution tier; choices include 480p, 720p (default), or 1080p. Default 720p480p1080p |
| aspect_ratio | Optional | String. Framing ratio; supports adaptive (default), 16:9, 4:3, 1:1, 3:4, and 9:16. Default adaptive16:94:31:13:49:16 |
| audio | Optional | Boolean. Determines whether to synthesize a synchronized audio track alongside the video; defaults to true at no extra cost. Default truefalse |
| seed | Optional | Integer. Random seed between 0 and 2,147,483,647 for reproducible trajectories and framing compositions. |
| enable_safety_checker | Optional | Boolean. Enables automated safety filtering on prompts and generated outputs; defaults to true. Default truefalse |
How to Use
Define the subject and premiseOpen your prompt with subject appearance, core wardrobe, and environmental context (e.g., A detective in a dark trench coat stands on a rain-slicked cyberpunk street at night).
Sequence actions chronologicallyDescribe movements across sequential beats using clear temporal progression such as first, then, and finally (e.g., He inspects an illuminated sign, then walks briskly down a narrow neon alley).
Direct the camera in a separate sentenceState shot size and camera motion independently from character movement (e.g., Eye-level medium tracking shot, slowly pushing in as he walks into the alleyway).
Establish atmosphere and audio cuesSpecify color palette, contrast, and audio ambience (e.g., Cool blue tones with amber reflections, accompanied by footsteps splashing in puddles and distant rumbling thunder).
Select resolution and ratioChoose your desired resolution (720p or 1080p), format ratio (16:9 landscape or 9:16 portrait), and length between 2 and 30 seconds.
Submit and retrieve the resultRun the generation to submit an asynchronous task, then inspect the synchronized video and audio playback in the output preview.
Pricing
Wan 3.0 Text-to-Video charges by generated output second based strictly on the selected resolution tier; enabling or disabling audio carries no extra fee (1 credit = $0.005).
| Usage | Rate | Details |
|---|---|---|
| 480p | 10 credits / output sec ($0.05 / sec) | Standard definition tier. 5-second default is 50 credits ($0.25); 30-second maximum is 300 credits ($1.50). |
| 720p (Default) | 20 credits / output sec ($0.10 / sec) | High definition tier. 5-second default is 100 credits ($0.50); 30-second maximum is 600 credits ($3.00). |
| 1080p | 40 credits / output sec ($0.20 / sec) | Full high definition flagship tier. 5-second default is 200 credits ($1.00); 30-second maximum is 1,200 credits ($6.00). |
Best Use Cases
Commercial concept filmsTransform written creative scripts into dynamic concept clips for stakeholder reviews prior to live shoots.
Cinematic narrative previsualizationConvert screenplay scenes into continuous 2 to 30-second motion references to evaluate pacing and camera angles.
Multi-format social contentProduce platform-ready 16:9, 9:16, or 1:1 clips with synchronized ambient soundscapes from a single prompt idea.
Concept worldbuilding studiesTurn rich descriptions of imaginary creatures, futuristic cities, or natural phenomena into immersive motion studies.
Pro Tips
- Structure prompts into distinct layers: Organize your prompt from broad setting and subject appearance to chronological actions, camera trajectory, and audio ambience.
- Separate character actions from camera motion: Keeping character movements in one sentence and camera directions in another ensures the model interprets trajectory accurately.
- Pace extended generations with timestamps: For takes over 10 seconds, guide narrative progression by structuring sentences with timestamps (e.g., Seconds 0-5... followed by seconds 6-10...).
- Describe specific sounds to trigger native audio: Mentioning explicit sound cues like sharp heel clicks, mechanical hums, or reverberant dialogue guides the audio diffusion model.
- Iterate quickly before committing long takes: Test initial prompts with 5-second 720p generations to verify movement and composition before scaling up to 1080p and 30 seconds.
Notes
- Text-only input mode: This endpoint accepts prompt text only; image or multimodal media files are neither required nor accepted.
- Whole-second duration input: The duration parameter accepts whole integers between 2 and 30 seconds.
- Asynchronous lifecycle: Task creation returns a task_id immediately; retrieve the final video asset via polling or an automated webhook callback.
Related Models
Wan 3.0 Text-to-Video API — Frequently Asked Questions
What is the Wan 3.0 Text-to-Video API?
Wan 3.0 Text-to-Video is an Alibaba Tongyi Lab model for generating video from text. It creates high-definition videos up to 30 seconds at up to 1080p resolution with native synchronized audio directly from natural language prompts, supporting professional cinematographic movement and flexible aspect ratios. Built on Diffusion Transformer and Flow Matching architectures, it maintains stable facial micro-expressions and complex camera trajectories while naturally aligning movement beats with ambient acoustics. You can call it programmatically or try it from the playground above.
Can Wan 3.0 Text-to-Video generate 30-second clips in a single call?
Yes. The model supports specifying any integer duration between 2 and 30 seconds (the playground defaults to 5 seconds). Throughout an uninterrupted 30-second take, it maintains facial identity and spatial coherence while unfolding multi-stage dramatic choreography.
Is Wan 3.0 Text-to-Video audio synthesized natively alongside the video?
Yes, it is generated natively. Audio tracks are denoised alongside video latents directly within the underlying diffusion transformer rather than spliced via external post-production. With audio enabled by default, the model generates synchronized ambient soundscapes, footsteps, and physical interactions derived from your text description.
Does Wan 3.0 Text-to-Video support generating silent video?
Yes. If your workflow requires silent video footage for external dubbing or editing, set the audio parameter explicitly to false. Toggling audio off does not affect rendering speed or credit pricing.
How can I maintain facial consistency during long takes in Wan 3.0 Text-to-Video?
Structure multi-beat scene choreography with chronological markers (such as first, next, finally) and describe character appearance details separately from camera motion. Avoiding contradictory actions in a single sentence helps the model maintain stable facial geometry and bodily proportions over extended durations.
How does the adaptive aspect ratio work in Wan 3.0 Text-to-Video?
When aspect_ratio is set to adaptive (default), the model intelligently determines the most harmonious composition framing based on the scene and camera descriptors in your prompt. You can also explicitly select 16:9, 4:3, 1:1, 3:4, or 9:16 to target widescreen cinema or mobile vertical feeds directly.
Are additional parameters required to output 1080p in Wan 3.0 Text-to-Video?
No extra parameters are needed. Simply select 1080p in the resolution setting (alongside 480p and 720p). Native 1080p resolution renders fine hair strands, water reflections, and architectural textures with exceptional fidelity for production delivery.
