Vocal Remover isolates the vocal track from a mixed song. You pass the song as a public audio URL and get the vocals back as a separate file. On Jantaris the request has a single field, audio_url, and the job runs with the vendor's default settings. Lead and backing vocal split, dereverb, engine choice, extraction levels and output formats other than the default are not available in Jantaris yet. It is a single-purpose tool with a simple request, one audio URL in and the vocal stem out, billed from the same Jantaris balance as the generative models.
Best for
- Acapellas for remixes and mashups
- Karaoke preparation together with Music Extractor
- Clean vocal takes for transcription or lyric timing
- Studying vocal arrangements and harmonies
Prompting tips
- Use the best source you have; a lossless file separates more cleanly than a low-bitrate MP3.
- Trim silence at the start and end, since billing is per started minute.
- For drums and bass on separate tracks, use Multistem Splitter.
- Host the file at a public http(s) URL that does not require a login.
FAQ
How much does the Vocal Remover API cost?
Vocal Remover is priced at $0.50 per minute. The estimate comes back before processing, and failed jobs are not charged.
Can Vocal Remover separate lead and backing vocals?
The engine can, but Jantaris does not expose that option or dereverb yet. You get one vocal track with lead and backing vocals together.
Can I use extracted vocals from any song?
The tool works on any audio you can link to, but publishing the result requires rights to the original recording. Outputs are yours only as far as the law and those rights allow.
How to call Vocal Remover via API
curl https://jantaris.com/v1/generate?wait=60 \
-H "Authorization: Bearer $JANTARIS_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "vocal-remover",
"input": {
"audio_url": "https://example.com/input.mp3"
}
}'import os, time, requests
API = "https://jantaris.com/v1"
H = {"Authorization": f"Bearer {os.environ['JANTARIS_API_KEY']}"}
task = requests.post(f"{API}/generate", headers=H, json={
"model": "vocal-remover",
"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://jantaris.com/v1";
const headers = { Authorization: `Bearer ${process.env.JANTARIS_API_KEY}`, "Content-Type": "application/json" };
let task = await (await fetch(`${API}/generate`, {
method: "POST",
headers,
body: JSON.stringify({
"model": "vocal-remover",
"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));
Parameters
| Parameter | Type | Allowed | Default |
|---|---|---|---|
audio_url * | string |
The same schema is available from GET /v1/models/vocal-remover.









