LALAL.AI website screenshot

LALAL.AI

LALAL.AI is an AI-powered audio separation and voice technology platform operated by OmniSale GmbH. It uses proprietary neural networks (Andromeda, Perseus, Orion, Phoenix, Lyra, Lynx) to isolate vocals, instruments, drums, bass, guitars, piano, synth, strings, and wind from mixed audio, clean voice recordings, and clone or convert voices with consent. The company ships a web app, native desktop, iOS and Android apps, a VST plug-in for DAWs, and a production REST API (v1) for embedding stem separation and voice cloning into third-party SaaS, media, and post-production pipelines.

1 APIs 20 Features
AIArtificial IntelligenceAudioAudio ProcessingStem SeparationVocal RemovalVoice CleaningVoice CloningVoice ChangerMusicMachine LearningDSP

APIs

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, L...

Collections

Pricing Plans

Lalal Ai Plans Pricing

9 plans

PLANS

Rate Limits

Lalal Ai Rate Limits

0 limits

RATE LIMITS

FinOps

Features

Six proprietary neural networks: Andromeda (6th-gen, 2025), Perseus (transformer), Orion, Phoenix, Lyra (dereverb / demuser), and Lynx
Stem separation for vocals, drum, bass, piano, electric guitar, acoustic guitar, synthesizer, strings, and wind instruments
Single-task and batch (multi-file) variants for stem_separator, demuser, and voice_clean endpoints
Multistem endpoint extracts up to six stems in a single request
Demuser endpoint isolates music from non-music components
Voice Clean endpoint removes background music and ambient noise from spoken-word audio with 3-level noise cancelling
Change Voice endpoint applies legal artist Voice Packs (ALEX_KAYE, STASIA_FAYE, NICOLAAS_HAAS, NIK_ZEL, OLIA_CHEBO, YVAR_DE_GROOT, VETRANA) or user-trained custom Voice Packs from the Voice Cloner
Voice Packs list endpoint returns user-trained packs with previews, language metadata, and ready-to-use state
Dereverb option for vocals/voice stems plus accent intensity, pitch shifting, and tonality reference controls for voice conversion
Lead/back vocal splitter via the multivocal parameter on stem separation
Asynchronous job model — POST returns task_id, poll /check/ for progress (success, progress, error, cancelled) and signed download URLs for stem_track and back_track
Cancel individual tasks or all running tasks; delete uploaded source files
Limits endpoint returns remaining processing minutes and the plan tier
Output formats MP3, WAV, FLAC, AAC, OGG (defaults to source format)
Extraction levels Clear Cut and Deep Extraction on Perseus
File upload via single-PUT or multipart for large files (up to 10 GB with valid license)
24-hour retention on uploaded source files
Official OpenAPI 3.1 spec served at /api/v1/openapi.json with Swagger-style explorer at /api/v1/docs/
Official Python example client maintained at github.com/OmniSaleGmbH/lalalai
API access included on Pro and higher plans, with custom enterprise pricing available

Semantic Vocabularies

Lalal Ai Context

35 classes · 5 properties

JSON-LD

API Governance Rules

LALAL.AI API Rules

5 rules · 2 errors 2 warnings 1 info

SPECTRAL

Example Payloads

Lalal Ai Check Example

2 fields

EXAMPLE

Lalal Ai Multistem Example

2 fields

EXAMPLE

Lalal Ai Upload Example

2 fields

EXAMPLE

Resources

🌐
Portal
Portal
🔗
Documentation
Documentation
🔗
Documentation
Documentation
🚀
GettingStarted
GettingStarted
💰
Pricing
Pricing
📰
Blog
Blog
📄
ChangeLog
ChangeLog
💬
Support
Support
📜
TermsOfService
TermsOfService
📜
PrivacyPolicy
PrivacyPolicy
👥
GitHubOrganization
GitHubOrganization
👥
GitHubRepository
GitHubRepository
🔗
ContactUs
ContactUs
📦
SDKs
SDKs
🔗
Plans
Plans
🔗
RateLimits
RateLimits
🔗
FinOps
FinOps

Sources

Raw ↑
opencollection: 1.0.0
info:
  name: LALAL.AI API
  version: 1.1.0
items:
- info:
    name: Common
    type: folder
  items:
  - info:
      name: Upload a file to the server.
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/upload/
      headers:
      - name: Content-Disposition
        value: attachment; filename=song.mp3
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
  - info:
      name: Check the status of a task by id
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/check/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
  - info:
      name: Cancel tasks by id
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/cancel/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: Cancel tasks by id
  - info:
      name: Cancel all user tasks in progress state
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/cancel/all/
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: Cancel all user tasks in progress state
  - info:
      name: Delete source file and resulting tracks from storage.
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/delete/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
  - info:
      name: Get number of processing minutes available to consume.
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/limits/minutes_left/
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: Get number of processing minutes available to consume.
- info:
    name: Stem Separation
    type: folder
  items:
  - info:
      name: Split a file into stems using the stem separator presets
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/split/stem_separator/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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\":\"vocal"
  - info:
      name: Clean voice from background music
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/split/demuser/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
  - info:
      name: Clean voice from background noise
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/split/voice_clean/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
  - info:
      name: Split a file into multiple stems in one request (multistem feature)
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/split/multistem/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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"
- info:
    name: Batch Stem Separation
    type: folder
  items:
  - info:
      name: Split multiple files into stems using the stem separator presets
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/split/batch/stem_separator/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
  - info:
      name: Clean voice from background music for multiple files
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/split/batch/demuser/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
  - info:
      name: Clean voice from background noise for multiple files
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/split/batch/voice_clean/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
- info:
    name: Voice Change
    type: folder
  items:
  - info:
      name: Changes voice in the audio file using voice pack
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/change_voice/
      body:
        type: json
        data: '{}'
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: "\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    "
  - info:
      name: Lists voice packs available to the user
      type: http
    http:
      method: POST
      url: https://www.lalal.ai/api/v1/voice_packs/list/
      auth:
        type: apikey
        key: X-License-Key
        value: '{{X-License-Key}}'
        placement: header
    docs: Helps to find pack_id for /change_voice/ endpoint.
bundled: true