Your API keys
Sign in on this page to see your API keys and create new ones.
Quick start
- Create an API key above and keep it somewhere safe. It acts as your account.
- Split a song from a public URL:
curl -X POST https://stemconsole.ai/api/v1/splits \
-H "Authorization: Bearer $STEMCONSOLE_KEY" \
-H "Content-Type: application/json" \
-d '{"audio_url": "https://example.com/song.mp3", "model": "fast"}'
- Check the split until its
statusisdone:
curl https://stemconsole.ai/api/v1/splits/2fdaa178ef454fe4 \
-H "Authorization: Bearer $STEMCONSOLE_KEY"
{
"id": "2fdaa178ef454fe4",
"status": "done",
"model": "fast",
"name": "song",
"stems": [
{"name": "vocals", "filename": "vocals.wav",
"mp3_url": "https://…/stem-mp3/2fdaa178ef454fe4/vocals.wav?k=…",
"preview_url": "https://…/preview/vocals.ogg"},
…
],
"open_url": "https://stemconsole.ai/?session=2fdaa178ef454fe4"
}
open_url opens the song in the practice room, where you can solo, mute and loop each stem. Anyone you send it to can listen in their browser.
Separation models
model | Stems | Plan |
|---|---|---|
vocals | Vocal Remover: vocals, instrumental | Free |
fast | Basic Split: vocals, drums, bass, other | Free |
full | Full Separation: vocals, drums, bass, guitar, piano, other | Pro, or one credit per song |
Split a batch of songs
Send up to 10 songs in one request. They run in order, two at a time, and each one draws on your allowance like a single split. A song that hits a limit fails on its own and the rest carry on.
curl -X POST https://stemconsole.ai/api/v1/splits/batch \
-H "Authorization: Bearer $STEMCONSOLE_KEY" \
-H "Content-Type: application/json" \
-d '{"model": "vocals", "items": [
{"audio_url": "https://example.com/one.mp3"},
{"audio_url": "https://www.dropbox.com/s/abc/two.wav?dl=0", "name": "Live take"},
{"audio_url": "https://example.com/three.flac", "model": "fast"}
]}'
Then follow GET /api/v1/batches/{id}: each song moves from queued to processing to done (or failed, with the reason) and carries its split_id. DELETE /api/v1/batches/{id} cancels the songs that have not started. Dropbox and Google Drive share links work as they are.
Split a file on your computer
Files up to 100 MB go straight into POST /splits as a form upload:
curl -X POST https://stemconsole.ai/api/v1/splits \
-H "Authorization: Bearer $STEMCONSOLE_KEY" \
-F file=@"My Song.wav" -F model=full
For files up to 200 MB, upload in parts: POST /uploads with {"filename", "size", "model"} returns one URL per 10 MB part. PUT each part to its URL, keep each response's ETag header, then send them to POST /uploads/complete as {"upload_token", "parts": [{"n": 1, "etag": "…"}], "filename", "model"}. MP3, WAV, FLAC, OGG, M4A, AAC and WMA all work.
All endpoints
Base URL https://stemconsole.ai/api/v1. Every call takes Authorization: Bearer <key>.
| Call | What it does |
|---|---|
GET /me | Your plan, splits left this month, credits and API limits |
POST /splits | Split one song from a URL or an uploaded file |
POST /splits/batch | Split up to 10 songs from URLs |
GET /batches/{id}, DELETE /batches/{id} | Follow or cancel a batch |
POST /uploads, POST /uploads/complete | Upload a large file in parts, then split it |
GET /splits | Your songs (My songs), newest first |
GET /splits/{id} | Status, stems and download links |
PATCH /splits/{id} | Rename a song: {"name": "…"} |
DELETE /splits/{id} | Delete a song and its stems (its share link stops working) |
GET /setlists, POST /setlists | List setlists, or make one: {"title", "split_ids"} (Pro) |
PUT /setlists/{id}, DELETE /setlists/{id} | Change or delete a setlist |
The full schema is the OpenAPI document. Send an Idempotency-Key header with POST /splits and a retry returns the split you already started instead of starting another.
Plans and limits
- Your allowance, not a separate one. API and MCP splits count toward the same monthly splits as the website, and credits cover a split past the limit, exactly as they do there.
- Downloads follow your plan. Every plan gets MP3 stems and previews. Pro adds WAV stems and a ZIP of all stems.
- Pace. Each account can submit 10 songs an hour, with 2 splitting at once and up to 10 in a batch.
GET /meshows where you are. - Errors are JSON:
{"error": "limit_reached", "message": "…"}. A402carries anupgrade_url, and a429carries aRetry-Afterheader.
Plans and credits are on the pricing page.
Connect Claude, ChatGPT and other AI apps
Apps that sign in with OAuth connect to StemConsole without an API key. Add a custom connector (in Claude: Settings, Connectors, Add custom connector; in ChatGPT: a connector in developer mode) with this URL:
https://stemconsole.ai/mcp/account
The app sends you to StemConsole to sign in and approve it, then comes back connected. Ask it to split songs, fetch stems or build a setlist, and it works on your own account, allowance and credits. Connected apps appear in Your API keys, where you can disconnect them at any time. The app never sees your password or your API keys, and it cannot buy plans or change billing.
MCP server for AI agents
StemConsole runs a remote MCP server at https://stemconsole.ai/mcp (Streamable HTTP). With your API key, an agent can split songs, check results, hand you download links and manage your library and setlists. In Claude Code:
claude mcp add --transport http stemconsole https://stemconsole.ai/mcp \
--header "Authorization: Bearer YOUR_API_KEY"
In Cursor, VS Code and other MCP clients:
{
"mcpServers": {
"stemconsole": {
"url": "https://stemconsole.ai/mcp",
"headers": { "Authorization": "Bearer YOUR_API_KEY" }
}
}
}
Tools: split_songs (1 to 10 songs), get_split, get_batch, list_my_songs, rename_song, delete_song, list_setlists, create_setlist and get_my_account, plus get_capabilities and get_task_url, which need no key. Try asking your agent to split five song links into drums and bass, then make a setlist for Friday's rehearsal.
A2A agent
Other agents can hand StemConsole a job over the Agent2Agent protocol (1.0, JSON-RPC) at https://stemconsole.ai/a2a. Send SendMessage with one to ten song links (URL parts, links in text, or a data part {"audio_urls": [...], "model": "fast"}) and follow the task with GetTask. Each stem comes back as an artifact with its MP3 link (and WAV on Pro). Authenticate with OAuth or an API key as a bearer token. The agent card has the details.
For agents and crawlers
- OpenAPI document and the API catalog (RFC 9727)
- auth.md: how an agent gets and uses credentials, the OAuth metadata and the protected resource metadata
- A2A agent card
- MCP server card, AI catalog and agent skills
- llms.txt. Every page on this site also answers
Accept: text/markdownwith Markdown.
Keeping keys safe
A key can do anything your account can do through the API, so keep it out of public code and web pages. StemConsole stores only a hash of each key and shows the key once, when you make it. Revoke a key above and it stops working within a minute. Keys cannot create or revoke other keys; that takes your own sign-in on this page. Questions: [email protected].