Wan 3.0 Video
Use wan3.0-video to create video output. This page contains the complete request needed for this model.
Model facts
| Property | Value |
|---|---|
| Model ID | wan3.0-video |
| Endpoint | POST /api/v1/generation/create |
| Output | Video |
| Modes | text-to-video, image-to-video, video reference, audio reference |
| Pricing | View current pricing |
Minimal request
curl -X POST https://api.api-stock.com/api/v1/generation/create \
-H "Authorization: Bearer $API_STOCK_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "wan3.0-video",
"input": {
"prompt": "A product shot rotating on a clean studio background"
}
}'The create response contains a task ID:
{
"code": 200,
"data": {
"taskId": "019ca881-9503-7270-a560-f00fc2b15785",
"status": "not_started",
"createdAt": "2026-08-22T12:00:00.000Z"
}
}Parameters
Parameters belong inside the top-level input object. Unknown fields are rejected.
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
prompt | string | No | — | Text description. Required unless at least one media input is supplied. In reference mode you can address assets positionally with “图N / 视频N / 音频N” labels; indices run per media type. max 20000 chars |
imageUrls | string[] | No | — | Image URLs without explicit roles. In the frame family the first item is the start frame and an optional second is the end frame; in the reference family every item is a reference image (up to 10). |
imageWithRoles | object[] | No | — | Images with explicit roles. Use this when you need first/last frame or reference images stated outright rather than inferred from order. Each item is { url: string, role: string }. |
videoUrls | string[] | No | — | Reference videos, up to 5 clips of 1-15s each (total <= 15s). Input video duration plus the requested output duration must stay within 30 seconds. |
audioUrls | string[] | No | — | Reference audio, up to 5 clips of 1-15s each (total <= 15s). |
fileUrl | string | No | — | Reference document driving the generation (docx/xlsx/pptx/pdf/txt/md and similar, <=100MB, <=50 pages). Cannot be combined with linkUrl. A prompt is optional when this is supplied. |
linkUrl | string | No | — | Public, login-free web page to turn into a video. Cannot be combined with fileUrl. |
generationType | “frame” | “reference” | No | — | How bare imageUrls are classified: frame (first/last frame) or reference. Omit to let it be inferred — reference when the request already carries reference-family inputs, frame otherwise. |
size | “adaptive” | “16:9” | “4:3” | “1:1” | “3:4” | “9:16” | No | "adaptive" | Aspect ratio. adaptive lets the model pick one from the inputs. |
resolution | “480p” | “720p” | “1080p” | No | "720p" | Output resolution. Each tier is billed at its own per-second rate, so 1080p costs four times 480p for the same duration. |
duration | number | No | 5 | Duration in seconds (2-30). Billing is per second at the resolution’s rate. With reference videos, total input video duration plus this value must be at most 30 seconds. min 2, max 30 |
audio | boolean | No | true | Include an audio track in the output. |
watermark | boolean | No | false | Add a watermark to the output |
seed | number | No | — | Random seed for controlling randomness min 0, max 2147483647 |
Modes
Minimal generation
{
"model": "wan3.0-video",
"input": {
"prompt": "A product shot rotating on a clean studio background"
}
}With image urls
{
"model": "wan3.0-video",
"input": {
"prompt": "A product shot rotating on a clean studio background",
"imageUrls": [
"https://example.com/input.jpg"
]
}
}With video urls
{
"model": "wan3.0-video",
"input": {
"prompt": "A product shot rotating on a clean studio background",
"videoUrls": [
"https://example.com/input.mp4"
]
}
}With audio urls
{
"model": "wan3.0-video",
"input": {
"prompt": "A product shot rotating on a clean studio background",
"audioUrls": [
"https://example.com/input.mp3"
]
}
}With file url
{
"model": "wan3.0-video",
"input": {
"prompt": "A product shot rotating on a clean studio background",
"fileUrl": "https://example.com/input.jpg"
}
}With link url
{
"model": "wan3.0-video",
"input": {
"prompt": "A product shot rotating on a clean studio background",
"linkUrl": "https://example.com/input.jpg"
}
}Constraints
prompt: maximum 20000 characters.generationType: allowed:frame,reference.size: allowed:adaptive,16:9,4:3,1:1,3:4,9:16.resolution: allowed:480p,720p,1080p.duration: minimum 2; maximum 30.seed: minimum 0; maximum 2147483647.
Invalid types, unsupported enum values, out-of-range numbers, and missing required fields return HTTP 400 with error.code: "invalid_input". Correct the request rather than retrying it unchanged.
Result
Poll the task or provide a top-level webhook URL in the create request:
curl https://api.api-stock.com/api/v1/task/status/$TASK_ID \
-H "Authorization: Bearer $API_STOCK_KEY"A successful media task returns one or more files:
{
"code": 200,
"data": {
"taskId": "019ca881-9503-7270-a560-f00fc2b15785",
"status": "finished",
"files": [
{
"fileUrl": "https://storage.api-stock.com/result.mp4",
"fileType": "video"
}
],
"createdTime": "2026-08-22T12:00:00.000Z"
}
}See Tasks and webhooks for terminal statuses, retries and webhook delivery.