/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 workflow 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 60,000+ music makers
Results people rely on
“Neural Analog makes me feel like a monkey with an AK-47, in the best way possible”
AristA
Acapella extraction
“Love it! Makes everything crisp!”
The Grim Tower
“Sensacional”
Francisco
“Highend services!”
Tommi, Studionet
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"Vocals (acapella), Instrumental (karaoke version)
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. Presets without model variants ignore this field.
Allowed values
deuxDeux modelRecommendedSingle Deux vocal/instrumental separator.leapLeap XeRuns separate Leap Xe vocal and instrumental BS-Roformer models.
4 stems
preset="4_tracks"Bass, Drums, Vocals, Others
6 stems
preset="6_tracks"Bass, Drums, Vocals, Guitar, Piano, Others
53 stems (MVSEP Mega)
preset="mvsep_mega_53"Ultra-granular instrument model. Select the instruments present in your song. For higher quality results, use instrument-specialized models.
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"Name the instrument or sound to be isolated.
Parameters
promptSound to isolatestring | nullDescribe the instrument, voice, noise, or sound to isolate.
Example
"lead vocal"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 SAM Audio processes stereo material. 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; 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"Remove background noise and keep only speech and talking
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 SAM Audio processes stereo material. 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; 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}]Denoise
preset="denoise"Remove background noise from music or vocal tracks
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. Presets without model variants ignore this field.
Allowed values
denoiseDenoise modelRecommendedRemoves background noise.denoise_debleedDenoise and Debleed modelRemoves background noise and source bleed.
Fast Decrowd
preset="decrowd"Quickly remove crowd noise from live recordings
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. Presets without model variants ignore this field.
Allowed values
decrowdMelband RoformerRecommendedMost recent crowd-noise separator. Runs this only on Vocals stems to get more precise results.decrowd_mdxMDX NetOlder crowd-noise separator.
Heavy Decrowd
preset="custom_music_singing"Use SAM Audio Large to keep music and vocals while removing crowd, noise, talking, and 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 SAM Audio processes stereo material. 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; 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 SAM Audio processes stereo material. 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; 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 voice and remove instruments and ambience
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 SAM Audio processes stereo material. 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; 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"Lead vocals, backing vocals
Duet Singers
preset="duet"Singer 1, Singer 2
Main Singer
preset="custom_main_solo_singer"Keep the main vocals and isolate backing vocals and others
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 SAM Audio processes stereo material. 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; 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"No drums, Drums. Special model to separate drums from instrumental. Preserve high fullness in drums and instrumental.
5 drums tracks
preset="5_drums_tracks"Split drums into Kick, Snare, Toms, Hi-hats, Cymbals
Isolate Any Percussion
preset="custom_remove_drums"Remove cinematic percussions, shakers, cymbals...
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 SAM Audio processes stereo material. 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; 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}]Dereverb
preset="dereverb"Remove reverberation, delay, and echo
Keep Only Center Mono
preset="phantom_center"Extracts the "phantom center", the content that should be mono in a track. Use this for: bass, kick drums, podcast voice. Removes phaser, chorus, or flanger from instrument stems. Good for mixing.
5.1 Upmix
preset="5_1_upmix"Generate: LR (Front stereo), S (Sides stereo), LFE (Sub frequencies), C (Center front channel)
Guitar
preset="guitar"Guitar, Other
Modern Bowed Strings
preset="modern_bowed_strings"Strings, Other
Synth Lead
preset="synth_lead"Synth lead, Other
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.
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. Presets without model variants ignore this field.
bit_depthOutput WAV bit depth for generated stems.
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 SAM Audio processes stereo material. 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; 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.