GPT Image 2.5 is LIVE — Flare & Sunburst | Try in Image Generator →

bytedance/

Seedance 2.0 Mini Video Edit is ByteDance's faster, lower-cost video editing model for prompt-guided video modification. It edits existing videos with cinematic multi-shot quality, AI camera control, consistent characters, 480P / 720P / 1080P / 4K output, 4-15s duration, and flexible aspect ratios. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

video-to-video
Input
Enable Safety Checker

Idle

$0.75per run·~13 / $10

Next:

ExamplesView all

Replace the character with an anthropomorphic giraffe wearing a black vest and a white pleated tennis skirt; keep all original movements unchanged, only swap the main figure.

Related Models

README

ByteDance Seedance 2.0 Mini Video Edit

ByteDance Seedance 2.0 Mini Video Edit edits an existing video with a text prompt. Upload a source video, describe the edit you want, optionally add reference images or audio, and generate an edited video with selectable resolution, aspect ratio, and native audio settings.

Why Choose This?

  • Prompt-based video editing
    Edit an input video by describing the desired change in natural language.

  • Reference-guided editing
    Use optional reference images to guide subject identity, style, or visual direction.

  • Audio reference support
    Add optional reference audio to guide audio generation.

  • Native audio generation
    Generate native audio for the edited output, or preserve the input video's audio track when audio generation is disabled.

  • Flexible aspect ratios
    Choose from 16:9, 9:16, 4:3, 3:4, 1:1, and 21:9, or let the output adapt to the input video.

  • Resolution options
    Generate edited videos in 480p, 720p, 1080p, or 4k.

Parameters

ParameterRequiredDescription
promptYesDescribe the edit you want applied to the input video.
videoYesURL of the input video to edit. Videos longer than 15 seconds are trimmed to 15 seconds.
reference_imagesNoOptional reference image URLs to guide the edit, such as subject identity or style.
reference_audiosNoOptional reference audio URLs to guide audio generation.
aspect_ratioNoAspect ratio of the output video: 16:9, 9:16, 4:3, 3:4, 1:1, or 21:9. Adapts to the input if not specified.
resolutionNoOutput video resolution: 480p, 720p, 1080p, or 4k. Default: 720p.
durationNoOutput video length in seconds. Range: 4–15. Auto-detected from the input video if not specified.
enable_web_searchNoEnable web search for real-time information. Default: false.
generate_audioNoWhether to generate native audio for the edited output. Default: true. When set to false, the input video's audio track is preserved on the output instead.

How to Use

  1. Write your edit prompt — Describe the edit you want to apply to the input video.
  2. Upload the source video — Provide the video URL you want to edit.
  3. Add references optional — Upload reference images or reference audio when you need extra visual or audio guidance.
  4. Choose aspect ratio optional — Select an output aspect ratio, or leave it empty to adapt to the input video.
  5. Choose resolution — Select 480p, 720p, 1080p, or 4k.
  6. Set duration optional — Choose an output duration from 4 to 15 seconds, or leave it empty for auto-detection.
  7. Configure audio optional — Keep generate_audio enabled for native audio generation, or disable it to preserve the input video's audio track.
  8. Submit — Generate the edited video.

Example Prompt

Change the scene into a cinematic rainy night atmosphere, with neon reflections on the street, soft camera motion, dramatic lighting, realistic color grading, and a polished film look.

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

Price depends on selected resolution, input video duration, and output duration.

Rate per Counted Second

ResolutionCost
480p$0.0375
720p$0.075
1080p$0.1875
4k$0.3750

Example Costs: 5s Input Video + 5s Output Duration

ResolutionCost
480p$0.375
720p$0.75
1080p$1.875
4k$3.750

Example Costs: 10s Input Video + 10s Output Duration

ResolutionCost
480p$0.75
720p$1.50
1080p$3.75
4k$7.50

Example Costs: 15s Input Video + 15s Output Duration

