Skip to main content
POST
Stem preset (free in November)
No Cost November Nov 1 – Nov 30 (UTC)

Split everything, pay nothing

Throughout November, every extraction you send with stem_preset is free on paid plans. Pick 2_stems or 6_stems and pull vocals, instrumental, drums, bass, piano, and guitar out of any track at no cost.

$0per preset request
20free stems/ hour
100free stems / day
6stems per request
Read the integration guide →Get your API Key

Applies to requests that use stem_preset from paid plans. Requests that list stems, Free plan requests, and requests past the hourly or daily limit are charged at the usual stem splitter rates.

Extract vocals, instrumentals, or other stems from an audio file or URL, with optional preprocessing.

Endpoint

Use this endpoint to extract stems like vocals, drums, guitar, or more from an audio source.

Request Parameters

Max input audio length: 8 minutes. See Audio Length Limits.
Note: Either audio_file or audio_url must be provided, and either stems or stem_preset, not both.
content-type: multipart/form-data

Stem presets

Use stem_preset to request a common split without listing stems. The preset replaces stems, so leave stems out or send []. You can combine a preset with preprocessing_options and eco_mode. The webhook returns one URL per stem, exactly as a stems request does.
Free in November 2026. From Nov 1 00:00 to Nov 30 23:59:59 UTC, preset requests from paid plans are free, up to 20 stems per clock hour and 100 stems per day (UTC). The response tells you whether a request was free and how many free stems you have left. See the free stem presets guide to get the most out of it.

Available Stems

The following audio stems can be extracted. They are grouped into categories based on instrument type or function:

Vocals

  • vocals — All vocal content (combined)
  • male_vocal — Male vocals only
  • female_vocal — Female vocals only
  • lead_vocal — Lead singer’s voice
  • back_vocal — Backing vocals

Guitar

  • guitar — All guitar sounds
  • acoustic_guitar — Acoustic guitar
  • electric_guitar — Electric guitar
  • rhythm_guitar — Rhythm guitar parts
  • solo_guitar — Solo guitar parts

Drums

  • drums — All drum elements
  • kick_drum — Kick or bass drum
  • snare_drum — Snare drum
  • toms — Tom drums
  • hi_hat — Hi-hat cymbals
  • ride — Ride cymbal
  • crash — Crash cymbal

Keys and Piano

  • piano — Piano only
  • keys — Keyboard instruments (includes synths, organs, etc.)

Strings and Winds

  • strings — String instruments (e.g., violin, cello)
  • winds — Wind instruments (e.g., saxophone, flute)

Other Instruments

  • bass — Bassline instruments
  • instrumental — All non-vocal content (used to get instrumental version)

Full Band (Composite)

  • drums, bass, piano, guitar — Common full-band instrumentation
Note: Without a stem_preset, stems must contain at least one stem. An omitted or empty stems list returns 422.

Preprocessing Options

These preprocessing steps can be applied to the input audio before stem extraction:
  • Denoise — Reduces ambient or background noise
  • Deecho — Removes echo and early reflections
  • Dereverb — Reduces late reverberation from recordings

Sample Output

Sample Output : Vocals Download Audio Sample Output : Instrumental Download Audio

Sample Request

cURL with a stem preset

Free on paid plans during November 2026. Upload the track as audio_file, or send a YouTube link as audio_url.

cURL with a stems list

Python


Sample Response

Success (200 OK)

Success, free under the November promotion (200 OK)


Webhook Response


Common Errors

  • 402 Payment Required (INSUFFICIENT_CREDITS): Your credit balance is insufficient for a charged request.
  • 422 Unprocessable Entity (UNPROCESSABLE_CONTENT): Neither audio_url nor audio_file is provided, stems is empty without a stem_preset, stem_preset is not 2_stems or 6_stems, or both stems and stem_preset are sent.
  • 500 Internal Server Error (INTERNAL_SERVER_ERROR): A server-side error occurred.
See Handling Errors for the error response format and all error codes.

Payload and Request Formation

Authorizations

Authorization
string
header
required

Body

multipart/form-data
audio_url
string
required

Input audio URL (supported format: YouTube URL).

audio_file
file

Audio file to upload and process.

stem_preset
enum<string>

Quick preset instead of stems. 2_stems: vocals, instrumental. 6_stems: vocals, instrumental, piano, bass, drums, guitar. Do not send with a non-empty stems list. Free on paid plans during November 2026 (UTC), up to 20 stems per clock hour and 100 stems per day; each preset uses one slot per stem (2 or 6).

Available options:
2_stems,
6_stems
Example:

"6_stems"

stems
string
default:[]

JSON string list of required output stems. Required unless stem_preset is sent. Available options: vocals, instrumental, male_vocal, female_vocal, lead_vocal, back_vocal, bass, drums, guitar, piano, keys, strings, winds, rhythm_guitar, solo_guitar, acoustic_guitar, electric_guitar, kick_drum, snare_drum, toms, hi_hat, ride, crash.

Example:

"[\"vocals\", \"drums\"]"

preprocessing_options
string
default:[]

JSON string list of preprocessing steps. Available options: Denoise, Deecho, Dereverb.

Example:

"[\"Denoise\", \"Dereverb\"]"

eco_mode
boolean
default:false

Enable eco mode for faster parallel extraction.

webhook_url
string

Callback URL for async processing.

Example:

"http://webhook.musicgpt.com"

Response

Successfully initiated stem extraction

success
boolean
task_id
string
conversion_id
string
eta
integer
credit_estimate
number
message
string
status
string
is_free_promo
boolean

True when this extraction is free under an active promotion. credit_estimate is then 0.0 and no credits are charged.

free_generations_remaining_hour
integer | null

Free stems left in the current UTC clock hour, or null when no promotion applies.

free_generations_remaining_day
integer | null

Free stems left today (UTC), or null when no promotion applies.

free_quota_resets_at
string<date-time> | null

UTC time when more free stems become available, or null when no promotion applies.