Multistem Splitter takes a finished, mixed recording and gives you its parts back as separate files. Instead of running a vocal remover and then another tool for drums, one job returns the whole set. Musicians use it to remix, to learn a part by ear, or to build a practice track with their own instrument missing.
What you can make
- Remix material: an isolated vocal plus the rhythm section, ready for a new arrangement.
- A play-along track for bass or drums where you mute the stem you want to play yourself.
- A clean bass or drum stem to transcribe a line or a groove note by note.
- Samples of single parts for beat-making, as long as you have rights to the source.
Settings that matter
- Stems you get: vocals, drums and bass. The underlying engine knows up to six (it can also do piano, electric guitar and acoustic guitar), but picking stems is not available in Kadraris yet.
- Hidden options: extraction strength, engine choice and dereverb run on defaults.
- Input: a public audio URL that opens without a login.
- Billing basis: every minute of audio is counted once for each returned stem, so trim the file to the section you actually need before you send it.
- Source quality: a lossless or high-bitrate file gives noticeably cleaner separation than a compressed stream rip.
Example job
input: audio_url = https://example.com/song-chorus.wav
result: vocals, drums, bass (three files)Cut the song down to the chorus or the bars you are working on first; a shorter file means a lower bill.
Questions
What does Multistem Splitter cost per minute?
$1.50 per minute of audio, and that figure already covers all three stems together. If a job fails, the hold is returned and you pay nothing.
Why can I hear a bit of guitar in the bass stem?
Busy mixes leak between parts, especially where instruments share a frequency range. Listen to each stem before you build on it, and start from the best-quality source you have.
I only need the vocal. Is this the right tool?
Not really. For one part, Vocal Remover (keeps the voice) or Music Extractor (keeps the music) is simpler. See Multistem Splitter vs Vocal Remover, and for the bigger picture the stem separation guide.
Multistem Splitter in your code
curl https://kadraris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $KADRARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "multistem-splitter",
"input": {
"audio_url": "https://example.com/input.mp3"
}
}'import os, time, requests
API = "https://kadraris.com/v1"
H = {"Authorization": f"Bearer {os.environ['KADRARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "multistem-splitter",
"input": {
"audio_url": "https://example.com/input.mp3"
}
}).json()
while task["status"] in ("queued", "running"):
time.sleep(3)
task = requests.get(f"{API}/tasks/{task['id']}", headers=H).json()
print(task["status"], task["cost"], [o["url"] for o in task["output"]])const API = "https://kadraris.com/v1";
const headers = { Authorization: `Bearer ${process.env.KADRARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "multistem-splitter",
"input": {
"audio_url": "https://example.com/input.mp3"
}
}),
})).json();
while (task.status === "queued" || task.status === "running") {
await new Promise((r) => setTimeout(r, 3000));
task = await (await fetch(`${API}/tasks/${task.id}`, { headers })).json();
}
console.log(task.status, task.cost, task.output.map((o) => o.url));
Input fields
| Parameter | Type | Allowed | Default |
|---|---|---|---|
audio_url * | string |
Fetch this list as JSON with GET /v1/models/multistem-splitter.























