Skip to content
Audio · SeparationAvailable

Vocal Separation 2.5

zilapi/vms-2.5 · by InverseAI

Splits a song or mix into a vocal track and an instrumental track. Both are delivered as MP3, up to 320 kbps.

Vocal separation API

POST /v1/audio/separate takes a song or mix and returns two files: the vocals on their own and the instrumental without them. Both stems are included in one price, so you can build karaoke tracks, remixes, a cappellas or a vocal remover into your product without running a GPU yourself.

What developers use it for

  • Make karaoke and backing tracks by removing the vocals
  • Extract a cappella vocals for remixes, covers and samples
  • Remove the vocals from songs used as background music
  • Feed clean vocals into lyric transcription or pitch analysis

Create a job

One request: POST /v1/audio/separate with the audio's input_url (or the file itself as multipart, up to 50 MB) and a webhook_url. We fetch it, run zilapi/vms-2.5 and POST job.succeeded to your URL. The quickstart has every step.

curl -s https://api.zilapi.com/v1/audio/separate \
  -H "Authorization: Bearer $ZILAPI_KEY" \
  -H "Content-Type: application/json" \
  -H "Idempotency-Key: $(uuidgen)" \
  -d '{"input_url": "https://example.com/demo-song.mp3",
       "model": "zilapi/vms-2.5",
       "webhook_url": "https://your-app.example.com/hooks/zilapi"}' \
  > job.json
JOB_ID=$(jq -r .id job.json)

Outputs

A succeeded job has 2 files in output.files. Download each with GET /v1/jobs/{id}/output?name=…. <stem> is your input's name without its extension.

Outputs of zilapi/vms-2.5
nameFilenameContains
vocals<stem>-vocals.mp3The voice(s) only, MP3, up to 320 kbps
instrumental<stem>-instrumental.mp3Everything except the voice(s), MP3, up to 320 kbps
for NAME in vocals instrumental; do
  curl -s "https://api.zilapi.com/v1/jobs/$JOB_ID/output?name=$NAME" -H "Authorization: Bearer $ZILAPI_KEY" > output.json
  curl -o "$(jq -r .filename output.json)" "$(jq -r .url output.json)"   # <stem>-$NAME.mp3
done

Limits and formats

ProviderInverseAI
Input formatsCommon audio: WAV, MP3, M4A/AAC, FLAC, OGG and more, or the audio of a video
Max duration6 h per file (21,600 s)
Max file size5 GB (5,368,709,120 bytes)
Direct uploadUp to 50 MB in the job request itself (multipart)
Output2 files, MP3, up to 320 kbps
BillingPer second of input, 1-second minimum per job, both outputs included
Price$0.033 / audio min = $0.00055 / s
RetentionInput deleted 3 days after it is ready; outputs 7 days after the job succeeds

Parameters

FieldTypeDescription
input_urlstringAn https URL we fetch (up to 5 GB, 6 h). Send this or file.
filestringA ready file_… id from POST /v1/files; or, in a multipart request, the audio itself (up to 50 MB).
modelstringOptional. zilapi/vms-2.5, the default for Vocal Separation.
webhook_urlstringOptional. An https URL that receives this job's job.* event, signed. See Webhooks.

Vocal separation API: questions

How much does the vocal separation API cost?

$0.033 per audio minute of input, billed per second. Both outputs, vocals and instrumental, are included.

What do I get back?

Two MP3 files, up to 320 kbps: vocals and instrumental. Download each with GET /v1/jobs/{id}/output?name=vocals or name=instrumental.

How long can a song be?

Up to 6 hours or 5 GB by URL, or 50 MB uploaded directly in the request.

Compare every model on the pricing page, read the step-by-step guide, or start with the quickstart.