Wan 3.0 (Wan3.0)
Wan 3.0 (Wan3.0) is an all-in-one reference video generation model that supports text-to-video, image-to-video (first-frame / first-and-last-frame), and reference-based video generation. It can generate videos up to 30 seconds at 30fps. Video generation takes 1–5 minutes, so the API is asynchronous (task-based): create a task to get a
task_id, then poll for task status and result. Thetask_idis valid for 24 hours — do not create duplicate tasks, just poll.
Endpoint
POST /v1/videosAuthentication
| Method | Description |
|---|---|
| Bearer Token | Pass Authorization: Bearer <API_key> in the request header to authenticate your account. |
Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
Content-Type | string | Yes | Media type of the request body, must be application/json |
Authorization | string | Yes | Bearer API_key, used to authenticate your account |
Request Body
| Parameter | Type | Required | Default | Description |
|---|---|---|---|---|
model | string | Yes | - | Model name. See "Supported Models" below |
input.prompt | string | Yes | - | Text prompt (required). When media is provided, reference it with 图1, 视频1, 音频1 (see below) |
input.media | object[] | No | - | Media asset array (optional), used for image-to-video (first-frame / first-and-last-frame), reference-to-video, video editing, etc. |
parameters.resolution | string | No | 1080P | Resolution tier: 1080P / 720P / 480P |
parameters.ratio | string | No | adaptive | Aspect ratio: adaptive / 16:9 / 4:3 / 1:1 / 3:4 / 9:16 |
parameters.duration | integer | No | 5 | Video duration in seconds. Without video input: [2, 30]; with video input: input + output ≤ 30. Pass -1 for smart duration |
parameters.audio | boolean | No | true | Whether output video contains an audio track; sound on/off has the same price |
parameters.seed | integer | No | -1 | Random seed: -1 or [0, 2147483647] |
parameters.prompt_extend | boolean | No | true | Whether to enable prompt rewriting; works best for short prompts but adds latency |
parameters.watermark | boolean | No | false | Whether to add a watermark |
Prompt Notes
- Supports Chinese and English, one char/letter per character, up to 20000 characters (extra characters are truncated).
- In all-in-one reference mode, the prompt can reference media assets by order using
图1,视频1,音频1(images, videos, and audios are counted separately).
input.media Details
Media Element
| Parameter | Type | Required | Description |
|---|---|---|---|
type | string | Yes | Media type, see the enum below |
url | string | Yes | Asset URL (public URL / OSS temporary URL / Base64). Format varies by type, see limits below |
Type Enum
| Value | Description |
|---|---|
first_frame | First-frame image. At most 1, strictly used as the first frame of the video |
last_frame | Last-frame image. At most 1, strictly used as the last frame of the video |
reference_image | Reference image. At most 10 |
reference_video | Reference video. At most 5 clips, total duration ≤ 15 seconds |
reference_audio | Reference audio. At most 5 clips, total duration ≤ 15 seconds |
file | File. At most 1, mutually exclusive with link |
link | Web page link. At most 1, mutually exclusive with file |
Media Combination Rules
first_frame/last_frameare mutually exclusive withreference_image/reference_video/reference_audio/file/linkand cannot be mixed in one request.fileandlinkare mutually exclusive, but both can be combined withreference_image/reference_video/reference_audio.reference_image/reference_video/reference_audiocan be freely combined.- Video editing: must include
reference_video, and the prompt must express an editing intent. - Video extension: must include
reference_video, the prompt must express an extension intent, andratiomust beadaptive.
url Asset Limits
| Type | Limits |
|---|---|
Image (first_frame / last_frame / reference_image) | Formats: JPEG / JPG / PNG (no alpha channel) / BMP / WEBP; side length [240, 8000] px; aspect ratio ≤ 8:1; size ≤ 20MB |
Video (reference_video) | Formats: mp4 / mov; each [1, 15] s, total ≤ 15 s; fps ≥ 16; side length [240, 4096] px; aspect ratio ≤ 8:1; size ≤ 100MB |
Audio (reference_audio) | Formats: wav / mp3; each [1, 15] s, total ≤ 15 s; size ≤ 15MB |
File (file) | Formats: docx / doc / xlsx / xls / pptx / ppt / pdf / txt / key / pages / numbers / md; size ≤ 100MB; pages ≤ 50 |
Web (link) | Only public web pages that do not require login |
Request Examples
curl --location --request POST 'https://neolink.com/api/v1/videos' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API Key>' \
--data-raw '{
"model": "wan3.0-video",
"input": {
"prompt": "A kitten running on a rooftop under moonlight, neon lights flickering in the distance, cinematic quality, smooth camera movement."
},
"parameters": {
"resolution": "480P",
"ratio": "adaptive",
"duration": 5,
"prompt_extend": true
}
}'curl --location --request POST 'https://neolink.com/api/v1/videos' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API Key>' \
--data-raw '{
"model": "wan3.0-video",
"input": {
"prompt": "视频1抱着图3,在图4的椅子上弹奏一支舒缓的乡村民谣。",
"media": [
{ "type": "reference_image", "url": "https://example.com/wan-r2v-object-girl.jpg" },
{ "type": "reference_video", "url": "https://example.com/wan-r2v-role.mp4" },
{ "type": "reference_image", "url": "https://example.com/wan-r2v-object3.png" }
]
},
"parameters": {
"resolution": "480P",
"ratio": "adaptive",
"duration": 5,
"prompt_extend": true
}
}'curl --location --request POST 'https://neolink.com/api/v1/videos' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API Key>' \
--data-raw '{
"model": "wan3.0-video",
"input": {
"prompt": "A girl changes from a smile to laughter, the camera slowly zooms in.",
"media": [
{ "type": "first_frame", "url": "https://example.com/rap.png" }
]
},
"parameters": {
"resolution": "480P",
"ratio": "adaptive",
"duration": 5,
"prompt_extend": true
}
}'curl --location --request POST 'https://neolink.com/api/v1/videos' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API Key>' \
--data-raw '{
"model": "wan3.0-video",
"input": {
"prompt": "A young girl changes from a smile to a big laugh, the camera slowly zooms in, and the background light shifts from cool to warm tones.",
"media": [
{ "type": "first_frame", "url": "https://example.com/rap.png" },
{ "type": "last_frame", "url": "https://example.com/end-frame.png" }
]
},
"parameters": {
"resolution": "480P",
"ratio": "adaptive",
"duration": 5,
"prompt_extend": true
}
}'curl --location --request POST 'https://neolink.com/api/v1/videos' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API Key>' \
--data-raw '{
"model": "wan3.0-video",
"input": {
"prompt": "Transform the entire scene into a clay style",
"media": [
{ "type": "reference_video", "url": "https://example.com/input.mp4" }
]
},
"parameters": {
"resolution": "720P",
"prompt_extend": true
}
}'curl --location --request POST 'https://neolink.com/api/v1/videos' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API Key>' \
--data-raw '{
"model": "wan3.0-video",
"input": {
"prompt": "Extend video 1 backward: the baker puts the glazed bread aside, sets the brush down, and the camera follows the baker to the oven behind.",
"media": [
{ "type": "reference_video", "url": "https://example.com/input.mp4" }
]
},
"parameters": {
"resolution": "720P",
"ratio": "adaptive",
"prompt_extend": true
}
}'curl --location --request POST 'https://neolink.com/api/v1/videos' \
--header 'Content-Type: application/json' \
--header 'Authorization: Bearer <API Key>' \
--data-raw '{
"model": "wan3.0-video",
"input": {
"prompt": "Generate a high-end smart-glasses product commercial based on the uploaded product file, minimalist and futuristic in style",
"media": [
{ "type": "file", "url": "https://example.com/product.pptx" }
]
},
"parameters": {
"resolution": "480P",
"ratio": "adaptive",
"duration": 10,
"prompt_extend": true
}
}'Response Body
| Parameter | Type | Description |
|---|---|---|
code | int | Error code; see Error Codes for definitions |
message | string | Error message |
request_id | string | Request ID, used for tracing and troubleshooting |
data.task_id | string | Task ID, generated by the system, valid for 24 hours |
data.task_status | string | Task status: submitted / processing / succeed / failed |
data.created_at | int | Task creation time, Unix timestamp in ms |
Response Example
{
"code": 0,
"message": "string",
"request_id": "4909100c-7b5a-9f92-bfe5-xxxxxx",
"data": {
"task_id": "0385dc79-5ff8-4d82-bcb6-xxxxxx",
"task_status": "submitted",
"created_at": 1754298357708
}
}Query Task
Query the status and result of a video generation task by task ID.
Endpoint
GET /v1/videos/{task_id}Request Headers
| Parameter | Type | Required | Description |
|---|---|---|---|
Authorization | string | Yes | Bearer API_key, used to authenticate your account |
Path Parameters
| Parameter | Type | Required | Description |
|---|---|---|---|
task_id | string | Yes | The task ID of the video generation task |
Request Example
curl --request GET \
--url 'https://neolink.com/api/v1/videos/{task_id}' \
--header 'Authorization: Bearer <API Key>'Response Body
| Parameter | Type | Description |
|---|---|---|
code | int | Error code; see Error Codes for definitions |
message | string | Error message |
request_id | string | Request ID, used for tracing and troubleshooting |
data.task_id | string | Task ID |
data.task_status | string | Task status: submitted / processing / succeed / failed |
data.video_url | string | Generated video download URL (returned on success, valid for 24 hours, save it in time) |
data.duration | number | Generated video duration (seconds) |
data.resolution | string | Generated video resolution tier |
Response Example
{
"code": 0,
"message": "string",
"request_id": "78c9b768-0285-996c-b682-xxxxxx",
"data": {
"task_id": "17ed7e50-00cf-4509-aea1-xxxxxx",
"task_status": "succeed",
"video_url": "https://example.com/videos/xxx.mp4",
"duration": 5,
"resolution": "480P"
}
}Polling advice: Video generation takes several minutes — poll every 15 seconds. Status flows
submitted→processing→succeed/failed. The video URL is only valid for 24 hours, please download and store it immediately.
Supported Models
Supported Model Ids:
wan3.0-video: Standard version (all-in-one reference generation)
