/create-stemsSplit a song into vocals, drums, bass, and other stems
Send a song and choose the stems you need. Use a preset for vocals, drums, bass, guitar, and other common parts, or describe a custom sound. Your app or agent gets separate WAV files.
How this endpoint works
Use this API to build a vocal remover, remix tool, backing-track maker, practice app, sampling workflow, or sound-removal feature. Choose a fixed 2-, 4-, 6-, or 53-stem preset for reusable output names. Use SAM Audio when the user needs to describe a less common instrument, noise, or sound.
- 1
Choose the stems
Select a preset or describe the instrument, voice, noise, or sound you want to isolate.
- 2
Wait for stem separation
Send the audio ID, save creation_id, and poll the stem-splitting job until it finishes.
- 3
Download separate WAV files
Download each stem separately or package the selected stems into one ZIP archive.
Common use cases
Choose this operation when it matches the source and result your pipeline needs.
Build a vocal remover
Return vocal and instrumental WAV files for karaoke, remixing, practice, or sampling.
Create remix and production stems
Give users separate drums, bass, vocals, guitar, and instrument tracks inside your software.
Remove an unwanted sound
Isolate crowd noise, reverb, drums, effects, or another described sound from a recording.
Processing used by 80,000+ music makers
Results people rely on
“It can bring back clarity without making everything sound too artificial or overprocessed. Stem separation is also surprisingly clean.”
R.
Audio restoration and stem separation
“Does amazing job in restoring Audio from bad quality MP3s and badly extracted audio from CDs. Always my go to for audio restoration.”
N.
MP3 and CD audio restoration
“Amazing tool for audio. Clean, simple, and effective. I would spend hours in RX to get the same results. Give it a try. I can save you hours of production time.”
Dan Campbell ~Riffster
“Easy to use and high quality results.”
Bjark
Hear stem separation results
These shared user results demonstrate stem outputs available through the same processing system.
Choose the stems you want
2 tracks
preset="2_tracks"Separate the singing from the instrumental. Get a cappella vocals or a karaoke version for your remixes.
Parameters
model_nameModel variantstring | nullSelects the model variant used by a compatible stem preset. For 2_tracks, use deux or leap. For denoise, use denoise or denoise_debleed. For decrowd, use decrowd or decrowd_mdx. For 5_1_upmix, use 5_1_upmix, 5_0_upmix_202609, or 5_0_upmix_202610. Presets without model variants ignore this field.
Allowed values
deuxDeux modelRecommendedleapLeap Xe
4 stems
preset="4_tracks"Split the song into four tracks: bass, drums, vocals, and everything else.
6 stems
preset="6_tracks"Split the song into six tracks: bass, drums, vocals, guitar, piano, and everything else.
53 stems
preset="mvsep_mega_53"This model distinguishes up to 53 instrument tracks. Select the instruments present in your song. For the best quality, choose a specialized model when the instrument is available in the list.
Parameters
selected_stemsInstrument stems to keepArray<string> | nullNames the instrument outputs to keep from the 53-stem model. Supported when preset is mvsep_mega_53; other presets ignore this field. The residual 'other' stem is always generated from the original audio minus the selected outputs.
Allowed values
bassBassbass_double-bassDouble BassdrumsDrumsdrums_congasCongasdrums_hhHi-Hatsdrums_kickKickdrums_percussionPercussiondrums_snareSnaredrums_tambourineTambourinedrums_timpaniTimpanidrums_tomsTomsdrums_triangleTriangleguitarGuitarguitar_acoustic-guitarAcoustic Guitarguitar_dobroDobroguitar_electric-guitarElectric Guitarguitar_banjoBanjoguitar_mandolinMandolinguitar_sitarSitarguitar_ukuleleUkuleleother_accordionAccordionother_bellsBellsother_glockenspielGlockenspielother_marimbaMarimbaother_wind-chimesWind ChimespianoPianopiano_digital-pianoDigital Pianopiano_harpsichordHarpsichordpiano_keysKeyspiano_organOrganpiano_synthSynthstringsStringsstrings_bowed_stringsBowed Stringsstrings_celloCellostrings_harpHarpstrings_violaViolastrings_violinViolinvocalsVocalsvocals_back-vocalBacking Vocalvocals_lead-vocalLead Vocalwinds_bassoonBassoonwinds_brassBrasswinds_clarinetClarinetwinds_fluteFlutewinds_french-hornFrench Hornwinds_harmonicaHarmonicawinds_oboeOboewinds_saxophoneSaxophonewinds_tromboneTrombonewinds_trumpetTrumpetwinds_tubaTubawinds_windWindwinds_woodwindWoodwindotherOther
Custom Prompt
preset="custom"Describe the instrument or sound you want to isolate in the prompt.
Parameters
promptSound to isolatestring | nullDescribe the instrument, voice, noise, or sound to isolate.
Example
"lead vocal"stereo_modeStereo handlingstringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
monomid_sidesDefaultleft_rightsides_onlymid_only
spansPrompt hint rangesArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]Speech Only
preset="custom_speech"Keep the speech and remove background noise. For cleaning up recordings where the voice is the only sound you care about.
Parameters
promptSound promptstring | nullDescribes the sound SAM Audio should isolate, for example 'lead vocal' or 'snare and kick'. Supported when preset is custom; other stem presets ignore this field. Long prompts are trimmed before validation.
Example
"lead vocal"stereo_modeStereo handlingstringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
monomid_sidesDefaultleft_rightsides_onlymid_only
spansPrompt hint rangesArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]Noise Reduction
preset="denoise"Keep your music or voice and remove background noise. Choose the variant based on what you want to keep.
Parameters
promptSound to keepstring | nullDescribe the sound to keep in the cleaned track.
Example
"lead vocal"stereo_modeStereo modestringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
mid_sidesStereo (Mid/Sides)DefaultRecommendedProcess Mid ((L + R) / 2) and Sides ((L - R) / 2) independently, then recombine them as stereo.sides_onlySides onlyProcess the sides and keep the original center.mid_onlyMid onlyProcess the center and keep the original sides.left_rightStereo (L/R)Process the Left and Right channels independently.monoMonoAverage Left and Right into one mono channel, then process it once.
spansSound hintsArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]model_nameModel variantstring | nullSelects the model variant used by a compatible stem preset. For 2_tracks, use deux or leap. For denoise, use denoise or denoise_debleed. For decrowd, use decrowd or decrowd_mdx. For 5_1_upmix, use 5_1_upmix, 5_0_upmix_202609, or 5_0_upmix_202610. Presets without model variants ignore this field.
Allowed values
denoiseDenoiseRecommendeddenoise_debleedDenoise and Debleedcustom_speechSpeech onlycustom_music_singingMusic with singingcustom_musicMusic Only (no vocals)custom_singingSinging only (no instruments)
Crowd Noise Reduction
preset="decrowd"Quickly remove audience noise from your live recordings.
Parameters
promptSound to keepstring | nullDescribe the sound to keep in the cleaned track.
Example
"lead vocal"stereo_modeStereo modestringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
mid_sidesStereo (Mid/Sides)DefaultRecommendedProcess Mid ((L + R) / 2) and Sides ((L - R) / 2) independently, then recombine them as stereo.sides_onlySides onlyProcess the sides and keep the original center.mid_onlyMid onlyProcess the center and keep the original sides.left_rightStereo (L/R)Process the Left and Right channels independently.monoMonoAverage Left and Right into one mono channel, then process it once.
spansSound hintsArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]model_nameModel variantstring | nullSelects the model variant used by a compatible stem preset. For 2_tracks, use deux or leap. For denoise, use denoise or denoise_debleed. For decrowd, use decrowd or decrowd_mdx. For 5_1_upmix, use 5_1_upmix, 5_0_upmix_202609, or 5_0_upmix_202610. Presets without model variants ignore this field.
Allowed values
decrowdRoformerRecommendeddecrowd_mdxMDX Netcustom_music_singingSAM Audio
Enhanced Crowd Noise Reduction
preset="custom_music_singing"SAM Audio Large keeps music and singing, and removes conversations, crowd noise, and other audience sounds.
Parameters
promptSound promptstring | nullDescribes the sound SAM Audio should isolate, for example 'lead vocal' or 'snare and kick'. Supported when preset is custom; other stem presets ignore this field. Long prompts are trimmed before validation.
Example
"lead vocal"stereo_modeStereo handlingstringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
monomid_sidesDefaultleft_rightsides_onlymid_only
spansPrompt hint rangesArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]Music Only (No Vocals)
preset="custom_music"Keep the instruments and remove singing, speech, and background noise.
Parameters
promptSound promptstring | nullDescribes the sound SAM Audio should isolate, for example 'lead vocal' or 'snare and kick'. Supported when preset is custom; other stem presets ignore this field. Long prompts are trimmed before validation.
Example
"lead vocal"stereo_modeStereo handlingstringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
monomid_sidesDefaultleft_rightsides_onlymid_only
spansPrompt hint rangesArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]Singing Only
preset="custom_singing"Keep the singing and remove instruments and ambient noise. Get isolated vocals to remix or process separately.
Parameters
promptSound promptstring | nullDescribes the sound SAM Audio should isolate, for example 'lead vocal' or 'snare and kick'. Supported when preset is custom; other stem presets ignore this field. Long prompts are trimmed before validation.
Example
"lead vocal"stereo_modeStereo handlingstringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
monomid_sidesDefaultleft_rightsides_onlymid_only
spansPrompt hint rangesArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]Lead / Backing Vocals
preset="lead_back"Separate the lead vocal from the backing vocals. Rework the lead singer without affecting the background voices.
Duet Singers
preset="duet"Separate the two singers into two tracks. Rework each voice separately.
Main Singer
preset="custom_main_solo_singer"Keep only the lead singer's voice. Backing vocals and other sounds are isolated separately.
Parameters
promptSound promptstring | nullDescribes the sound SAM Audio should isolate, for example 'lead vocal' or 'snare and kick'. Supported when preset is custom; other stem presets ignore this field. Long prompts are trimmed before validation.
Example
"lead vocal"stereo_modeStereo handlingstringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
monomid_sidesDefaultleft_rightsides_onlymid_only
spansPrompt hint rangesArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]Isolate Drums
preset="2_tracks_drums"A specialized model for separating drums from the rest of the song. You get two tracks: the drums and a version without drums. The model preserves detail in both.
5 drums tracks
preset="5_drums_tracks"Split the drums into five tracks: kick, snare, toms, hi-hat, and cymbals.
Isolate Any Percussion
preset="custom_remove_drums"Remove all percussion, including shakers, cymbals, and cinematic percussion.
Parameters
promptSound promptstring | nullDescribes the sound SAM Audio should isolate, for example 'lead vocal' or 'snare and kick'. Supported when preset is custom; other stem presets ignore this field. Long prompts are trimmed before validation.
Example
"lead vocal"stereo_modeStereo handlingstringControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Allowed values
monomid_sidesDefaultleft_rightsides_onlymid_only
spansPrompt hint rangesArray<{ start: number; end: number }> | nullProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example
[{"end":42,"start":12.5}]Remove Reverb
preset="dereverb"Remove reverberation, delay, and echo from a track.
Keep Only Center Mono
preset="phantom_center"This model keeps the mono center of a track and removes the content spread across the sides. Handy for isolating a bass, kick drum, or podcast voice. You can also use it to remove phaser, chorus, or flanger from an instrument.
Multichannel upmix
preset="5_1_upmix"This model distributes the sound into a front stereo pair, a side stereo pair, and a center channel. The 5.1 version also adds a channel for sub-bass.
Parameters
model_nameModel variantstring | nullSelects the model variant used by a compatible stem preset. For 2_tracks, use deux or leap. For denoise, use denoise or denoise_debleed. For decrowd, use decrowd or decrowd_mdx. For 5_1_upmix, use 5_1_upmix, 5_0_upmix_202609, or 5_0_upmix_202610. Presets without model variants ignore this field.
Allowed values
5_1_upmix5.1 upmixRecommendedThe first upmix model, for film soundtracks.5_0_upmix_2026095.0 upmix JasperA newer upmix model for film soundtracks. Offers better quality than the first version.5_0_upmix_2026105.0 upmix GillianThis upmix model was trained only on music. Choose it for your songs.
Speech / Music / SFX
preset="speech_music_sfx"Split a TV show, film, or video soundtrack into three tracks: speech, music, and sound effects. Remove the music from a video or keep only the dialogue.
Guitar
preset="guitar"Isolate the guitar in one track. The rest of the song is kept in another.
Modern Bowed Strings
preset="modern_bowed_strings"Isolate the bowed strings in one track and keep the rest of the song separate.
Synth Lead
preset="synth_lead"Isolate the synth lead and keep the rest of the song in another track.
Code examples
Server-side example
import { writeFile } from "node:fs/promises";
const API_URL = "https://api.neuralanalog.com";
const API_KEY = process.env.NEURALANALOG_API_KEY;
async function waitForCompletion(objectType, objectId) {
while (true) {
const response = await fetch(`${API_URL}/status/${objectType}/${objectId}`, {
headers: { "X-API-Key": API_KEY },
});
if (!response.ok) {
throw new Error(`Status check failed with ${response.status}`);
}
const status = await response.json();
if (status.is_failed) {
throw new Error(status.error_message || `${objectType} processing failed`);
}
if (status.is_complete) {
return status;
}
await new Promise((resolve) => setTimeout(resolve, 5000));
}
}
const requestResponse = await fetch(`${API_URL}/create-stems`, {
method: "POST",
headers: {
"X-API-Key": API_KEY,
"Content-Type": "application/json",
},
body: JSON.stringify({
"audio_id": "6c62f8e7-02a3-48c0-a5b5-5de87ed9c31a",
"preset": "4_tracks",
"bit_depth": 24
}),
});
if (!requestResponse.ok) {
throw new Error(`Stem separation request failed with ${requestResponse.status}`);
}
const result = await requestResponse.json();
const jobId = result["creation_id"];
const status = await waitForCompletion("stem_split", jobId);
for (const artifact of result["audio_stems"]) {
const artifactId = artifact["stem_id"];
const response = await fetch(
`${API_URL}/download/stem/${artifactId}`,
{ headers: { "X-API-Key": API_KEY }, redirect: "follow" },
);
if (!response.ok) {
throw new Error(`Download failed with ${response.status}`);
}
await writeFile(`${artifactId}.wav`, Buffer.from(await response.arrayBuffer()));
}Parameters
Send the API key from a trusted server. Never expose it in client-side JavaScript.
JSON request body
presetSelects which stems or cleanup result the separation job returns. Some presets support an additional model_name variant; incompatible variants are rejected.
source_transcription_idTranscription rendered into temporary_mix_key; retained as source lineage.
source_effects_appliedWhether the rendered source includes FX; false preserves live FX when selecting the output.
audio_idSource audio asset to split. Provide either audio_id or stem_id.
Example: "6c62f8e7-02a3-48c0-a5b5-5de87ed9c31a"
stem_idExisting stem to split further. When provided with audio_id, stem_id takes priority.
Example: "abf8a992-1c4e-4935-93f0-197116e77e49"
model_nameSelects the model variant used by a compatible stem preset. For 2_tracks, use deux or leap. For denoise, use denoise or denoise_debleed. For decrowd, use decrowd or decrowd_mdx. For 5_1_upmix, use 5_1_upmix, 5_0_upmix_202609, or 5_0_upmix_202610. Presets without model variants ignore this field.
bit_depthOutput WAV bit depth for generated stems; 32 is float.
Default: 24
hq_streaming_formatSelects the compressed format generated for browser playback and streaming alongside the WAV stem output.
Default: "aac"
promptDescribes the sound SAM Audio should isolate, for example 'lead vocal' or 'snare and kick'. Supported when preset is custom; other stem presets ignore this field. Long prompts are trimmed before validation.
Example: "lead vocal"
stereo_modeControls how stereo material is processed. mono is fastest, sides_only/mid_only process one component while preserving the other, mid_sides preserves center/side detail, and left_right processes channels separately. Supported when preset is custom (default mid_sides) or speech_music_sfx (default left_right); other stem presets ignore this field.
Default: "mid_sides"
spansProvides optional start and end times where SAM Audio should focus on the prompted sound. Supported when preset is custom; other stem presets ignore this field. Omit it to split without time hints.
Example: [{"end":42,"start":12.5}]
selectionOptional source region to process. When provided, the backend trims the source to this region before running separation.
Example: {"end":42,"start":12.5}
upscaled_idRestored version to use as the stem separation source.
Example: "d66cf940-bf26-45bb-80f7-332f26b6859a"
mastered_idMastered version to use as the stem separation source.
Example: "f5db8e4b-2e74-4198-a8de-0c3a398620e9"
temporary_mix_keyShort-lived Current Main Mix or Current All Stems Mix R2 source key.
restoration_paramsQueues restoration for generated stems as part of the same workflow. The nested restoration preset determines which nested parameters are used. Ordinary stem splitting ignores this field.
Example: {"preset":"universal_enhancer","strength":0.8}
stem_processingQueues one operation for every generated, non-silent stem. Supports restoration, mastering, and audio-to-MIDI transcription. Omit it to return the separated stems without additional processing. restoration_params remains supported as a legacy restoration-only alias.
selected_stemsNames the instrument outputs to keep from the 53-stem model. Supported when preset is mvsep_mega_53; other presets ignore this field. The residual 'other' stem is always generated from the original audio minus the selected outputs.
Example: ["drums","vocals","bass","piano","strings","piano_synth","guitar","other"]
Successful response
statusStatus after the stem job is queued.
Example: "processing"
messageHuman-readable queueing result.
Example: "Stem separation queued"
audio_idSource audio asset ID.
Example: "6c62f8e7-02a3-48c0-a5b5-5de87ed9c31a"
user_idUser that owns the job.
Example: "2fe9c052-e34f-43b7-9ad5-5186d31cb7ec"
creation_idStem split job ID.
Example: "18d67d83-c9f6-4d7f-bb72-09e40c62671e"
audio_stemsNo description provided.
upscaled_audiosNo description provided.
mastered_audiosNo description provided.
transcriptionsNo description provided.
Errors
X-API-Key returns an authentication error. Validation errors use the declared 422 response below.detailNo description provided.