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

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