---
name: separate-stems
description: Split a song into vocals, drums, bass and more, or isolate one instrument from a 45-instrument catalog.
license: MIT
---

# Skill: separate-stems

Split any song into isolated stems — vocals, drums, bass, guitar, piano — or
isolate a single instrument from a 45-instrument catalog, for remixing,
karaoke, or sampling. AudioStems is AudioPod's stem separation engine.

## When to use

Invoke when the user wants to:

- Remove vocals from a song (karaoke / instrumental track)
- Isolate a specific instrument (acapella, drum loop, bass-only)
- Remix or sample a track legally without a multitrack stem pack
- Build a karaoke file with an instrumental + lyric overlay

## API

`POST https://api.audiopod.ai/api/v1/stem-extraction/api/extract`

Headers:

- `X-API-Key: ap_your_api_key` (or `Authorization: Bearer ap_your_api_key`)
- `Content-Type: multipart/form-data`

Body (form-data):

- `file`: audio file (MP3, WAV, FLAC, OGG) — or `url` to a public audio file
- `mode`: `single` · `two` (vocals + instrumental) · `four` (default) · `six` ·
  `producer` · `studio` · `mastering`
- `stem`: only for `mode=single` — one of `vocals`, `drums`, `bass`, `guitar`,
  `piano`, `other`

The `producer`, `studio`, and `mastering` modes decompose the drum kit and
split the bass, yielding **up to** 8, 12, and 17 stems respectively — the exact
count depends on what the track actually contains (a song with no cymbals
yields no cymbal stem). Plan those as "up to N", never a fixed number.

**Plan gating:** `producer` needs Creator or above; `studio` and `mastering`
need Pro or above. `single`, `two`, `four`, and `six` work on every plan
including the free tier.

### Isolating one instrument from the full catalog

`mode=single` on the endpoint above accepts the six core stems. To reach the
full 45-instrument catalog (saxophone, violin, lead vocal, electric guitar, …),
use:

`POST https://api.audiopod.ai/api/v1/stem-extraction/extract/advanced`

- `single_stem`: a catalog id — returns that instrument plus an everything-else
  track
- `exclude_stems`: a JSON array with one id — returns the track without it

List the catalog with `GET /api/v1/stem-extraction/catalog`. Each entry carries
an `id`, a `label`, the `public_tier` it requires, and an `allowed` boolean for
the calling key — check `allowed` before dispatching rather than handling a
rejection. Catalog isolation beyond the seven core stems requires Creator or
above.

## Response

```json
{ "job_id": 12345, "status": "PENDING" }
```

`job_id` is an integer, unique within the stem-extraction tool.

Poll `GET /api/v1/stem-extraction/status/{job_id}` for the per-stem
download URLs. (Job IDs are per-tool — there is no generic
`/api/v1/jobs/{job_id}` endpoint.)

## Notes

- Input length caps by plan: Free/Basic 30 minutes, Creator 2 hours, Pro 5
  hours, Studio 10 hours
- Upload size caps by plan: Free/Basic 250 MB, Creator 500 MB, Pro and Studio 1 GB
- Stems are royalty-free for personal and commercial use on paid plans
