StemSplit API Launch: Build Audio Apps with AI Stem Separation
We've shipped something big: the StemSplit API is now publicly available. If you've ever wanted to build a karaoke app, automate stem extraction for your DJ sets, or add vocal removal to your music production pipeline — now you can.
TL;DR: The StemSplit API lets you programmatically separate vocals, drums, bass, and more from any audio file. Simple REST endpoints, webhook notifications, YouTube support, and the same pay-per-use pricing you already know. Get your API key and start building.
Why We Built This
People kept asking us for an API. DJs wanted to automate stem extraction for their music libraries. App developers wanted to build karaoke features. Music educators needed batch processing for teaching materials.
The web interface works great for one-off jobs, but automation needs an API. So we built one.
What You Can Do
Separate Stems from Any Audio
Upload any MP3, WAV, FLAC, or M4A file and extract:
| Output Type | What You Get |
|---|---|
VOCALS | Just the vocals (perfect for acapella extraction) |
INSTRUMENTAL | Everything except vocals (great for karaoke) |
BOTH | Vocals + instrumental as separate files |
FOUR_STEMS | Vocals, drums, bass, other |
SIX_STEMS | Vocals, drums, bass, guitar, piano, other |
Same AI quality as our vocal remover and stem splitter — just automated.
Process YouTube Videos Directly
No need to download first. Pass a YouTube URL and get separated stems back:
curl -X POST https://stemsplit.io/api/v1/youtube-jobs \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{"youtubeUrl": "https://youtube.com/watch?v=dQw4w9WgXcQ"}'
We handle the download, extraction, and processing. You get clean stems.
Get Notified via Webhooks
Don't want to poll for results? Register a webhook and we'll POST to your server when jobs complete:
{
"event": "job.completed",
"timestamp": "2026-01-05T12:30:00Z",
"data": {
"jobId": "clxxx123...",
"status": "COMPLETED",
"outputs": {
"vocals": { "url": "https://...", "expiresAt": "..." },
"instrumental": { "url": "https://...", "expiresAt": "..." }
}
}
}
Webhooks include HMAC-SHA256 signatures for security.
Ready to start building? Get your API key — new users get 10 free minutes to test.
How It Works
The API follows a simple flow:
Step 1: Upload your audio
Either upload directly via presigned URL, or pass a sourceUrl for files already hosted online.
Step 2: Create a job
curl -X POST https://stemsplit.io/api/v1/jobs \
-H "Authorization: Bearer sk_live_xxx" \
-H "Content-Type: application/json" \
-d '{
"sourceUrl": "https://example.com/song.mp3",
"outputType": "BOTH",
"quality": "BEST"
}'
Step 3: Get results
Poll the job status or receive a webhook. Once complete, download your stems from the provided URLs.
Processing typically takes 1-3 minutes depending on audio length and quality setting.
Integration Guides
We've written guides for the most common use cases:
| Platform | What You Can Build |
|---|---|
| n8n | Automated workflows — process files from cloud storage, send results to Slack |
| Zapier | No-code automation — connect to 5000+ apps |
| Make | Visual scenario builder for complex workflows |
| Discord Bot | Build a stem separation bot for your server |
| White Label | Embed stem separation in your own product |
More guides coming based on what you build.
Pricing: Same Credits, No Extra Cost
The API uses the same credit system as the web app:
- No API-specific pricing — same cost per minute of audio
- No subscription required — buy credits when you need them
- Credits never expire — use them whenever
- New users get 10 free minutes to test the API
Check pricing for current rates.
Technical Details
Authentication
All requests use Bearer token authentication:
Authorization: Bearer sk_live_xxxxxxxxxxxxxxxxxxxxx
Generate API keys in Settings → API Keys. You can create up to 5 keys per account.
Rate Limits
| Limit | Value |
|---|---|
| Requests per minute | 60 |
| Maximum file size | 50 MB |
| Maximum audio duration | 60 minutes |
| API keys per account | 5 |
| Webhooks per account | 5 |
Supported Formats
Input: MP3, WAV, FLAC, M4A, OGG, WebM
Output: MP3, WAV, FLAC (you choose)
Quality Settings
| Setting | Processing Time | Best For |
|---|---|---|
FAST | ~20s per minute | Quick previews |
BALANCED | ~40s per minute | Most use cases |
BEST | ~60s per minute | Maximum quality, required for 6-stem |
Documentation
We've published complete documentation:
- Getting Started — Quick start guide with code examples in cURL, Python, and JavaScript
- API Reference — Full endpoint documentation with request/response examples
- Integration Guides — Step-by-step tutorials for specific platforms
The docs include working code you can copy-paste.
Example: Build a Karaoke App
Here's a complete Python example that turns any song into karaoke:
import requests
import time
API_KEY = "sk_live_xxx"
HEADERS = {"Authorization": f"Bearer {API_KEY}"}
# Create job from URL
response = requests.post(
"https://stemsplit.io/api/v1/jobs",
headers=HEADERS,
json={
"sourceUrl": "https://example.com/song.mp3",
"outputType": "INSTRUMENTAL", # Karaoke = no vocals
"quality": "BEST",
"outputFormat": "MP3"
}
)
job = response.json()
print(f"Created job: {job['id']}")
# Wait for completion
while True:
status = requests.get(
f"https://stemsplit.io/api/v1/jobs/{job['id']}",
headers=HEADERS
).json()
if status["status"] == "COMPLETED":
print(f"Done! Download: {status['outputs']['instrumental']['url']}")
break
elif status["status"] == "FAILED":
print(f"Error: {status['errorMessage']}")
break
print(f"Progress: {status['progress']}%")
time.sleep(5)
That's it — about 30 lines to build a karaoke maker.
What People Are Building
Since the private beta, developers have built:
- Karaoke apps that let users sing any song
- DJ tools that batch-process entire music libraries
- Practice platforms for musicians learning instruments
- Content creation tools that extract audio for videos
- Discord bots that process songs on demand
We're excited to see what you create.
FAQ
How is this different from the web app?
Same AI, same quality, same credits — just programmatic access. The API is for automation and integration, while the web app is for one-off processing.
Do I need a subscription?
No. Same pay-per-use model as the web app. Buy credits when you need them, they never expire.
Can I use this for commercial products?
Yes. Build whatever you want. You're paying for processing, and the API is yours to use.
Is there a free tier?
New accounts get 10 free minutes to test. After that, you buy credits as needed.
How do I handle errors?
All errors return consistent JSON with an error code and message. Check the API reference for the full list.
Can I process YouTube videos?
Yes — the /youtube-jobs endpoint handles YouTube URLs directly. We download the audio and process it. Maximum duration is 60 minutes.
Get Started
- Create an account if you don't have one
- Generate an API key in your dashboard
- Read the docs and start building
New accounts get 10 free minutes. No credit card required to try.
Start Building with the StemSplit API
Integrate AI-powered stem separation into your apps today.
- ✅ Simple REST API with webhooks
- ✅ YouTube URL support
- ✅ Same credits as web app — no extra cost
- ✅ 10 free minutes to test