Bytedance Seedance 2.0 Mini Video Extend API Documentation

Bytedance Seedance 2.0 Mini Video Extend API Documentation

Playground

Try it on WaveSpeedAI!

Seedance 2.0 Mini Video Extend is ByteDance’s faster, lower-cost video extension model for cinematic multi-shot continuation. It extends existing videos into seamless narrative sequences with AI camera control, consistent characters, motion continuity, 480P / 720P / 1080P / 4K output, 4-15s duration, and flexible aspect ratios. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

ByteDance Seedance 2.0 Mini Video Extend continues an existing video by generating a new segment from the input video’s last frame. Upload a source video, describe the cinematic continuation, optionally provide a target last frame, and generate an extended video segment with synchronized native audio.


Why Choose This?

  • Video continuation
    Extend an existing video by generating a new segment that continues from the input video’s last frame.

  • Prompt-guided extension
    Describe the action, camera movement, lighting, and mood for the new segment.

  • Optional target last frame
    Provide last_image when you want the new segment to interpolate toward a specific ending frame.

  • Native audio generation
    Generate synchronized audio together with the extended video segment using generate_audio.

  • Flexible resolution options
    Choose 480p, 720p, 1080p, or 4k depending on your quality and cost needs.

  • Web search option
    Enable enable_web_search when the continuation needs real-time information.


Parameters

ParameterRequiredDescription
promptYesDescribe the cinematic continuation, including action, camera movement, lighting, and mood.
videoYesURL of the input video to extend. Generation continues from the last frame.
last_imageNoOptional target last-frame URL. If provided, the new segment interpolates from the input video’s last frame to this image.
resolutionNoOutput resolution of the new segment: 480p, 720p, 1080p, or 4k. Default: 720p.
durationNoLength in seconds of the new segment to append. Range: 4–15. Default: 5.
enable_web_searchNoEnable web search for real-time information. Default: false.
generate_audioNoWhether to generate native audio synchronized with the output video. Default: true.

How to Use

  1. Write your prompt — Describe how the video should continue, including subject action, camera movement, lighting, and mood.
  2. Upload the source video — Provide the input video that should be extended.
  3. Add a last image optional — Use last_image when you want to guide the ending frame of the new segment.
  4. Choose resolution — Select 480p, 720p, 1080p, or 4k.
  5. Set duration — Choose the length of the new segment between 4 and 15 seconds.
  6. Configure audio optional — Keep generate_audio enabled for synchronized native audio, or disable it if audio is not needed.
  7. Submit — Generate the extended video segment.

Example Prompt

Continue the scene with a slow forward camera movement, the character walking deeper into the neon-lit street, soft rain falling, reflections glowing on the pavement, cinematic lighting, calm but mysterious atmosphere.


Writing Effective Prompts

Extension here continues your video by generating a new segment from its final frame and stitching it on. So your prompt describes what happens next, starting from that last frame — the same way you’d direct an image-to-video shot. (This differs from native extension: don’t write “continue” or “extend backward” triggers; just describe the new action.)

Direct the new segment

Describe the action, motion, and camera work that begin from the final frame. Don’t re-describe what’s already on screen — build forward from it.

From the final frame, the surfer rides the wave to shore; the camera pulls back to a wide shot.

Keep it continuous

Match the motion, camera, and pacing of the source so the seam is invisible. For longer extensions, use a timed shot list.

> 0-3s: The bee lifts off the flower, the camera following in a slow macro pull-back. > 3-5s: It drifts to a second flower and lands; pollen catches the light as it settles. >

Camera language

Write these directly; the model understands them:

  • Shot size — extreme wide, wide, medium, medium close-up, close-up
  • Movement — push in, pull out, pan, track, follow, orbit, tilt up, handheld shake
  • Angle — low angle, overhead, eye-level, first-person
  • Techniques — one-shot / long take, dolly zoom, bullet time, speed ramp

For a niche term, add a plain-language gloss: “rack focus: the sharp foreground softens as the background comes into focus.”

Negative control

Positive descriptions work best, but you can suppress subtitles and audio:

  • “No subtitles.”
  • “No BGM — ambient and action sounds only.”
  • “No audio.”

Weak vs. strong

prompt
weakmake it longer
strongFrom the final frame, the surfer rides the wave to shore, then steps off the board onto wet sand as the camera pulls back to a wide shot. Match the existing golden-hour light and handheld motion. Ocean and wind sounds, no music.

Pricing

Per 5 Seconds

ResolutionCost
480p$0.30
720p$0.60
1080p$1.50
4k$3.00

Per Second

ResolutionCost
480p$0.06
720p$0.12
1080p$0.30
4k$0.60

Example Costs

Resolution4s5s10s15s
480p$0.24$0.30$0.60$0.90
720p$0.48$0.60$1.20$1.80
1080p$1.20$1.50$3.00$4.50
4k$2.40$3.00$6.00$9.00

Best Use Cases

  • Video extension — Continue an existing clip with a newly generated segment.
  • Scene continuation — Extend character action, camera movement, lighting, and atmosphere from the source video.
  • Target-frame continuation — Use last_image to guide the ending direction of the new segment.
  • Cinematic short clips — Generate continued video segments with synchronized native audio.
  • Creative prototyping — Test alternate continuations from the same source video.

Pro Tips

  • Use a source video with a clear ending frame.
  • Keep the prompt focused on what should happen next.
  • Use last_image when the final frame or ending direction matters.
  • Describe visible motion, camera behavior, lighting, and mood.
  • Use 480p for quick testing, 720p for standard output, 1080p for higher-resolution results, and 4k for maximum-resolution output.
  • Keep generate_audio enabled when you want the extended segment to include synchronized native audio.


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_web_search": false,
  "generate_audio": true
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/bytedance/seedance-2.0-mini/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-Describe the cinematic continuation - action, camera movement, lighting, mood.
videostringYes-URL of the input video to extend. Generation continues from the last frame.
last_imagestringNo--Optional target last-frame URL. If provided, the new segment interpolates from the input video's last frame to this image.
resolutionstringNo720p480p, 720p, 1080p, 4kOutput resolution of the new segment.
durationintegerNo54 ~ 15Length in seconds of the new segment to append (4-15).
enable_web_searchbooleanNofalse-Enable web search for real-time information.
generate_audiobooleanNotrue-Whether to generate native audio synchronized with the output video. Defaults to true.

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.