LALAL.AI API

LALAL.AI API v1 is a production-grade audio separation, voice cleaning, and voice cloning API powered by proprietary neural networks (Andromeda, Perseus, Orion, Phoenix, Lyra, Lynx). It exposes upload, split, multi-stem, demuser, voice-clean, change-voice, voice-pack listing, task polling, and limits endpoints with both single-task and batch variants. Authentication is via the X-License-Key header. Supported stems include vocals, drums, bass, piano, electric guitar, acoustic guitar, synthesizer, strings, and wind, with output in MP3, WAV, FLAC, AAC, or OGG.

Documentation

Specifications

SDKs

Examples

Schemas & Data

Other Resources

OpenAPI Specification

lalal-ai-api-openapi.yml Raw ↑
openapi: 3.1.0
info:
  title: LALAL.AI 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''.


    '
paths:
  /api/v1/upload/:
    post:
      operationId: upload_upload
      summary: Upload a file to the server.
      parameters:
      - name: Content-Disposition
        in: header
        required: true
        schema:
          type: string
        description: '''attachment; filename=<filename>'' - a name for the file (see RFC 6266).'
        example: attachment; filename=song.mp3
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/UploadResponse'
        '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    The uploaded file in other endpoints is called a \"source file\".\n    You can use the source file\
        \ ID from the response to create split tasks.\n    The file will be deleted when the expiration time from the response\
        \ is reached.\n    Upload limit is 10GB per request.\n    "
      tags:
      - Common
      security:
      - ApiKeyHeaderAuth: []
      requestBody:
        content:
          application/octet-stream:
            schema:
              type: string
              format: binary
              description: File binary data
        required: true
        description: Upload binary data in the request body. Pass the file name in the 'Content-Disposition' header.
  /api/v1/check/:
    post:
      operationId: check_check
      summary: Check the status of a task by id
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CheckV1Response'
        '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'
        '429':
          description: Too Many Requests
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonErrorResponse'
      description: "\n    This endpoint allows you to check the status of a specific task by its ID.\n    Checking is only\
        \ possible within 24h after task creation, otherwise an error will be returned.\n    The current rate limit for this\
        \ endpoint is 30 requests per minute. This limit may be increased in the future.\n    "
      tags:
      - Common
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CheckV1Request'
        required: true
      security:
      - ApiKeyHeaderAuth: []
  /api/v1/cancel/:
    post:
      operationId: cancel_cancel
      summary: Cancel tasks by id
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelResponse'
        '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'
      tags:
      - Common
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CancelRequest'
        required: true
      security:
      - ApiKeyHeaderAuth: []
  /api/v1/cancel/all/:
    post:
      operationId: cancel_cancel_all
      summary: Cancel all user tasks in progress state
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CancelResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/ApiV1ErrorResponse'
                - $ref: '#/components/schemas/CommonErrorResponse'
                title: Response
      tags:
      - Common
      security:
      - ApiKeyHeaderAuth: []
  /api/v1/delete/:
    post:
      operationId: delete_delete
      summary: Delete source file and resulting tracks from storage.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SuccessResponse'
        '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: All running tasks related to the source file will be cancelled. Do not call delete on source\
        \ files with processing tasks.\n    This only deletes the media files, not the database records.\n    The files are\
        \ removed from storage immediately, but download links will remain valid for one hour after deletion due to CDN caching.\n\
        \    The /check/ endpoint will still return a valid check result for 24 hours, but the download links will lead to\
        \ a 404 error after deletion.\n    "
      tags:
      - Common
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/DeleteParameters'
        required: true
      security:
      - ApiKeyHeaderAuth: []
  /api/v1/limits/minutes_left/:
    post:
      operationId: limits_get_minutes_left
      summary: Get number of processing minutes available to consume.
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/LimitsResponse'
        '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'
      tags:
      - Common
      security:
      - ApiKeyHeaderAuth: []
  /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\":\"<stem_name>\",\
        \ \"url\":\"...\"}\n    - without stem:{\"type\":\"back\", \"label\":\"no_<stem_name>\", \"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 <number_of_stems>\
        \ 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: []
  /api/v1/split/batch/stem_separator/:
    post:
      operationId: batch_split_split_batch_enhanced
      summary: Split multiple files into stems using the stem separator presets
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchTasksResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonErrorResponse'
      description: "\n    Batch version of /split/stem_separator/. Accepts a list of split parameters and returns results\
        \ for each item.\n    Each item is processed independently - if one fails, others will still be processed.\n    Results\
        \ are returned in the same order as input items.\n\n    Each result contains either:\n    - success: {\"status\":\
        \ \"success\", \"task_id\": \"...\", \"source_id\": \"...\"}\n    - error: {\"status\": \"error\", \"error\": \"...\"\
        , \"code\": \"...\", \"source_id\": \"...\"}\n    "
      tags:
      - Batch Stem Separation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchStemSeparatorSplitParameters'
        required: true
      security:
      - ApiKeyHeaderAuth: []
  /api/v1/split/batch/demuser/:
    post:
      operationId: batch_split_split_batch_demuser
      summary: Clean voice from background music for multiple files
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchTasksResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonErrorResponse'
      description: "\n    Batch version of /split/demuser/. Accepts a list of split parameters and returns results for each\
        \ item.\n    Each item is processed independently - if one fails, others will still be processed.\n    Results are\
        \ returned in the same order as input items.\n\n    Each result contains either:\n    - success: {\"status\": \"success\"\
        , \"task_id\": \"...\", \"source_id\": \"...\"}\n    - error: {\"status\": \"error\", \"error\": \"...\", \"code\"\
        : \"...\", \"source_id\": \"...\"}\n    "
      tags:
      - Batch Stem Separation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchDemuserSplitParameters'
        required: true
      security:
      - ApiKeyHeaderAuth: []
  /api/v1/split/batch/voice_clean/:
    post:
      operationId: batch_split_split_batch_voice_clean
      summary: Clean voice from background noise for multiple files
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BatchTasksResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonErrorResponse'
        '422':
          description: Unprocessable Entity
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CommonErrorResponse'
      description: "\n    Batch version of /split/voice_clean/. Accepts a list of split parameters and returns results for\
        \ each item.\n    Each item is processed independently - if one fails, others will still be processed.\n    Results\
        \ are returned in the same order as input items.\n\n    Each result contains either:\n    - success: {\"status\":\
        \ \"success\", \"task_id\": \"...\", \"source_id\": \"...\"}\n    - error: {\"status\": \"error\", \"error\": \"...\"\
        , \"code\": \"...\", \"source_id\": \"...\"}\n    "
      tags:
      - Batch Stem Separation
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/BatchVoiceCleanSplitParameters'
        required: true
      security:
      - ApiKeyHeaderAuth: []
  /api/v1/change_voice/:
    post:
      operationId: change_voice_change_voice
      summary: Changes voice in the audio file using voice pack
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResponse'
        '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    For 'voice_pack_id' parameter use 'pack_id' from /voice_packs/list/ endpoint or one of legal packs:\
        \ ['ALEX_KAYE', 'STASIA_FAYE', 'NICOLAAS_HAAS', 'NIK_ZEL', 'OLIA_CHEBO', 'YVAR_DE_GROOT', 'VETRANA']\n\n    Result\
        \ of /check/ includes 1 track with label 'converted_mix'.\n    {\"label\":\"converted_mix\", \"type\":\"back\", \"\
        url\":\"...\"}\n    "
      tags:
      - Voice Change
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/VoiceChangeParameters'
        required: true
      security:
      - ApiKeyHeaderAuth: []
  /api/v1/voice_packs/list/:
    post:
      operationId: voice_packs_list_packs
      summary: Lists voice packs available to the user
      parameters: []
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VoicePackListResponse'
        '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: Helps to find pack_id for /change_voice/ endpoint.
      tags:
      - Voice Change
      security:
      - ApiKeyHeaderAuth: []
components:
  schemas:
    UploadResponse:
      properties:
        id:
          description: ID of the uploaded file.
          example: e1fc1d8f-502e-4de0-bf3b-b30543d11c77
          title: Id
          type: string
        name:
          description: Name of the uploaded file.
          example: my_audio.mp3
          title: Name
          type: string
        size:
          description: Size of the uploaded file in bytes.
          example: 12345678
          title: Size
          type: integer
        duration:
          description: Duration of the uploaded media file in seconds.
          example: 180
          title: Duration
          type: integer
        expires:
          description: File expiration time in Unix epoch format with UTC timezone.
          example: '1761217415'
          title: Expires
          type: integer
      required:
      - id
      - name
      - size
      - duration
      - expires
      title: UploadResponse
      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
    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
    CheckV1CancelledResult:
      properties:
        source_id:
          description: ID of the source file associated with the task
          examples:
          - ecb6c2c5-6263-48b9-80c9-f54248e30892
          title: Source Id
          type: string
        presets:
          discriminator:
            mapping:
              split:
                discriminator:
                  mapping:
                    demuser: '#/components/schemas/DemuserSplitterPresetsV1'
                    multistem: '#/components/schemas/MultistemSplitterPresetsV1'
                    stem_separator: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                    voice_clean: '#/components/schemas/VoiceCleanPresetsV1'
                  propertyName: label
                oneOf:
                - $ref: '#/components/schemas/DemuserSplitterPresetsV1'
                - $ref: '#/components/schemas/VoiceCleanPresetsV1'
                - $ref: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                - $ref: '#/components/schemas/MultistemSplitterPresetsV1'
              voice_convert: '#/components/schemas/VoiceChangePresetsV1'
            propertyName: task_type
          oneOf:
          - $ref: '#/components/schemas/VoiceChangePresetsV1'
          - discriminator:
              mapping:
                demuser: '#/components/schemas/DemuserSplitterPresetsV1'
                multistem: '#/components/schemas/MultistemSplitterPresetsV1'
                stem_separator: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                voice_clean: '#/components/schemas/VoiceCleanPresetsV1'
              propertyName: label
            oneOf:
            - $ref: '#/components/schemas/DemuserSplitterPresetsV1'
            - $ref: '#/components/schemas/VoiceCleanPresetsV1'
            - $ref: '#/components/schemas/StemSeparatorSplitterPresetsV1'
            - $ref: '#/components/schemas/MultistemSplitterPresetsV1'
          title: Presets
        status:
          const: cancelled
          default: cancelled
          title: Status
          type: string
      required:
      - source_id
      - presets
      title: CheckV1CancelledResult
      type: object
    CheckV1ErrorResult:
      properties:
        source_id:
          description: ID of the source file associated with the task
          examples:
          - ecb6c2c5-6263-48b9-80c9-f54248e30892
          title: Source Id
          type: string
        presets:
          discriminator:
            mapping:
              split:
                discriminator:
                  mapping:
                    demuser: '#/components/schemas/DemuserSplitterPresetsV1'
                    multistem: '#/components/schemas/MultistemSplitterPresetsV1'
                    stem_separator: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                    voice_clean: '#/components/schemas/VoiceCleanPresetsV1'
                  propertyName: label
                oneOf:
                - $ref: '#/components/schemas/DemuserSplitterPresetsV1'
                - $ref: '#/components/schemas/VoiceCleanPresetsV1'
                - $ref: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                - $ref: '#/components/schemas/MultistemSplitterPresetsV1'
              voice_convert: '#/components/schemas/VoiceChangePresetsV1'
            propertyName: task_type
          oneOf:
          - $ref: '#/components/schemas/VoiceChangePresetsV1'
          - discriminator:
              mapping:
                demuser: '#/components/schemas/DemuserSplitterPresetsV1'
                multistem: '#/components/schemas/MultistemSplitterPresetsV1'
                stem_separator: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                voice_clean: '#/components/schemas/VoiceCleanPresetsV1'
              propertyName: label
            oneOf:
            - $ref: '#/components/schemas/DemuserSplitterPresetsV1'
            - $ref: '#/components/schemas/VoiceCleanPresetsV1'
            - $ref: '#/components/schemas/StemSeparatorSplitterPresetsV1'
            - $ref: '#/components/schemas/MultistemSplitterPresetsV1'
          title: Presets
        status:
          const: error
          default: error
          title: Status
          type: string
        error:
          $ref: '#/components/schemas/TaskMetaError'
      required:
      - source_id
      - presets
      - error
      title: CheckV1ErrorResult
      type: object
    CheckV1ProgressResult:
      properties:
        source_id:
          description: ID of the source file associated with the task
          examples:
          - ecb6c2c5-6263-48b9-80c9-f54248e30892
          title: Source Id
          type: string
        presets:
          discriminator:
            mapping:
              split:
                discriminator:
                  mapping:
                    demuser: '#/components/schemas/DemuserSplitterPresetsV1'
                    multistem: '#/components/schemas/MultistemSplitterPresetsV1'
                    stem_separator: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                    voice_clean: '#/components/schemas/VoiceCleanPresetsV1'
                  propertyName: label
                oneOf:
                - $ref: '#/components/schemas/DemuserSplitterPresetsV1'
                - $ref: '#/components/schemas/VoiceCleanPresetsV1'
                - $ref: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                - $ref: '#/components/schemas/MultistemSplitterPresetsV1'
              voice_convert: '#/components/schemas/VoiceChangePresetsV1'
            propertyName: task_type
          oneOf:
          - $ref: '#/components/schemas/VoiceChangePresetsV1'
          - discriminator:
              mapping:
                demuser: '#/components/schemas/DemuserSplitterPresetsV1'
                multistem: '#/components/schemas/MultistemSplitterPresetsV1'
                stem_separator: '#/components/schemas/StemSeparatorSplitterPresetsV1'
                voice_clean: '#/components/schemas/VoiceCleanPresetsV1'
              propertyName: label
            oneOf:
            - $ref: '#/components/schemas/DemuserSplitterPresetsV1'
            - $ref: '#/components/schemas/VoiceCleanPresetsV1'
            - $ref: '#/components/schemas/StemSeparatorSplitterPresetsV1'
            - $ref: '#/components/schemas/MultistemSplitterPresetsV1'
          title: Presets
        status:
          const: progress
          default: progress
          title: Status
          type: string
        progress:
          description: Progress percentage of the task, integer number. Zero progress means task is in queue.
          examples:
          - 42
          maximum: 100
          minimum: 0
          title: Progress
          type: integer
      required:
      - source_id
      - presets
      - progress
      title: CheckV1ProgressResult
      type: object
    CheckV1Response:
      properties:
        result:
          additionalProperties:
            discriminator:
              mapping:
                cancelled: '#/components/schemas/CheckV1CancelledResult'
                error: '#/components/schemas/CheckV1ErrorResult'
                progress: '#/components/schemas/CheckV1ProgressResult'
                server_error: '#/components/schemas/ErrorResult'
                success: '#/components/schemas/CheckV1SuccessResult'
              propertyName: status
            oneOf:
            - $ref: '#/components/schemas/CheckV1ProgressResult'
            - $ref: '#/components/schemas/CheckV1ErrorResult'
            - $ref: '#/components/schemas/CheckV1CancelledResult'
            - $ref: '#/components/schemas/CheckV1SuccessResult'
            - $ref: '#/components/schemas/ErrorResult'
          description: Mapping of task IDs to their respective status and details.
          example:
            2fe8f214-1771-4900-9e7e-570f823bd359:
              presets:
             

# --- truncated at 32 KB (59 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/lalal-ai/refs/heads/main/openapi/lalal-ai-api-openapi.yml