StemConsole / Developers

StemConsole API and MCP server

Split songs into stems from your own scripts, apps and AI agents. The API, the MCP server and the A2A agent work on your StemConsole account: the same plan, allowance and stems as the website, with batch splitting and direct download links.

Using Claude or ChatGPT? Connect StemConsole with one link and a sign-in. No key needed.

Your API keys

Sign in on this page to see your API keys and create new ones.

Quick start

  1. Create an API key above and keep it somewhere safe. It acts as your account.
  2. 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"}'
  1. Check the split until its status is done:
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

modelStemsPlan
vocalsVocal Remover: vocals, instrumentalFree
fastBasic Split: vocals, drums, bass, otherFree
fullFull Separation: vocals, drums, bass, guitar, piano, otherPro, 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>.

CallWhat it does
GET /meYour plan, splits left this month, credits and API limits
POST /splitsSplit one song from a URL or an uploaded file
POST /splits/batchSplit up to 10 songs from URLs
GET /batches/{id}, DELETE /batches/{id}Follow or cancel a batch
POST /uploads, POST /uploads/completeUpload a large file in parts, then split it
GET /splitsYour 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 /setlistsList 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

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

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].