Get API Key Get API
Docs

Stem extraction

- Separate a specified track (e.g. vocals) from a song.

  • Reference the source track: specified by task_id + audio_index, no need to record any extra id
  • Async task: submitting returns a task_id; poll GET /v1/music/tasks/:task_id for the result
Info

Source Audio Reference: No additional IDs are needed for tracks based on existing songs. Just pass task_id (the task ID from the previous run of this task) + audio_index (which result track in the data.result.music[] list, 1-based, default is 1).

Note

This endpoint has no version dimension: do not pass version — if passed, it is discarded and does not affect billing.

Request example

curl -X POST https://api.openveer.com/v1/music/generations/stems \
  -H 'Authorization: Bearer <token>' \
  -H 'Content-Type: application/json' \
  --data '{
    "model": "suno",
    "task_id": "task_01ABC",
    "audio_index": 1,
    "stem_type": "lead_vocal"
  }'

Response example

{
  "code": 200,
  "data": [
    {
      "status": "submitted",
      "task_id": "task_01K8SGYNNNVBQTXNR4MM964S7K"
    }
  ]
}

Authorizations

Authorization string

All endpoints require authentication using a Bearer Token

Get an API Key:

Visit the API Key management page to get your API Key

Add the following to the request headers when using it:

Authorization: Bearer YOUR_API_KEY

Body

model string

Audio model. Currently pass suno (defaults to suno if omitted).

task_id string

Our task_id of the job that produced the source track. If missing or the source cannot be resolved, a 400 is returned at submission time.

audio_index integer

Selects a track from the source task's data.result.music[] array (1-based; default 1).

stem_type string

types of tracks to extract. Omitted will use lead_vocal by default. Common values include lead_vocal, backing_vocals, drum_kit, bass, piano, and electric_guitar.

lead_vocal drum_kit bass backing_vocals piano electric_guitar percussion
string_section synth acoustic_guitar sound_effects synth_pad synth_bass
guitar brass_section organ electronic_drum_kit lead_electric_guitar synth_keys
rhythm_electric_guitar electric_piano upright_bass keyboards distorted_electric_guitar
kick snare risers synth_strings synth_lead woodwinds flute harp tambourine trumpet
arpeggiator accordion fiddle pedal_steel_guitar synth_voice violin digital_piano
synth_brass mandolin choir banjo bells clarinet tenor_saxophone trombone shaker
french_horn glockenspiel electric_bass cello timpani harmonica marimba vibraphone
lap_steel_guitar saxophone orchestra horns cymbals hand_clap oboe celesta congas
drone alto_saxophone double_bass ukulele harpsichord baritone_saxophone xylophone
tuba bass_guitar whistle lead_guitar rhodes 808 bongos bassoon cowbell viola sitar
steel_drums piccolo theremin bagpipes hi_hat music_box melodica tabla koto djembe
taiko didgeridoo

808 must be sent as a string, for example "stem_type": "808".

audio_format string

Output audio format: mp3 / m4a / wav.

Note

Get Result: This is an asynchronous task. After submission, you will receive task_id and then poll GET /v1/music/tasks/{task_id} every 3–5 seconds until status becomes completed or failed (while generation is in progress, status may be pending or processing, and progress is an integer from 0 to 100 and is not guaranteed to change at fixed intervals). Once completed, the result contains the separated track URL. In case of failure, data.error.message provides the reason, and the deducted amount will be automatically refunded.

Response

code integer

Response status code

data array
Returned data array
status string

Task status

  * submitted - Submitted
task_id string

Unique task identifier (used to poll GET /v1/music/tasks/{task_id} for the result)

This documentation is built and hosted on Mintlify, a developer documentation platform.