ResolutionCost
480p$1.125
720p$2.25
1080p$5.625
4k$11.250

Best Use Cases

  • Video restyling — Change the visual style, lighting, mood, or atmosphere of an existing video.
  • Prompt-guided edits — Apply natural-language editing instructions to a source video.
  • Reference-based edits — Use reference images to guide identity, style, or visual consistency.
  • Audio-aware editing — Generate native audio or preserve the original input audio depending on the workflow.
  • Creative video iteration — Test multiple edit directions from the same source video.
  • Short-form content editing — Create polished edited clips for social, ads, concepts, and creative production.

Pro Tips

  • Use a clear source video with visible subjects and stable motion.
  • Keep the prompt focused on the exact edit you want.
  • Add reference images when subject identity or visual style needs stronger guidance.
  • Add reference audio when audio direction matters.
  • Use 480p for quick testing, 720p for standard output, 1080p for higher-resolution results, and 4k for maximum-resolution output.
  • Disable generate_audio when you want to preserve the input video's original audio track.

Related Models

Notice: Use @image1, @image2, @audio1, etc. to reference your uploaded assets. The references will stay as plain text—don't worry.

Note:This website uses AI models provided by third parties. Documentation prices are for reference and may be outdated. The Generate button shows an estimate; the final task charge prevails.

Seedance 2.0 Mini Video Edit API — Quick start

Grab a WaveSpeedAI API key, then call POST https://api.wavespeed.ai/api/v3/bytedance/seedance-2.0-mini/video-edit with your input as JSON. The endpoint returns a prediction id. Start polling the result endpoint around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. On completed, read output values from data.outputs. Examples for Seedance 2.0 Mini Video Edit below.

HTTP example
set -euo pipefail

: "${WAVESPEED_API_KEY:?Set WAVESPEED_API_KEY}"

