Skip to main content

Vocal & Instrument Stem Separation

Use Suno’s official get‑stem API to split tracks created on our platform into clean vocal, accompaniment, or per‑instrument stems with state‑of‑the‑art source‑separation AI.

Usage Guide

  • Separate a platform‑generated mix into vocal, instrumental, and individual instrument components.
  • Two processing modes are available:
    • separate_vocal — 2‑stem split
    • split_stem   — up to 12‑stem split
  • Ideal for karaoke creation, remixes, sample extraction, or detailed post‑production.
  • Best results on professionally mixed AI tracks with clear vocal and instrumental layers.
  • Billing notice: Each call consumes credits; re‑calling the same track is charged again (no server‑side caching).
  • Pricing: Check current per‑call credit costs at https://app.apikley.ru/billing.

Parameter Reference

NameTypeDescription
taskIdstringID of the original music‑generation task
audioIdstringWhich audio variation to process when multiple versions exist
typestringRequired. Separation mode: separate_vocal or split_stem

Developer Notes

  • All returned audio‑file URLs remain accessible for 14 days.
  • Separation quality depends on the complexity and mixing of the original track.
  • separate_vocal returns 2 stems — vocals + instrumental.
  • split_stem returns up to 12 independent stems — vocals, backing vocals, drums, bass, guitar, keyboard, strings, brass, woodwinds, percussion, synth, FX/other.
  • Billing: Every request is charged. Re‑submitting the same track triggers a new credit deduction (no server‑side caching).
Rate limits and quotas are enforced by Apikley and may differ from upstream providers.

OpenAPI

suno-api/suno-api.json post /api/v1/vocal-removal/generate
openapi: 3.0.0
info:
  title: Suno API
  description: Apikley Suno API Documentation
  version: 1.0.0
  contact:
    name: Technical Support
    email: [email protected]
servers:
  - url: https://api.apikley.ru
    description: API Server
security:
  - BearerAuth: []
