POST/api/stem-splitter

Splits an audio or video file into 4 raw stems — vocals, drums, bass, and other — with no derived instrumental mix. Requires an API key — create one from your dashboard.

Request

Content-Type: application/json · Authorization: Bearer <api-key>

FieldTypeDescription
fileUrlstringrequiredPublicly accessible URL of the audio or video file to split — or a YouTube video URL to download and split directly.
outputFormatstringoptionalAudio format for the returned stems — mp3 wav flac. Defaults to mp3.

Split a song into stems (default mp3 output)

curl -X POST https://karadeo.com/api/stem-splitter \
  -H "Authorization: Bearer kd_..." \
  -H "Content-Type: application/json" \
  -d '{ "fileUrl": "https://example.com/song.mp3" }'

Split a song → lossless WAV stems

curl -X POST https://karadeo.com/api/stem-splitter \
  -H "Authorization: Bearer kd_..." \
  -H "Content-Type: application/json" \
  -d '{ "fileUrl": "https://example.com/song.mp3", "outputFormat": "wav" }'

Response

200Success — JSON with a URL for each separated stem
{
  "vocalUrl": "https://.../vocals.mp3",
  "drumsUrl": "https://.../drums.mp3",
  "bassUrl": "https://.../bass.mp3",
  "otherUrl": "https://.../other.mp3"
}

Stems are exported in the requested outputFormat. If the primary separation model falls back to a 2-stem engine, drumsUrl, bassUrl, and otherUrl will be null, and the fallback vocal is always returned as MP3 regardless of outputFormat.

Errors

All error responses return application/json with an error string field.

StatusConditionBody
401Missing or invalid API key{ "error": "Authentication required" }
403Usage limit exceeded{ "error": "Usage limit exceeded", "usage": {...} }
402File duration exceeds remaining credits{ "error": "...", "usage": { tier, usedMinutes, limitMinutes, remainingMinutes, mediaDurationMinutes } }
400Missing fileUrl, or can't determine duration{ "error": "..." }
500Separation error or unexpected failure{ "error": "..." }

Credits

Each request consumes credits from your monthly quota. Cost is calculated by rounding the file duration up to the nearest minute (e.g. 61 s = 2 min).

TierMonthly limitReset
free10 min1st of each calendar month (UTC)
subscribed (monthly)500 minBilling cycle start date
subscribed (annual)6,000 minBilling cycle start date

Test