REQUEST_BODY=$(cat <<'JSON'
{
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "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-edit" \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $WAVESPEED_API_KEY" \
  -d "$REQUEST_BODY")

TASK=$(printf '%s' "$SUBMIT_RESPONSE" | jq 'if has("data") then .data else . end')
PREDICTION_ID=$(printf '%s' "$TASK" | jq -r '.id')
if [ -z "$PREDICTION_ID" ] || [ "$PREDICTION_ID" = "null" ]; 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 has("data") then .data else . end')
  STATUS=$(printf '%s' "$RESULT" | jq -r '.status')
  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
Node.js example
const submitUrl = "https://api.wavespeed.ai/api/v3/bytedance/seedance-2.0-mini/video-edit";
const apiKey = process.env.WAVESPEED_API_KEY;
if (!apiKey) throw new Error('Set WAVESPEED_API_KEY');

async function requestJson(url, options = {}) {
  const response = await fetch(url, options);
  if (!response.ok) throw new Error(await response.text());
  return response.json();
}

// 1. Submit the prediction.
const body = await requestJson(submitUrl, {
  method: "POST",
  headers: {
    "Authorization": `Bearer ${apiKey}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
        "prompt": "A cinematic shot of a city at sunset, soft golden light",
        "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
        "aspect_ratio": "16:9",
        "resolution": "720p",
        "enable_web_search": false,
        "generate_audio": true
}),
});
const task = body.data ?? body;
if (!task.id) throw new Error("Submission response did not contain a prediction id");
const resultUrl = `https://api.wavespeed.ai/api/v3/predictions/${task.id}/result`;

// 2. Poll until the prediction finishes.
while (true) {
  const resultBody = await requestJson(resultUrl, {
    headers: { "Authorization": `Bearer ${apiKey}` },
  });
  const result = resultBody.data ?? resultBody;
  if (result.status === "completed") {
    console.log(result.outputs);
    break;
  }
  if (["failed", "cancelled", "timeout", "deleted"].includes(result.status)) throw new Error(JSON.stringify(result));
  await new Promise(resolve => setTimeout(resolve, 2000));
}
Python example
import json
import os
import time
from urllib.request import Request, urlopen

api_key = os.environ["WAVESPEED_API_KEY"]
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
payload = {
    "prompt": "A cinematic shot of a city at sunset, soft golden light",
    "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4",
    "aspect_ratio": "16:9",
    "resolution": "720p",
    "enable_web_search": False,
    "generate_audio": True
}

def request_json(url, data=None):
    request = Request(url, data=data, headers=headers, method="POST" if data else "GET")
    with urlopen(request) as response:
        return json.load(response)

# 1. Submit the prediction.
body = request_json("https://api.wavespeed.ai/api/v3/bytedance/seedance-2.0-mini/video-edit", json.dumps(payload).encode())
task = body.get("data", body)
if not task.get("id"):
    raise RuntimeError("Submission response did not contain a prediction id")
result_url = f"https://api.wavespeed.ai/api/v3/predictions/{task['id']}/result"

# 2. Poll until the prediction finishes.
while True:
    result_body = request_json(result_url)
    result = result_body.get("data", result_body)
    status = result.get("status")
    if status == "completed":
        print(result.get("outputs", []))
        break
    if status in {"failed", "cancelled", "timeout", "deleted"}:
        raise RuntimeError(result)
    time.sleep(2)

Seedance 2.0 Mini Video Edit API — Frequently asked questions

What is the Seedance 2.0 Mini Video Edit API?

Seedance 2.0 Mini Video Edit is a ByteDance model for video editing, exposed as a REST API on WaveSpeedAI. Seedance 2.0 Mini Video Edit is ByteDance's faster, lower-cost video editing model for prompt-guided video modification. It edits existing videos with cinematic multi-shot quality, AI camera control, consistent characters, 480P / 720P / 1080P / 4K output, 4-15s duration, and flexible aspect ratios. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing. You can call it programmatically or try it from the playground above.

How do I call the Seedance 2.0 Mini Video Edit API?

POST your input parameters to the model's REST endpoint (shown in the API tab of this playground) with your WaveSpeedAI API key in the Authorization header. Submission returns a prediction ID. Poll the result endpoint starting around every 2 seconds, increase the interval for long-running tasks, and stop on any terminal status. The playground generates Python, JavaScript, and cURL examples for submitting requests and polling results. Full request/response shape is documented at https://wavespeed.ai/docs/docs-api/bytedance/bytedance-seedance-2.0-mini-video-edit.

How much does Seedance 2.0 Mini Video Edit cost per run?

Seedance 2.0 Mini Video Edit starts at $0.75 per run. That figure is the base price — the final charge scales with the parameters you set in the form (output size, length, count, references, or whatever knobs this model exposes), so a higher-quality or larger output costs more than a minimal one. The exact cost for your current input is shown live next to the Generate button before you submit, and the actual per-call charge is recorded on the prediction afterwards.

What inputs does Seedance 2.0 Mini Video Edit accept?

Key inputs: `prompt`, `video`, `aspect_ratio`, `resolution`, `reference_images`, `enable_web_search`. The full JSON schema (types, defaults, allowed values) is rendered above the Generate button and mirrored in the API reference at https://wavespeed.ai/docs/docs-api/bytedance/bytedance-seedance-2.0-mini-video-edit.

How long does Seedance 2.0 Mini Video Edit take to generate?

Reported generation time on WaveSpeedAI is around 177 seconds per request. This is an estimate, not a latency guarantee; queue time and input settings can change the total wait. live status is visible in the prediction record.

Can I use Seedance 2.0 Mini Video Edit outputs commercially?

Commercial usage rights depend on the model's license, set by its provider (ByteDance). Check the provider's applicable terms and WaveSpeedAI's Terms of Service before commercial use.

Seedance 2.0 Mini Video Edit API on WaveSpeedAI