paths:
  /api/v1/vocal-removal/generate:
    post:
      summary: Separate Vocals from Music
      description: >-
        Separate music into vocal, instrumental, and individual instrument
        tracks using advanced audio processing technology.


        ### Usage Guide

        - Use this endpoint to split audio into vocal, instrumental, and
        individual instrument components

        - Supports two separation types: vocal separation and instrument
        separation

        - Ideal for remixing, karaoke tracks, or isolating specific instruments
        for further processing

        - Works best with professionally recorded music with clear vocal and
        instrument parts


        ### Separation Type Details

        - `separate_vocal` (default): Separate vocals and accompaniment,
        generating vocal and instrumental tracks

        - `split_stem`: Separate various instrument sounds, generating vocals,
        backing vocals, drums, bass, guitar, keyboard, strings, brass,
        woodwinds, percussion, synthesizer, effects, and other tracks


        ### Parameter Details

        - `taskId` identifies the original music generation task

        - `audioId` specifies which audio track to process when multiple
        variations exist

        - `type` specifies the separation type, with options `separate_vocal` or
        `split_stem`, default value is `separate_vocal`


        ### Developer Notes

        - All audio file URLs are retained for 14 days

        - Separation quality depends on the complexity and mixing of the
        original audio

        - `separate_vocal` type returns vocal and instrumental tracks

        - `split_stem` type returns multiple independent instrument tracks,
        including vocals, backing vocals, drums, bass, guitar, keyboard,
        percussion, strings, synthesizer, effects, brass, woodwinds, etc.
      operationId: separate-vocals
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - taskId
                - audioId
                - callBackUrl
              properties:
                taskId:
                  type: string
                  description: >-
                    Unique identifier of the music generation task. This should
                    be a taskId returned from either the "Generate Music" or
                    "Extend Music" endpoints.
                  example: 5c79****be8e
                audioId:
                  type: string
                  description: >-
                    Unique identifier of the specific audio track to process for
                    vocal separation. This ID is returned in the callback data
                    after music generation completes.
                  example: e231****-****-****-****-****8cadc7dc
                type:
                  type: string
                  enum:
                    - separate_vocal
                    - split_stem
                  default: separate_vocal
                  description: >-
                    Separation type with the following options:


                    - **separate_vocal**: Separate vocals and accompaniment,
                    generating vocal and instrumental tracks

                    - **split_stem**: Separate various instrument sounds,
                    generating vocals, backing vocals, drums, bass, guitar,
                    keyboard, strings, brass, woodwinds, percussion,
                    synthesizer, effects, and other tracks
                  example: separate_vocal
                callBackUrl:
                  type: string
                  format: uri
                  description: >-
                    The URL to receive vocal separation task completion updates.
                    Required for all vocal separation requests.


                    - System will POST task status and results to this URL when
                    vocal separation completes

                    - Callback content varies based on the type parameter:
                    separate_vocal returns vocals and accompaniment, split_stem
                    returns multiple instrument tracks

                    - Your callback endpoint should accept POST requests with
                    JSON payload containing separated audio file links

                    - For detailed callback format and implementation guide, see
                    [Vocal Separation
                    Callbacks](https://docs.apikley.ru/suno-api/separate-vocals-callbacks)

                    - Alternatively, use the Get Vocal Separation Details
                    endpoint to poll task status
                  example: https://api.example.com/callback
      responses:
        '200':
          description: Request successful
          content:
            application/json:
              schema:
                allOf:
                  - type: object
                    properties:
                      code:
                        type: integer
                        enum:
                          - 200
                          - 400
                          - 401
                          - 402
                          - 404
                          - 409
                          - 422
                          - 429
                          - 455
                          - 500
                        description: >-
                          Response status code


                          - **200**: Success - Request has been processed
                          successfully

                          - **400**: Format Error - The parameter is not in a
                          valid JSON format

                          - **401**: Unauthorized - Authentication credentials
                          are missing or invalid

                          - **402**: Insufficient Credits - Account does not
                          have enough credits to perform the operation

                          - **404**: Not Found - The requested resource or
                          endpoint does not exist

                          - **409**: Conflict - WAV record already exists

                          - **422**: Validation Error - The request parameters
                          failed validation checks

                          - **429**: Rate Limited - Request limit has been
                          exceeded for this resource

                          - **455**: Service Unavailable - System is currently
                          undergoing maintenance

                          - **500**: Server Error - An unexpected error occurred
                          while processing the request
                      msg:
                        type: string
                        description: Error message when code != 200
                        example: success
                  - type: object
                    properties:
                      data:
                        type: object
                        properties:
                          taskId:
                            type: string
                            description: Task ID for tracking task status
                            example: 5c79****be8e
        '500':
          $ref: '#/components/responses/Error'
      callbacks:
        vocalRemovalGenerated:
          '{$request.body#/callBackUrl}':
            post:
              description: >-
                System will call this callback when vocal separation is
                complete. Callback data structure varies based on the type
                parameter specified in the request.


                ### separate_vocal Type Callback Example

                ```json

                {
                  "code": 200,
                  "msg": "vocal separation generated successfully.",
                  "data": {
                    "task_id": "3e63b4cc88d52611159371f6af5571e7",
                    "vocal_separation_info": {
                      "instrumental_url": "https://file.aiquickdraw.com/s/d92a13bf-c6f4-4ade-bb47-f69738435528_Instrumental.mp3",
                      "origin_url": "",
                      "vocal_url": "https://file.aiquickdraw.com/s/3d7021c9-fa8b-4eda-91d1-3b9297ddb172_Vocals.mp3"
                    }
                  }
                }

                ```


                ### split_stem Type Callback Example

                ```json

                {
                  "code": 200,
                  "msg": "vocal separation generated successfully.",
                  "data": {
                    "task_id": "e649edb7abfd759285bd41a47a634b10",
                    "vocal_separation_info": {
                      "origin_url": "",
                      "backing_vocals_url": "https://file.aiquickdraw.com/s/aadc51a3-4c88-4c8e-a4c8-e867c539673d_Backing_Vocals.mp3",
                      "bass_url": "https://file.aiquickdraw.com/s/a3c2da5a-b364-4422-adb5-2692b9c26d33_Bass.mp3",
                      "brass_url": "https://file.aiquickdraw.com/s/334b2d23-0c65-4a04-92c7-22f828afdd44_Brass.mp3",
                      "drums_url": "https://file.aiquickdraw.com/s/ac75c5ea-ac77-4ad2-b7d9-66e140b78e44_Drums.mp3",
                      "fx_url": "https://file.aiquickdraw.com/s/a8822c73-6629-4089-8f2a-d19f41f0007d_FX.mp3",
                      "guitar_url": "https://file.aiquickdraw.com/s/064dd08e-d5d2-4201-9058-c5c40fb695b4_Guitar.mp3",
                      "keyboard_url": "https://file.aiquickdraw.com/s/adc934e0-df7d-45da-8220-1dba160d74e0_Keyboard.mp3",
                      "percussion_url": "https://file.aiquickdraw.com/s/0f70884d-047c-41f1-a6d0-7044618b7dc6_Percussion.mp3",
                      "strings_url": "https://file.aiquickdraw.com/s/49829425-a5b0-424e-857a-75d4c63a426b_Strings.mp3",
                      "synth_url": "https://file.aiquickdraw.com/s/56b2d94a-eb92-4d21-bc43-3460de0c8348_Synth.mp3",
                      "vocal_url": "https://file.aiquickdraw.com/s/07420749-29a2-4054-9b62-e6a6f8b90ccb_Vocals.mp3",
                      "woodwinds_url": "https://file.aiquickdraw.com/s/d81545b1-6f94-4388-9785-1aaa6ecabb02_Woodwinds.mp3"
                    }
                  }
                }

                ```
              requestBody:
                content:
                  application/json:
                    schema:
                      allOf:
                        - type: object
                          properties:
                            code:
                              type: integer
                              enum:
                                - 200
                                - 500
                              description: >-
                                Response status code


                                - **200**: Success - Request has been processed
                                successfully

                                - **500**: Internal Error - Please try again
                                later.
                            msg:
                              type: string
                              description: Error message when code != 200
                              example: success
                        - type: object
                          properties:
                            data:
                              type: object
                              properties:
                                taskId:
                                  type: string
                                  description: Task ID for tracking task status
                                  example: 5c79****be8e
                      type: object
                      properties:
                        code:
                          type: integer
                          description: Status code
                          example: 200
                        msg:
                          type: string
                          description: Response message
                          example: vocal separation generated successfully.
                        data:
                          type: object
                          properties:
                            task_id:
                              type: string
                              description: Task ID
                            vocal_separation_info:
                              type: object
                              description: >-
                                Vocal separation result information, fields vary
                                based on the type parameter in the request
                              properties:
                                origin_url:
                                  type: string
                                  description: Original audio URL
                                vocal_url:
                                  type: string
                                  description: Vocal part audio URL
                                instrumental_url:
                                  type: string
                                  description: >-
                                    Instrumental part audio URL (separate_vocal
                                    type only)
                                backing_vocals_url:
                                  type: string
                                  description: >-
                                    Backing vocals audio URL (split_stem type
                                    only)
                                drums_url:
                                  type: string
                                  description: Drums part audio URL (split_stem type only)
                                bass_url:
                                  type: string
                                  description: Bass part audio URL (split_stem type only)
                                guitar_url:
                                  type: string
                                  description: Guitar part audio URL (split_stem type only)
                                keyboard_url:
                                  type: string
                                  description: >-
                                    Keyboard part audio URL (split_stem type
                                    only)
                                percussion_url:
                                  type: string
                                  description: >-
                                    Percussion part audio URL (split_stem type
                                    only)
                                strings_url:
                                  type: string
                                  description: >-
                                    Strings part audio URL (split_stem type
                                    only)
                                synth_url:
                                  type: string
                                  description: >-
                                    Synthesizer part audio URL (split_stem type
                                    only)
                                fx_url:
                                  type: string
                                  description: >-
                                    Effects part audio URL (split_stem type
                                    only)
                                brass_url:
                                  type: string
                                  description: Brass part audio URL (split_stem type only)
                                woodwinds_url:
                                  type: string
                                  description: >-
                                    Woodwinds part audio URL (split_stem type
                                    only)
              responses:
                '200':
                  description: Callback received successfully
components:
  responses:
    Error:
      description: Server Error
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      bearerFormat: API Key
      description: >-
        All APIs require authentication via Bearer Token.


        Get API Key:

        1. Visit [API Key Management Page](https://app.apikley.ru/keys) to get your
        API Key


        Usage:

        Add to request header:

        Authorization: Bearer APIKLEY_API_KEY


        Note:

        - Keep your API Key secure and do not share it with others

        - If you suspect your API Key has been compromised, reset it immediately
        in the management page


To find navigation and other pages in this documentation, fetch the llms.txt file at: https://docs.apikley.ru/llms.txt