Alibaba Wan 3.0 Prime Video Extend API Documentation

Alibaba Wan 3.0 Prime Video Extend API Documentation

Playground

Try it on WaveSpeedAI!

Wan 3.0 Prime Video Extend continues existing videos by generating a new 2-30 second segment from the final frame and appending it to the retained source video. It preserves existing source audio, supports optional audio generation for the new segment, retains up to the last 120 seconds of input, and outputs at 480P / 720P / 1080P. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Wan 3.0 Prime Video Extend continues an existing video with a new AI-generated segment while preserving the visual and audio context of the source footage. Instead of regenerating the original clip, it keeps the retained source intact and generates what happens next, making it suitable for longer narrative sequences, continuous camera movement, character actions, and scene progression.


Why Choose This?

  • Continuous video extension
    Continue an existing clip instead of generating an unrelated new shot, helping maintain scene, subject, and motion continuity.

  • Up to 120 seconds of source context
    The model can retain and use up to the last 120 seconds of the source video before generating the continuation.

  • 2–30 second new segments
    Append a newly generated segment from 2 to 30 seconds in a single request.

  • Prime generation quality
    Designed for higher-quality continuation workflows where visual coherence, motion progression, and scene continuity matter.

  • Optional ending-frame control
    Use last_image to guide the final appearance or composition of the newly generated segment.

  • Audio-aware continuation
    Existing source audio is preserved, while enable_audio can generate audio for the newly appended segment.

  • 480p, 720p, and 1080p output
    Choose the resolution that best fits preview, production, or higher-quality workflows.

  • Prompt expansion
    Enable automatic prompt optimization when the continuation requires more detailed motion or scene interpretation.


Parameters

ParameterRequiredDescription
promptYesPositive prompt describing how the video should continue, including subject action, scene progression, camera movement, atmosphere, and visual direction.
videoYesSource video URL. Inputs longer than 120 seconds are automatically trimmed to their last 120 seconds before extension.
last_imageNoOptional last-frame image used to guide the ending of the generated continuation. Supports URL or Base64-encoded data.
resolutionNoOutput video resolution: 480p, 720p, or 1080p. Default: 720p.
durationNoLength of the new segment to append, in seconds. Range: 2–30. Default: 5.
enable_prompt_expansionNoEnable automatic prompt optimization and expansion. Default: false.
enable_audioNoGenerate audio for the newly appended segment. Existing source audio is preserved. Default: true.
seedNoRandom seed for generation. Use -1 for a random seed.

How to Use

  1. Upload a source video — Provide the clip you want to continue.
  2. Describe what happens next — Write a prompt focused on the continuation rather than repeating the existing scene.
  3. Add last-frame guidance optional — Provide last_image when the continuation should end on a specific composition, pose, or scene state.
  4. Choose resolution — Select 480p, 720p, or 1080p.
  5. Set extension duration — Choose how many new seconds to append, from 2 to 30.
  6. Configure prompt expansion optional — Enable enable_prompt_expansion when the continuation instruction needs additional interpretation.
  7. Configure audio optional — Keep enable_audio enabled when the generated segment should include new audio.
  8. Set seed optional — Use a fixed seed for reproducible generation, or -1 for random generation.
  9. Submit — Generate the extended video and retrieve the completed output.

Pricing

Pricing is based only on the newly generated extension duration and selected resolution. The retained source video duration is not included in the pricing calculation.

ResolutionPer 5sPer Billed Second
480p$0.375$0.075
720p$0.750$0.150
1080p$1.500$0.300

Example Costs

Extension Duration480p720p1080p
2s$0.15$0.30$0.60
5s$0.375$0.75$1.50
10s$0.75$1.50$3.00
20s$1.50$3.00$6.00
30s$2.25$4.50$9.00

Best Use Cases

  • Narrative continuation — Extend story scenes without restarting the sequence from scratch.
  • Longer cinematic shots — Continue camera movement, character actions, and environmental motion beyond the original clip.
  • Character continuity — Extend scenes where the same subject needs to remain visually consistent across the transition.
  • Action progression — Continue walking, driving, dancing, combat, performance, or other ongoing motion.
  • Scene evolution — Progress lighting, weather, environment, or events naturally from the existing footage.
  • Start-to-end directed extension — Use last_image when the continuation needs to arrive at a specific final frame.
  • Long-form AI video workflows — Build longer sequences by repeatedly extending existing generated or edited clips.

