Wan 2.5 API reference
1080p clips with sound that can follow your own audio
Call Wan 2.5 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)
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-2.5/text-to-video
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
480p | 6.75 | $0.0675 |
720p | 13.5 | $0.135 |
1080p | 20.25 | $0.2025 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
promptRequired | string | — | up to 1,500 characters | Describe the subject, action, camera, light, pacing, and boundaries for the shot. |
negative_promptOptional | string | — | up to 500 characters | List what must not appear in the shot. |
aspect_ratioOptional | string | 16:9 | 16:9, 9:16, 1:1, 4:3, 3:4 | Output aspect ratio. |
resolutionOptional | string | 720p | 480p, 720p, 1080p | Output resolution. |
duration_secondsOptional | integer | 5 | 5, 10 | Requested output length in seconds. |
audio_urlOptional | string (uri) | — | — | Audio track that drives lip sync or pacing. |
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-2.5/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-2.5/image-to-video
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
480p | 6.75 | $0.0675 |
720p | 13.5 | $0.135 |
1080p | 20.25 | $0.2025 |
Parameters
| Field | Type | Default | Allowed | What it does |
|---|---|---|---|---|
image_urlRequired | string (uri) | — | — | Opening frame. The clip starts from this image. |
promptOptional | string | — | up to 1,500 characters | Describe what happens after the opening frame: the action, the camera, and the mood. |
negative_promptOptional | string | — | up to 500 characters | List what must not appear in the shot. |
resolutionOptional | string | 720p | 480p, 720p, 1080p | Output resolution. |
duration_secondsOptional | integer | 5 | 5, 10 | Requested output length in seconds. |
audio_urlOptional | string (uri) | — | — | Audio track that drives lip sync or pacing. |
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-2.5/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"Extend Video
alibaba/wan-2.5/video-extend
Price
| Option | Credits (per second of output) | US dollars |
|---|---|---|
480p | 6.75 | $0.0675 |
720p | 13.5 | $0.135 |
1080p | 20.25 | $0.2025 |
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 | — | up to 1,500 characters | Describe what happens next: the action that follows, the camera move and the mood. |
negative_promptOptional | string | — | up to 500 characters | List what must not appear in the new segment. |
resolutionOptional | string | 720p | 480p, 720p, 1080p | Sharpness of the new segment. Match your source to avoid a visible step in sharpness at the seam. |
duration_secondsOptional | integer | 5 | 5, 10 | Length of the new segment in seconds. The source clip is added on top and is not billed. |
audio_urlOptional | string (uri) | — | — | Audio for the new segment: a voice line or music cue it should follow. Your source keeps its own sound. |
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-2.5/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"
