Wan 3.0 API reference
Up to 30-second clips with synced audio
Call Wan 3.0 from your own code with one PopNow API key. Below are the exact model IDs to send, every input field the model accepts, what each request costs in credits, and a request you can paste into a terminal.
At a glance
- Made by
- Alibaba
- Output
- Video
- From
- 6.75 credits per second of output ($0.0675)
- Typical time
- about 147 s
1 credit = $0.01. A task holds the highest possible charge when it is accepted and settles the real amount when it finishes, rounded up to whole credits; failed tasks are not charged. Ask POST /api/v1/jobs/quote for the exact figure before you run.
Create Video
alibaba/wan-3.0/text-to-video
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
480p | 6.75 | $0.0675 |
720p | 13.5 | $0.135 |
1080p | 27 | $0.27 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
promptRequired | string | — | — | Describe the subject, action, camera, light, pacing, and boundaries for the shot. |
aspect_ratioOptional | string | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4, adaptive | Output aspect ratio; adaptive follows the input media and the intent. |
enable_thinkingOptional | boolean | false | — | Let the model reason about the brief and the reference material before generating. Helps with complex references; slower. Switches on by itself when a reference file or link is given. |
resolutionOptional | string | 720p | 480p, 720p, 1080p | Output resolution. |
duration_secondsOptional | integer | 5 | -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, … (+16) | Requested output length in seconds. Pass -1 for smart duration: the model picks the length from the prompt and any input media instead of a fixed number. |
generate_audioOptional | boolean | true | — | Request generated audio with the video. |
enable_prompt_expansionOptional | boolean | false | — | Allow the service to expand the submitted creative brief before generation. |
seedOptional | integer | — | 0 to 2147483647 | Random seed. Keep it fixed only for controlled comparisons, not as a frame-identical guarantee. |
Example request
This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "alibaba/wan-3.0/text-to-video",
"input": {
"prompt": "A paper boat drifts down a rain-soaked street at dusk, neon signs reflecting in the water, slow tracking shot at ground level",
"duration_seconds": 5,
"resolution": "720p"
}
}'The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
-H "Authorization: Bearer $POPNOW_API_KEY"Image to Video
alibaba/wan-3.0/image-to-video
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
480p | 6.75 | $0.0675 |
720p | 13.5 | $0.135 |
1080p | 27 | $0.27 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
image_urlRequired | string | — | — | Opening-frame image. |
promptOptional | string | — | — | Describe the subject, action, camera, light, pacing, and boundaries for the shot. |
last_image_urlOptional | string | — | — | Optional last frame: the clip ends exactly on this image. Requires image_url. |
aspect_ratioOptional | string | — | 16:9, 9:16, 1:1, 4:3, 3:4, adaptive | Output aspect ratio. Omit it to let the task adapt to the opening image; adaptive follows the input media and the intent. |
enable_thinkingOptional | boolean | false | — | Let the model reason about the brief and the reference material before generating. Helps with complex references; slower. Switches on by itself when a reference file or link is given. |
resolutionOptional | string | 720p | 480p, 720p, 1080p | Output resolution. |
duration_secondsOptional | integer | 5 | -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, … (+16) | Requested output length in seconds. Pass -1 for smart duration: the model picks the length from the prompt and any input media instead of a fixed number. |
generate_audioOptional | boolean | true | — | Request generated audio with the video. |
enable_prompt_expansionOptional | boolean | false | — | Allow the service to expand the submitted creative brief before generation. |
seedOptional | integer | — | 0 to 2147483647 | Random seed. Keep it fixed only for controlled comparisons, not as a frame-identical guarantee. |
Example request
This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.
The example uses PopNow sample files in image_url. Replace them with your own public HTTPS links, uploads or saved assets.
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "alibaba/wan-3.0/image-to-video",
"input": {
"prompt": "He lands softly on the rooftop, laughs and turns toward the camera while the balloons sway in the evening breeze; slow push-in",
"image_url": "https://media.popnow.ai/influencer/examples/marco.webp",
"duration_seconds": 5,
"resolution": "720p"
}
}'The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
-H "Authorization: Bearer $POPNOW_API_KEY"Reference to Video
alibaba/wan-3.0/reference-to-video
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
480p | 6.75 | $0.0675 |
720p | 13.5 | $0.135 |
1080p | 27 | $0.27 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
promptOptional | string | — | — | Describe the subject, action, camera, light, pacing, and boundaries for the shot. |
reference_image_urlsOptional | array<string> | — | up to 10 items | Reference images, up to 10 items. |
reference_video_urlsOptional | array<string> | — | up to 5 items | Reference videos, up to 5 items and 15 seconds in total. |
reference_audio_urlsOptional | array<string> | — | up to 5 items | Reference audio, up to 5 items and 15 seconds in total. |
reference_file_urlOptional | string (uri) | — | — | One reference document (PDF, DOCX, TXT, MD and similar) that the model reads for characters, wardrobe, setting and action. |
reference_link_urlOptional | string (uri) | — | — | One public web page the model reads for reference. It must open without a login. |
aspect_ratioOptional | string | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4, adaptive | Output aspect ratio; adaptive follows the input media and the intent. |
enable_thinkingOptional | boolean | false | — | Let the model reason about the brief and the reference material before generating. Helps with complex references; slower. Switches on by itself when a reference file or link is given. |
resolutionOptional | string | 720p | 480p, 720p, 1080p | Output resolution. |
duration_secondsOptional | integer | 5 | -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, … (+16) | Requested output length in seconds. Pass -1 for smart duration: the model picks the length from the prompt and any input media instead of a fixed number. With reference videos, their total length plus the output length must not exceed 30 seconds, and the reference video seconds are billed together with the output seconds. |
generate_audioOptional | boolean | true | — | Request generated audio with the video. |
enable_prompt_expansionOptional | boolean | — | — | Allow the service to expand the submitted creative brief before generation. |
seedOptional | integer | — | 0 to 2147483647 | Random seed. Keep it fixed only for controlled comparisons, not as a frame-identical guarantee. |
Example request
This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.
The example uses PopNow sample files in reference_image_urls. Replace them with your own public HTTPS links, uploads or saved assets.
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "alibaba/wan-3.0/reference-to-video",
"input": {
"prompt": "The man from the reference image jogs across a sunlit rooftop at golden hour and smiles at the camera; smooth tracking shot",
"reference_image_urls": [
"https://media.popnow.ai/influencer/examples/ava.webp"
],
"duration_seconds": 5,
"resolution": "720p"
}
}'The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
-H "Authorization: Bearer $POPNOW_API_KEY"Extend Video
alibaba/wan-3.0/video-extend
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
480p | 6.75 | $0.0675 |
720p | 13.5 | $0.135 |
1080p | 27 | $0.27 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
video_urlRequired | string (uri) | — | — | The clip to continue: MP4, MOV or WebM, up to 60 seconds. Its last frame opens the new segment, and the result is your clip with the new segment joined on. |
promptOptional | string | — | — | Optional. Describe what happens next: the action that follows, the camera move and the sound. |
last_image_urlOptional | string | — | — | Optional target end frame: the new segment finishes on exactly this image. |
enable_thinkingOptional | boolean | false | — | Let the model reason about the brief and the reference material before generating. Helps with complex references; slower. Switches on by itself when a reference file or link is given. |
resolutionOptional | string | 720p | 480p, 720p, 1080p | Resolution the new segment is generated at. Match your source to avoid a visible step in sharpness at the seam. |
duration_secondsOptional | integer | 5 | -1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, … (+16) | Length of the new segment in seconds. Pass -1 to let the model pick the length. The source clip is added on top and is not billed. |
generate_audioOptional | boolean | true | — | Generate sound for the new segment. The source keeps its own sound either way. |
enable_prompt_expansionOptional | boolean | false | — | Allow the service to expand the submitted creative brief before generation. |
seedOptional | integer | — | 0 to 2147483647 | Random seed. Keep it fixed only for controlled comparisons, not as a frame-identical guarantee. |
Example request
This request runs as it is; any field you leave out uses its default. Put your key in POPNOW_API_KEY first.
The example uses PopNow sample files in video_url. Replace them with your own public HTTPS links, uploads or saved assets.
curl -X POST "https://api.popnow.ai/api/v1/jobs/createTask" \
-H "Authorization: Bearer $POPNOW_API_KEY" \
-H "Content-Type: application/json" \
-H "Idempotency-Key: $(uuidgen)" \
-d '{
"model": "alibaba/wan-3.0/video-extend",
"input": {
"prompt": "The flowers keep opening while the camera slowly pulls back to reveal a sunlit meadow",
"video_url": "https://media.popnow.ai/effects/flower-bloom-1abd6efb.mp4",
"duration_seconds": 5,
"resolution": "720p"
}
}'The response carries a taskId straight away. Read the result with GET /api/v1/jobs/recordInfo, or add callBackUrl to be notified.
curl "https://api.popnow.ai/api/v1/jobs/recordInfo?taskId=TASK_ID_FROM_CREATE_TASK" \
-H "Authorization: Bearer $POPNOW_API_KEY"
