Alibaba Wan 3.0 Prime Text To Video API Documentation
Playground
Try it on WaveSpeedAI!Wan 3.0 Prime Text to Video is an accelerated variant that generates cinematic videos from text prompts, with flexible 2-30 second duration, aspect ratio control, optional audio, and deep-thinking controls for high-quality video generation. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.
Features
Wan 3.0 Prime Text-to-Video generates coherent cinematic videos from natural-language prompts. It supports flexible duration, multiple aspect ratios, optional audio generation, and prompt expansion for more deliberate prompt interpretation.
Parameters
| Parameter | Required | Description |
|---|---|---|
| prompt | Yes | Text prompt describing the desired scene, subject, action, camera movement, lighting, and motion. |
| resolution | No | Output resolution: 480p, 720p, or 1080p. Default: 720p. |
| aspect_ratio | No | Output aspect ratio. Default: 16:9. |
| duration | No | Output duration in seconds. Range: 2–30. Default: 5. |
| enable_prompt_expansion | No | Enable prompt expansion for more deliberate prompt interpretation. Default: false. |
| enable_audio | No | Include audio in the output. Default: true. |
| seed | No | Random seed from 0 to 2147483647. |
How to Use
- Write your prompt — Describe the scene, subject, motion, camera movement, lighting, and visual style.
- Choose resolution — Use
480pfor lower-cost drafts,720pfor balanced output, or1080pfor higher quality. - Set aspect ratio — Select the format that matches your target platform or creative direction.
- Set duration — Choose a duration from
2to30seconds. - Configure audio optional — Keep
enable_audioenabled when audio is needed. - Enable prompt expansion optional — Use
enable_prompt_expansionwhen the prompt needs more deliberate interpretation. - Submit — Generate the final text-to-video output.
Pricing
Pricing is based on output resolution and billed duration.
Billed duration is rounded up to the next whole second and clamped to the 2–30s range.
| Resolution | Per 5s | Per second |
|---|---|---|
| 480p | $0.375 | $0.075 |
| 720p | $0.75 | $0.15 |
| 1080p | $1.50 | $0.30 |
Example Costs
| Resolution | 2s | 5s | 10s | 30s |
|---|---|---|---|---|
| 480p | $0.15 | $0.375 | $0.75 | $2.25 |
| 720p | $0.30 | $0.75 | $1.50 | $4.50 |
| 1080p | $0.60 | $1.50 | $3.00 | $9.00 |
Best Use Cases
- Cinematic storytelling — Generate short cinematic scenes from detailed text prompts.
- Concept visualization — Turn written ideas into motion previews for creative planning.
- Social media clips — Create vertical, square, landscape, or widescreen short videos.
- Marketing and advertising — Generate product scenes, brand clips, and promotional visuals.
- Prompt iteration — Test different camera movements, lighting styles, and motion directions.
Pro Tips
- Include subject, action, environment, camera movement, lighting, mood, and visual style in the prompt.
- Use
480pfor quick drafts and1080pfor higher-quality output. - Use shorter durations for iteration, then increase duration once the scene direction is confirmed.
- Enable
enable_prompt_expansionfor complex prompts with multiple visual or motion requirements. - Set a fixed
seedwhen you want more reproducible results.
Related Models
- Wan 3.0 Prime Text-to-Video — Generate coherent cinematic videos from natural-language prompts.
- Wan 3.0 Image-to-Video — Animate a first-frame image into a coherent video with optional last-frame guidance.
- Wan 3.0 Reference-to-Video — Generate videos using reference images, videos, or audio for multimodal guidance.
Authentication
For authentication details, please refer to the Authentication Guide.
API Endpoints
Submit Task & Query Result
set -euo pipefail
export WAVESPEED_API_KEY="your-api-key"
REQUEST_BODY=$(cat <<'JSON'
{
"prompt": "A cinematic ocean wave at sunrise, highly detailed",
"resolution": "720p",
"aspect_ratio": "16:9",
"duration": 5,
"enable_prompt_expansion": false,
"enable_audio": true
}
JSON
)
# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
-X POST "https://api.wavespeed.ai/api/v3/alibaba/wan-3.0-prime/text-to-video" \
-H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
-H "Content-Type: application/json" \
-d "${REQUEST_BODY}")
TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
printf 'Submission response did not contain a prediction id
' >&2
exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"
# 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 type == "object" and has("data") then .data else . end')
STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')
case "${STATUS}" in
completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
*) sleep 2 ;;
esac
doneParameters
Task Submission Parameters
Request Parameters
| Parameter | Type | Required | Default | Range | Description |
|---|---|---|---|---|---|
| prompt | string | Yes | - | The positive prompt for the generation. | |
| resolution | string | No | 720p | 480p, 720p, 1080p | The resolution of the generated video. |
| aspect_ratio | string | No | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4 | The aspect ratio of the generated video. |
| duration | integer | No | 5 | 2 ~ 30 | The duration of the generated media in seconds (2-30s). |
| enable_prompt_expansion | boolean | No | false | - | If set to true, the prompt optimizer will be enabled. |
| enable_audio | boolean | No | true | - | Whether to include audio in the generated video. |
| seed | integer | No | - | - | The random seed to use for the generation. -1 means a random seed will be used. |
Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data.id | string | Unique identifier for the prediction, Task Id |
| data.model | string | Model ID used for the prediction |
| data.outputs | array | Output values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed) |
| data.urls | object | Object containing related API endpoints |
| data.status | string | Task status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses. |
| data.created_at | string | ISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”) |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |
Result Request Parameters
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
| id | string | Yes | - | Task ID |
Result Response Parameters
| Parameter | Type | Description |
|---|---|---|
| code | integer | HTTP status code (e.g., 200 for success) |
| message | string | Status message (e.g., “success”) |
| data | object | The prediction data object containing all details |
| data.id | string | Unique identifier for the prediction |
| data.model | string | Model ID used for the prediction |
| data.outputs | array<string | object> | Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model. |
| data.urls | object | Object containing related API endpoints |
| data.status | string | Status: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses |
| data.created_at | string | ISO timestamp of when the request was created |
| data.error | string | Error message (empty if no error occurred) |
| data.timings | object | Object containing timing details |
| data.timings.inference | integer | Inference time in milliseconds |