Video Music Remover API Documentation

Video Music Remover API Documentation

Playground

Try it on WaveSpeedAI!

Video Music Remover strips the background music from any video while keeping dialogue and sound effects, so you can reuse, re-score or dub footage. Ready-to-use REST inference API, best performance, no coldstarts, affordable pricing.

Features

Video Music Remover removes background music from a video while preserving dialogue, voices, sound effects, ambience, and the original picture. Use it to clean music from existing footage before reposting, replace a soundtrack with your own music, or prepare video for dubbing and further audio editing.

The model works directly from a source video and supports clips up to 10 minutes in a single request.


Why Choose This?

  • Background music removal
    Remove songs, instrumental scores, and other music beds from an existing video.

  • Dialogue preservation
    Keep spoken voices while removing the surrounding music.

  • Sound-effect preservation
    Retain footsteps, impacts, ambience, environmental sounds, and other non-music audio where possible.

  • Original picture preserved
    The visual content is not regenerated, so the video keeps its original picture, framing, and visual quality.

  • Long-video support
    Process up to 600 seconds of source video in a single request.

  • Simple workflow
    Provide one video and receive a version with the background music removed.


Parameters

ParameterRequiredDescription
videoYesInput video provided by public URL. Up to the first 600 seconds are processed.

How to Use

  1. Provide a source video — Supply the URL of the video containing the music you want to remove.
  2. Submit — Run the music-removal process.
  3. Retrieve the result — Download the processed video with dialogue and other non-music audio preserved where possible.
  4. Continue editing optional — Add a new soundtrack, prepare the footage for dubbing, or use it in another post-production workflow.

Pricing

Pricing is based on the processed input video duration.

The rate is $0.01 per 5 billed seconds, equivalent to $0.002 per billed second.

Input duration is rounded up to the next whole second, with a minimum billed duration of 3 seconds and a maximum billed duration of 600 seconds.

Video DurationBilled DurationCost
1s3s$0.006
3s3s$0.006
5s5s$0.010
30s30s$0.060
60s60s$0.120
300s300s$0.600
600s600s$1.200

Videos longer than 600 seconds are processed and billed only up to the first 600 seconds.


Best Use Cases

  • Soundtrack replacement — Remove existing music before adding a new soundtrack.
  • Dubbing preparation — Clear background music while retaining dialogue and other useful source audio.
  • Reposting workflows — Prepare existing clips for reuse when the original music needs to be removed.
  • Dialogue-focused editing — Isolate speech more cleanly from videos with background music.
  • Video post-production — Create a cleaner audio base for remixing, editing, or additional processing.
  • Creator content — Remove music from interviews, vlogs, tutorials, and social videos without changing the picture.

Pro Tips

  • Results are strongest when dialogue and music are clearly distinguishable in the source mix.
  • Very loud music that heavily overlaps speech may leave faint residual music after processing.
  • Listen to ambience and continuous background sounds after processing, as some sounds may be partially affected when they overlap strongly with music.
  • Use the processed result as a clean starting point when replacing the original soundtrack.
  • For long videos, trim the source beforehand when you only need a specific section processed.

Notes

  • video is the only required parameter.
  • Maximum processed duration is 600 seconds.
  • Videos longer than 10 minutes are limited to the first 10 minutes.
  • Videos without an audio track have no music to remove and are returned unchanged.
  • Dialogue, voices, sound effects, and ambience are preserved where possible.
  • Music that is significantly louder than dialogue may leave faint residual traces.
  • Continuous background sounds such as rain may become slightly quieter after music removal.
  • The visual content of the source video is preserved.

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'
{
  "video": "https://interactive-examples.mdn.mozilla.net/media/cc0-videos/flower.mp4"
}
JSON
)

# 1. Submit the prediction.
SUBMIT_RESPONSE=$(curl --silent --show-error --fail-with-body \
  -X POST "https://api.wavespeed.ai/api/v3/wavespeed-ai/video-music-remover" \
  -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
videostringYes-The video to remove background music from. The picture is kept as is; only the audio track is processed.

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.