Skip to content

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. The task_id is valid for 24 hours — do not create duplicate tasks, just poll.

Endpoint ​

http
POST /v1/videos

Authentication ​

MethodDescription
Bearer TokenPass Authorization: Bearer <API_key> in the request header to authenticate your account.

Request Headers ​

ParameterTypeRequiredDescription
Content-TypestringYesMedia type of the request body, must be application/json
AuthorizationstringYesBearer API_key, used to authenticate your account

Request Body ​

ParameterTypeRequiredDefaultDescription
modelstringYes-Model name. See "Supported Models" below
input.promptstringYes-Text prompt (required). When media is provided, reference it with 图1, 视频1, 音频1 (see below)
input.mediaobject[]No-Media asset array (optional), used for image-to-video (first-frame / first-and-last-frame), reference-to-video, video editing, etc.
parameters.resolutionstringNo1080PResolution tier: 1080P / 720P / 480P
parameters.ratiostringNoadaptiveAspect ratio: adaptive / 16:9 / 4:3 / 1:1 / 3:4 / 9:16
parameters.durationintegerNo5Video duration in seconds. Without video input: [2, 30]; with video input: input + output ≤ 30. Pass -1 for smart duration
parameters.audiobooleanNotrueWhether output video contains an audio track; sound on/off has the same price
parameters.seedintegerNo-1Random seed: -1 or [0, 2147483647]
parameters.prompt_extendbooleanNotrueWhether to enable prompt rewriting; works best for short prompts but adds latency
parameters.watermarkbooleanNofalseWhether 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 ​

ParameterTypeRequiredDescription
typestringYesMedia type, see the enum below
urlstringYesAsset URL (public URL / OSS temporary URL / Base64). Format varies by type, see limits below

Type Enum ​

ValueDescription
first_frameFirst-frame image. At most 1, strictly used as the first frame of the video
last_frameLast-frame image. At most 1, strictly used as the last frame of the video
reference_imageReference image. At most 10
reference_videoReference video. At most 5 clips, total duration ≤ 15 seconds
reference_audioReference audio. At most 5 clips, total duration ≤ 15 seconds
fileFile. At most 1, mutually exclusive with link
linkWeb page link. At most 1, mutually exclusive with file

Media Combination Rules ​

  • first_frame / last_frame are mutually exclusive with reference_image / reference_video / reference_audio / file / link and cannot be mixed in one request.
  • file and link are mutually exclusive, but both can be combined with reference_image / reference_video / reference_audio.
  • reference_image / reference_video / reference_audio can 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, and ratio must be adaptive.

url Asset Limits ​

TypeLimits
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 ​

bash
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
         }
     }'
bash
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
         }
     }'
bash
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
         }
     }'
bash
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
         }
     }'
bash
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
         }
     }'
bash
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
         }
     }'
bash
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 ​

ParameterTypeDescription
codeintError code; see Error Codes for definitions
messagestringError message
request_idstringRequest ID, used for tracing and troubleshooting
data.task_idstringTask ID, generated by the system, valid for 24 hours
data.task_statusstringTask status: submitted / processing / succeed / failed
data.created_atintTask creation time, Unix timestamp in ms

Response Example ​

json
{
  "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 ​

http
GET /v1/videos/{task_id}

Request Headers ​

ParameterTypeRequiredDescription
AuthorizationstringYesBearer API_key, used to authenticate your account

Path Parameters ​

ParameterTypeRequiredDescription
task_idstringYesThe task ID of the video generation task

Request Example ​

bash
curl --request GET \
  --url 'https://neolink.com/api/v1/videos/{task_id}' \
  --header 'Authorization: Bearer <API Key>'

Response Body ​

ParameterTypeDescription
codeintError code; see Error Codes for definitions
messagestringError message
request_idstringRequest ID, used for tracing and troubleshooting
data.task_idstringTask ID
data.task_statusstringTask status: submitted / processing / succeed / failed
data.video_urlstringGenerated video download URL (returned on success, valid for 24 hours, save it in time)
data.durationnumberGenerated video duration (seconds)
data.resolutionstringGenerated video resolution tier

Response Example ​

json
{
  "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)