Pro Tips

  • Write the prompt around what happens next, not just what is already visible in the source video.
  • Mention the direction of existing movement when continuity matters, such as camera tracking, character movement, or vehicle direction.
  • Keep character identity, clothing, environment, lighting, and camera behavior consistent in the prompt when the scene should remain continuous.
  • Use last_image when the continuation needs to end on a specific pose, composition, object state, or environment.
  • Use shorter extensions first when testing motion continuity, then increase duration once the direction is stable.
  • Enable enable_prompt_expansion for short prompts that need more detailed interpretation.
  • Use a fixed seed when comparing different prompts or parameter configurations.

Notes

  • video and prompt are required.
  • duration controls only the length of the newly generated segment.
  • Extension duration supports 2–30 seconds and defaults to 5.
  • Source videos longer than 120 seconds are automatically trimmed to their last 120 seconds.
  • Existing source audio is preserved.
  • enable_audio controls audio generation for the new segment and defaults to true.
  • enable_prompt_expansion defaults to false.

Authentication

For authentication details, please refer to the Authentication Guide.

API Endpoints

Submit Task & Query Result

set -euo pipefail

export WAVESPEED_API_KEY="your-api-key"

REQUEST_BODY=$(cat <<'JSON'
{
  "prompt": "A cinematic ocean wave at sunrise, highly detailed",
  "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
  "resolution": "720p",
  "duration": 5,
  "enable_prompt_expansion": false,
  "enable_audio": true
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/alibaba/wan-3.0-prime/video-extend" \
  -H "Authorization: Bearer ${WAVESPEED_API_KEY}" \
  -H "Content-Type: application/json" \
  -d "${REQUEST_BODY}")

TASK=$(printf '%s' "${SUBMIT_RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "${TASK}" | jq -r '.id // empty')
if [ -z "${PREDICTION_ID}" ]; then
  printf 'Submission response did not contain a prediction id
' >&2
  exit 1
fi
RESULT_URL="https://api.wavespeed.ai/api/v3/predictions/${PREDICTION_ID}/result"

# 2. Poll until the prediction finishes.
while true; do
  RESPONSE=$(curl --silent --show-error --fail-with-body \
    "${RESULT_URL}" \
    -H "Authorization: Bearer ${WAVESPEED_API_KEY}")
  RESULT=$(printf '%s' "${RESPONSE}" | jq 'if type == "object" and has("data") then .data else . end')
  STATUS=$(printf '%s' "${RESULT}" | jq -r '.status // empty')

  case "${STATUS}" in
    completed) printf '%s\n' "${RESULT}" | jq '.outputs'; break ;;
    failed|cancelled|timeout|deleted) printf '%s\n' "${RESULT}" | jq . >&2; exit 1 ;;
    *) sleep 2 ;;
  esac
done

Parameters

Task Submission Parameters

Request Parameters

ParameterTypeRequiredDefaultRangeDescription
promptstringYes-The positive prompt for the generation.
videostringYes-Source video URL. Inputs longer than 120 seconds are automatically trimmed to their last 120 seconds before extension.
last_imagestringNo--The last frame image for generating the video (optional). Supports URL or Base64-encoded data.
resolutionstringNo720p480p, 720p, 1080pThe resolution of the generated video.
durationintegerNo52 ~ 30Length in seconds of the NEW segment to append (2-30). Final output duration is the retained source duration plus this value.
enable_prompt_expansionbooleanNofalse-If set to true, the prompt optimizer will be enabled.
enable_audiobooleanNotrue-Generate audio for the new segment. Existing source audio is preserved.
seedintegerNo--The random seed to use for the generation. -1 means a random seed will be used.

Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
data.idstringUnique identifier for the prediction, Task Id
data.modelstringModel ID used for the prediction
data.outputsarrayOutput values, usually URL strings; some models return text strings or structured result objects (empty when status is not completed)
data.urlsobjectObject containing related API endpoints
data.statusstringTask status. completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses.
data.created_atstringISO timestamp of when the request was created (e.g., “2023-04-01T12:34:56.789Z”)
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds

Result Request Parameters

ParameterTypeRequiredDefaultDescription
idstringYes-Task ID

Result Response Parameters

ParameterTypeDescription
codeintegerHTTP status code (e.g., 200 for success)
messagestringStatus message (e.g., “success”)
dataobjectThe prediction data object containing all details
data.idstringUnique identifier for the prediction
data.modelstringModel ID used for the prediction
data.outputsarray<string | object>Array of generated outputs (empty when status is not completed). Items are usually URL strings, but may be text strings or structured result objects, depending on the model.
data.urlsobjectObject containing related API endpoints
data.statusstringStatus: completed is successful; failed, cancelled, timeout, and deleted are failure terminal statuses
data.created_atstringISO timestamp of when the request was created
data.errorstringError message (empty if no error occurred)
data.timingsobjectObject containing timing details
data.timings.inferenceintegerInference time in milliseconds
© 2026 WaveSpeedAI. All rights reserved.