Bytedance Seedance 2.5 Video Edit Turbo API Documentation

Bytedance Seedance 2.5 Video Edit Turbo API Documentation

Playground

Try it on WaveSpeedAI!

Seedance 2.5 (Video-Edit Turbo) is the turbo tier for editing an input video from a natural-language prompt — faster, more affordable high-resolution output while preserving subject identity, composition, and motion. Ready-to-use REST API, best performance, no coldstarts, affordable pricing.

Features

Seedance 2.5 Video Edit Turbo edits an input video from a natural-language prompt. It is the turbo tier for faster, more affordable high-resolution video editing while preserving the subject identity, composition, and motion of the original clip.


Why Choose This?

  • Turbo video editing
    Optimized for faster and more cost-efficient high-resolution video edits.

  • Conversational video editing
    Describe the change in plain language, and the model applies the edit while keeping the original motion structure.

  • Subject and motion preservation
    Preserve faces, objects, camera movement, and scene composition from the input video.

  • Multi-reference support
    Optionally guide style, character identity, or audio direction with reference images and audio clips.

  • Native audio synchronization
    Generate synchronized audio together with the edited video output.


Parameters

ParameterRequiredDescription
promptYesDescribe the edit.
videoYesInput video URL. Videos longer than 15 seconds are trimmed to 15 seconds.
reference_imagesNoOptional reference images for style, subject identity, or visual guidance.
reference_audiosNoOptional reference audio clips for audio guidance.
aspect_ratioNoOutput aspect ratio: 16:9, 9:16, 4:3, 3:4, 1:1, or 21:9. Adapts to the input video if not specified.
resolutionNoOutput resolution: 720p or 1080p. Default: 720p.
enable_web_searchNoEnable web search for real-time context.

How to Use

  1. Upload the input video — Provide the source video to edit. Videos longer than 15 seconds are trimmed automatically.
  2. Write the edit prompt — Describe the change you want to apply to the input video.
  3. Add references optional — Use reference images for style or identity guidance, and reference audio for soundtrack direction.
  4. Choose resolution — Select 720p or 1080p.
  5. Submit — Generate the edited video with synchronized audio.

Writing Effective Prompts

Editing keeps your source video and changes only what you name. Be precise about the scope, and describe the change as from A to B.

State the change plainly

Name exactly what to add, remove, or modify — and use an editing trigger word (add, remove, replace, change to, modify) so the intent is unambiguous.

  • “Replace the man’s coffee cup with a book, keep everything else unchanged.”
  • “Remove the subtitles.”
  • “Change the background from a city street to a snowy forest.”

Use timestamps for partial edits

Confine a change to a time range so the rest of the clip is untouched.

  • “From 4-6s, change the man’s action from drinking coffee to waving; leave the rest unchanged.”

Reference images for edits

Attach images to specify a replacement, and bind each explicitly (see below).

  • “Replace the woman on the right with the person in @image1.”

Referencing uploaded assets

When you attach images, videos, or audio, bind each one explicitly in the prompt by its upload order — @image1, @video1, @audio1 — and say what it’s for. Don’t rely on labels drawn inside the image itself.

  • “The knight in @image1 walks through the castle in @image2.”
  • “Refer to @video1 for the camera movement only; keep its shot order.”
  • “@image1 and @image2 are Character 1, voiced by @audio1.”

When a reference is already accurate, just point to it — no need to re-describe it in detail.

Audio edits

You can add, remove, or modify audio too.

  • “Translate the dialogue to Spanish, keep lip movements matched, no subtitles.”
  • “Remove the background music; keep only ambient and action sounds.”

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
weakchange the video
strongReplace the red car in the video with a black motorcycle, matching its motion and speed. Keep the road, lighting, and camera movement unchanged. From 2s onward, add faint dust kicked up behind the rear wheel. Keep the original engine audio.

Pricing

Pricing is the Seedance 2.5 edit base rate billed on input duration + output duration seconds, plus a resolution surcharge billed on output seconds only:

ComponentPer second
Base (input + output seconds)$0.11
720p surcharge (output seconds)$0.02
1080p surcharge (output seconds)$0.04

Example Costs: 5s Input + 5s Output

ResolutionCost
720p$1.20
1080p$1.30

Example Costs: 12s Input + 12s Output

ResolutionCost
720p$2.88
1080p$3.12

Best Use Cases

  • Prompt-based video editing — Edit existing videos using natural-language instructions.
  • Video restyling — Change lighting, mood, environment, style, or atmosphere while preserving the original motion.
  • Character and subject preservation — Keep faces, products, objects, or main subjects consistent through the edit.
  • Reference-guided editing — Use reference images or audio to guide style, identity, or sound direction.
  • Short-form content editing — Create polished video edits for social media, ads, concepts, and creative production.

Pro Tips

  • Use clear source videos with visible subjects and stable motion.
  • Keep the prompt focused on the specific edit you want.
  • Mention what should stay unchanged when preservation matters.
  • Add reference images when character identity, style, or product consistency matters.
  • Add reference audio when soundtrack or voice style matters.
  • Use 720p for lower-cost testing and 1080p for higher-resolution output.

Notes

  • Inputs longer than 15 seconds are trimmed to 15 seconds.
  • Inputs shorter than 2 seconds are padded with the last frame to 2 seconds before editing.
  • Auto-detected output duration matches the input length after rounding and duration handling.
  • Native audio generation is included.
  • Use @image1, @image2, @audio1, and similar asset tags to reference uploaded assets in the prompt. These references stay as plain text.

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",
  "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.5/video-edit-turbo" \
  -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 edit you want applied to the input video.
videostringYes-URL of the input video to edit. Videos longer than 30s are trimmed to 30s; videos shorter than 4s are padded to 4s.
reference_imagesarray<string>No-0 ~ 30 itemsOptional reference image URLs to guide the edit (subject identity, style, etc.).
reference_audiosarray<string>No-0 ~ 10 itemsOptional reference audio URLs to guide audio generation.
resolutionstringNo720p720p, 1080pTurbo output resolution.
generate_audiobooleanNotrue-Whether to generate native audio for the edited output. Defaults to true. When set to false, the input video's audio track is preserved on the output instead.

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.