openapi: 3.1.0 info: title: LALAL.AI Batch Stem Separation API version: 1.1.0 description: ' This is the LALAL.AI API. To authenticate, provide your license key in the `X-License-Key` header of each request. Typical usage example: 1) Upload a file using the ''/upload/'' endpoint to get a ''source_id''. 2) Start a splitting task using the ''/split/'' endpoint with the obtained ''source_id'' and desired presets. 3) Check the status of your task using the ''/check/'' endpoint with the returned ''task_id''. 4) Once the task is complete, download the processed files using urls from the ''/check/'' response. 5) (If needed), you can delete the source file and all its resulting tracks from our servers, using the ''/delete/'' endpoint with the ''source_id''. Notes: You can use the same source_id for concurrent splitting tasks. You can check multiple task IDs in a single ''/check/'' request by providing a list of ''task_ids''. ' servers: - url: https://www.lalal.ai description: LALAL.AI API v1 production endpoint tags: - name: Stem Separation paths: /api/v1/split/stem_separator/: post: operationId: split_split_enhanced summary: Split a file into stems using the stem separator presets parameters: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Task' '400': description: Bad Request content: application/json: schema: anyOf: - $ref: '#/components/schemas/ApiV1ErrorResponse' - $ref: '#/components/schemas/CommonErrorResponse' title: Response description: "\n Result of /check/ includes 2 tracks:\n - stem:{\"type\":\"stem\", \"label\":\"\", \"url\":\"...\"}\n - without stem:{\"type\":\"back\", \"label\":\"no_\", \"url\":\"...\"}\n\n LEAD_BACK VOCALS:\n For 'vocals' stem you can use parameter multivocal=\"lead_back\" and receive both lead and backing vocals as separate stems.\n Result of /check/ includes 4 tracks. Backing vocals track is optional and could be suppressed if not found in the audio:\n lead vocals:{\"type\":\"stem\", \"label\":\"vocals@0\", \"url\":\"...\"}\n backing vocals:{\"type\":\"stem\", \"label\":\"vocals@1\", \"url\":\"...\"}\n instrumental:{\"type\":\"back\", \"label\":\"no_vocals\", \"url\":\"...\"}\n instrumental + backing vocals:{\"type\":\"back\", \"label\":\"mix_no_lead\", \"url\":\"...\"}\n " tags: - Stem Separation requestBody: content: application/json: schema: $ref: '#/components/schemas/StemSeparatorSplitParameters' required: true security: - ApiKeyHeaderAuth: [] /api/v1/split/demuser/: post: operationId: split_split_demuser summary: Clean voice from background music parameters: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Task' '400': description: Bad Request content: application/json: schema: anyOf: - $ref: '#/components/schemas/ApiV1ErrorResponse' - $ref: '#/components/schemas/CommonErrorResponse' title: Response description: "\n Typical usage case - is voice with background music.\n Demuser will separate voice (stem) and music (back).\n Result of /check/ includes 2 tracks:\n - stem:{\"type\":\"stem\", \"label\":\"music\", \"url\":\"...\"}\n - back:{\"type\":\"back\", \"label\":\"no_music\", \"url\":\"...\"}\n " tags: - Stem Separation requestBody: content: application/json: schema: $ref: '#/components/schemas/DemuserSplitParameters' required: true security: - ApiKeyHeaderAuth: [] /api/v1/split/voice_clean/: post: operationId: split_split_voice_clean summary: Clean voice from background noise parameters: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Task' '400': description: Bad Request content: application/json: schema: anyOf: - $ref: '#/components/schemas/ApiV1ErrorResponse' - $ref: '#/components/schemas/CommonErrorResponse' title: Response '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/CommonErrorResponse' description: "\n Typical usage case - is voice with background noise.\n Voice clean will separate clean voice (stem) and noise (back).\n Result of /check/ includes 2 tracks:\n - stem:{\"type\":\"stem\", \"label\":\"voice\", \"url\":\"...\"}\n - back:{\"type\":\"back\", \"label\":\"no_voice\", \"url\":\"...\"}\n " tags: - Stem Separation requestBody: content: application/json: schema: $ref: '#/components/schemas/VoiceCleanSplitParameters' required: true security: - ApiKeyHeaderAuth: [] /api/v1/split/multistem/: post: operationId: split_split_multistem summary: Split a file into multiple stems in one request (multistem feature) parameters: [] responses: '200': description: OK content: application/json: schema: $ref: '#/components/schemas/Task' '400': description: Bad Request content: application/json: schema: anyOf: - $ref: '#/components/schemas/ApiV1ErrorResponse' - $ref: '#/components/schemas/CommonErrorResponse' title: Response '422': description: Unprocessable Entity content: application/json: schema: $ref: '#/components/schemas/CommonErrorResponse' description: "\n WARNING: The stems are internally extracted one by one, so the processing time is proportional to the number of stems selected.\n\n You will be charged an equal amount of minutes for each stem.\n For example, if you have an audio file with a duration of 1 minute,\n with stem_list=[\"vocals\", \"drum\"], you will be charged 2 minutes (1 minute for \"vocals\", 1 minute for \"drum\").\n At the /check/ endpoint you will receive tracks with 1 additional track which is the source without all selected stems.\n Example response tracks for stem_list=[\"vocals\", \"drum\"]:\n - stem:{\"type\":\"stem\", \"label\":\"vocals\", \"url\":\"...\"}\n - stem:{\"type\":\"stem\", \"label\":\"drum\", \"url\":\"...\"}\n - rest of source:{\"type\":\"back\", \"label\":\"no_multistem\", \"url\":\"...\"}\n " tags: - Stem Separation requestBody: content: application/json: schema: $ref: '#/components/schemas/MultistemSplitParameters' required: true security: - ApiKeyHeaderAuth: [] components: schemas: FilteringLevel: enum: - 0 - 1 - 2 title: FilteringLevel type: integer MultistemSplitterPresetsV1: properties: splitter: allOf: - $ref: '#/components/schemas/SplitterType' default: auto description: Splitter model to use. 'auto' selects the latest available model for the selected stems. dereverb_enabled: default: false description: ' Enabling dereverb removes echo from the audio for clarity, which may slightly alter the voice. Disabling dereverb preserves the natural echo of the recording for authenticity. Only for {''vocals'', ''voice''} stems.' title: Dereverb Enabled type: boolean encoder_format: anyOf: - $ref: '#/components/schemas/EncoderFormat' - type: 'null' default: null description: Format for output audio. If None - convert to source file format. stem_list: description: List of stems to extract. Any subset of supported stems is possible. example: - vocals - drum - piano - bass - electric_guitar - acoustic_guitar items: enum: - vocals - drum - piano - bass - electric_guitar - acoustic_guitar type: string maxItems: 6 minItems: 1 title: Stem List type: array extraction_level: allOf: - $ref: '#/components/schemas/ExtractionLevel' default: deep_extraction description: ' Clear Cut: minimizes cross-bleeding between stems, resulting in a cleaner output, but may suppress finer details. Deep Extraction: captures more intricate details but increases the risk of cross-bleeding, which may lead to some overlap between stems. Andromeda splitter is not affected by this parameter and has its own fixed extraction behavior. ' required: - stem_list title: MultistemSplitterPresetsV1 type: object ExtractionLevel: enum: - deep_extraction - clear_cut title: ExtractionLevel type: string DemuserSplitterPresetsV1: properties: splitter: allOf: - $ref: '#/components/schemas/SplitterType' default: auto description: Splitter model to use. 'auto' selects the latest available model for the selected stems. dereverb_enabled: default: false description: ' Enabling dereverb removes echo from the audio for clarity, which may slightly alter the voice. Disabling dereverb preserves the natural echo of the recording for authenticity. Only for {''vocals'', ''voice''} stems.' title: Dereverb Enabled type: boolean encoder_format: anyOf: - $ref: '#/components/schemas/EncoderFormat' - type: 'null' default: null description: Format for output audio. If None - convert to source file format. stem: const: music description: Stem to extract. Only 'music' stem is supported. example: music title: Stem type: string required: - stem title: DemuserSplitterPresetsV1 type: object MultistemSplitParameters: properties: source_id: description: ID of the source file to be processed. example: 2fe8f214-1771-4900-9e7e-570f823bd359 format: uuid4 title: Source Id type: string presets: $ref: '#/components/schemas/MultistemSplitterPresetsV1' idempotency_key: anyOf: - format: uuid4 type: string - type: 'null' default: null description: ' Unique uuid4 key to ensure idempotent requests. Prevents duplicate task execution with the same parameters. Can be reused until the task starts. Once processing begins, reusing this key will return an error. ' title: Idempotency Key required: - source_id - presets title: MultistemSplitParameters type: object Task: properties: task_id: description: ID of the created split task. example: e1fc1d8f-502e-4de0-bf3b-b30543d11c77 title: Task Id type: string required: - task_id title: Task type: object VoiceCleanSplitParameters: properties: source_id: description: ID of the source file to be processed. example: 2fe8f214-1771-4900-9e7e-570f823bd359 format: uuid4 title: Source Id type: string presets: $ref: '#/components/schemas/VoiceCleanPresetsV1' idempotency_key: anyOf: - format: uuid4 type: string - type: 'null' default: null description: ' Unique uuid4 key to ensure idempotent requests. Prevents duplicate task execution with the same parameters. Can be reused until the task starts. Once processing begins, reusing this key will return an error. ' title: Idempotency Key required: - source_id - presets title: VoiceCleanSplitParameters type: object CommonErrorResponse: properties: detail: anyOf: - type: string - additionalProperties: true type: object - items: additionalProperties: true type: object type: array description: Error details example: detail: - loc: - body - split_input - source_id msg: Field required type: missing - loc: - body - split_input - presets msg: Field required type: missing title: Detail required: - detail title: CommonErrorResponse type: object StemSeparatorSplitParameters: properties: source_id: description: ID of the source file to be processed. example: 2fe8f214-1771-4900-9e7e-570f823bd359 format: uuid4 title: Source Id type: string presets: $ref: '#/components/schemas/StemSeparatorSplitterPresetsV1' idempotency_key: anyOf: - format: uuid4 type: string - type: 'null' default: null description: ' Unique uuid4 key to ensure idempotent requests. Prevents duplicate task execution with the same parameters. Can be reused until the task starts. Once processing begins, reusing this key will return an error. ' title: Idempotency Key required: - source_id - presets title: StemSeparatorSplitParameters type: object StemSeparatorSplitterPresetsV1: properties: splitter: allOf: - $ref: '#/components/schemas/SplitterType' default: auto description: Splitter model to use. 'auto' selects the latest available model for the selected stems. dereverb_enabled: default: false description: ' Enabling dereverb removes echo from the audio for clarity, which may slightly alter the voice. Disabling dereverb preserves the natural echo of the recording for authenticity. Only for {''vocals'', ''voice''} stems.' title: Dereverb Enabled type: boolean encoder_format: anyOf: - $ref: '#/components/schemas/EncoderFormat' - type: 'null' default: null description: Format for output audio. If None - convert to source file format. stem: description: Stem to extract. ['synthesizer', 'strings', 'wind'] are available only phoenix splitter. enum: - vocals - drum - piano - bass - electric_guitar - acoustic_guitar - synthesizer - strings - wind example: vocals title: Stem type: string multivocal: anyOf: - const: lead_back type: string - type: 'null' default: null description: Use parameter 'lead_back' and receive both lead and backing vocals as separate stems vocals@0 and vocals@1 title: Multivocal extraction_level: allOf: - $ref: '#/components/schemas/ExtractionLevel' default: deep_extraction description: ' Clear Cut: minimizes cross-bleeding between stems, resulting in a cleaner output, but may suppress finer details. Deep Extraction: captures more intricate details but increases the risk of cross-bleeding, which may lead to some overlap between stems. Andromeda splitter is not affected by this parameter and has its own fixed extraction behavior. ' required: - stem title: StemSeparatorSplitterPresetsV1 type: object SplitterType: enum: - andromeda - perseus - orion - phoenix - lyra - lynx title: SplitterType type: string EncoderFormat: enum: - mp3 - wav - flac - aac - ogg title: EncoderFormat type: string VoiceCleanPresetsV1: properties: splitter: allOf: - $ref: '#/components/schemas/SplitterType' default: auto description: Splitter model to use. 'auto' selects the latest available model for the selected stems. dereverb_enabled: default: false description: ' Enabling dereverb removes echo from the audio for clarity, which may slightly alter the voice. Disabling dereverb preserves the natural echo of the recording for authenticity. Only for {''vocals'', ''voice''} stems.' title: Dereverb Enabled type: boolean encoder_format: anyOf: - $ref: '#/components/schemas/EncoderFormat' - type: 'null' default: null description: Format for output audio. If None - convert to source file format. stem: const: voice description: Stem to extract. Only 'voice' stem is supported. example: voice title: Stem type: string noise_cancelling_level: allOf: - $ref: '#/components/schemas/FilteringLevel' default: 0 description: Level of noise cancelling to apply. required: - stem title: VoiceCleanPresetsV1 type: object DemuserSplitParameters: properties: source_id: description: ID of the source file to be processed. example: 2fe8f214-1771-4900-9e7e-570f823bd359 format: uuid4 title: Source Id type: string presets: $ref: '#/components/schemas/DemuserSplitterPresetsV1' idempotency_key: anyOf: - format: uuid4 type: string - type: 'null' default: null description: ' Unique uuid4 key to ensure idempotent requests. Prevents duplicate task execution with the same parameters. Can be reused until the task starts. Once processing begins, reusing this key will return an error. ' title: Idempotency Key required: - source_id - presets title: DemuserSplitParameters type: object ApiV1ErrorResponse: properties: detail: description: Error message. example: Idempotency key has already been used. title: Detail type: string code: description: Error code. example: idempotency_key_used title: Code type: string required: - detail - code title: ApiV1ErrorResponse type: object securitySchemes: ApiKeyHeaderAuth: type: apiKey in: header name: X-License-Key