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.
| name | Filename | Contains |
|---|---|---|
| vocals | <stem>-vocals.mp3 | The voice(s) only, MP3, up to 320 kbps |
| instrumental | <stem>-instrumental.mp3 | Everything 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
doneLimits and formats
| Provider | InverseAI |
|---|---|
| Input formats | Common audio: WAV, MP3, M4A/AAC, FLAC, OGG and more, or the audio of a video |
| Max duration | 6 h per file (21,600 s) |
| Max file size | 5 GB (5,368,709,120 bytes) |
| Direct upload | Up to 50 MB in the job request itself (multipart) |
| Output | 2 files, MP3, up to 320 kbps |
| Billing | Per second of input, 1-second minimum per job, both outputs included |
| Price | $0.033 / audio min = $0.00055 / s |
| Retention | Input deleted 3 days after it is ready; outputs 7 days after the job succeeds |
Parameters
| Field | Type | Description |
|---|---|---|
| input_url | string | An https URL we fetch (up to 5 GB, 6 h). Send this or file. |
| file | string | A ready file_… id from POST /v1/files; or, in a multipart request, the audio itself (up to 50 MB). |
| model | string | Optional. zilapi/vms-2.5, the default for Vocal Separation. |
| webhook_url | string | Optional. 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.
More APIs on the same key
Compare every model on the pricing page, read the step-by-step guide, or start with the quickstart.