{"openapi": "3.1.0", "info": {"title": "LALAL.AI API", "version": "1.1.0", "description": "\nThis is the LALAL.AI API.\n\nTo authenticate, provide your license key in the `X-License-Key` header of each request.\n\nTypical usage example:\n1) Upload a file using the '/upload/' endpoint to get a 'source_id'.\n2) Start a splitting task using the '/split/' endpoint with the obtained 'source_id' and desired presets.\n3) Check the status of your task using the '/check/' endpoint with the returned 'task_id'.\n4) Once the task is complete, download the processed files using urls from the '/check/' response.\n5) (If needed), you can delete the source file and all its resulting tracks from our servers, using the '/delete/' endpoint with the 'source_id'.\n\nNotes:\n\nYou can use the same source_id for concurrent splitting tasks.\n\nYou can check multiple task IDs in a single '/check/' request by providing a list of 'task_ids'.\n\n"}, "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": {"dereverb_enabled": false, "encoder_format": null, "enhanced_processing_enabled": false, "label": "enhanced", "multivocal": null, "splitter": "perseus", "stem": "vocals", "task_type": "split"}, "result": {"duration": 16, "tracks": [{"label": "vocals", "type": "stem", "url": "http://d.lalal.ai/2fe8f214-1771-4900-9e7e-570f823bd359/abcd1234/vocals"}, {"label": "no_vocals", "type": "back", "url": "http://d.lalal.ai/2fe8f214-1771-4900-9e7e-570f823bd359/abcd1234/no_vocals"}]}, "source_id": "ecb6c2c5-6263-48b9-80c9-f54248e30892", "status": "success"}, "8cad7e3d-a5a3-4e79-9463-59cd4da16977": {"error": "['The file has not been uploaded properly or has already been deleted. Please upload it again.']", "status": "server_error"}, "cb443802-e5be-44c2-bdd8-cb1d343c7d25": {"presets": {"dereverb_enabled": false, "encoder_format": null, "enhanced_processing_enabled": false, "label": "enhanced", "multivocal": null, "splitter": "perseus", "stem": "vocals", "task_type": "split"}, "progress": 42, "source_id": "9dec9880-12ad-4a7e-89af-c50c9380ec14", "status": "progress"}, "f4978ff5-8e0b-4fdc-913a-e350eeb16d31": {"error": {"code": "inference_error", "detail": "Unable to detect voice/vocals in the uploaded files", "id": "<error_id>"}, "presets": {"dereverb_enabled": false, "encoder_format": null, "enhanced_processing_enabled": false, "label": "enhanced", "multivocal": null, "splitter": "perseus", "stem": "vocals", "task_type": "split"}, "source_id": "7ab9e030-c472-4281-8b08-108c3bd019bf", "status": "error"}}, "title": "Result", "type": "object"}}, "required": ["result"], "title": "CheckV1Response", "type": "object"}, "CheckV1SuccessResult": {"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": "success", "default": "success", "title": "Status", "type": "string"}, "result": {"$ref": "#/components/schemas/SplitTracksResult"}}, "required": ["source_id", "presets", "result"], "title": "CheckV1SuccessResult", "type": "object"}, "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": "\nEnabling dereverb removes echo from the audio for clarity, which may slightly alter the voice.\n\nDisabling dereverb preserves the natural echo of the recording for authenticity.\nOnly for {'voice', 'vocals'} 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"}, "EncoderFormat": {"enum": ["mp3", "wav", "flac", "aac", "ogg"], "title": "EncoderFormat", "type": "string"}, "ErrorResult": {"properties": {"status": {"const": "server_error", "default": "server_error", "title": "Status", "type": "string"}, "error": {"description": "Error message describing why the cancellation failed", "examples": ["Permission denied", "Task is not in progress state", "Failed to extract information about task"], "title": "Error", "type": "string"}}, "required": ["error"], "title": "ErrorResult", "type": "object"}, "ExtractionLevel": {"enum": ["deep_extraction", "clear_cut"], "title": "ExtractionLevel", "type": "string"}, "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": "\nEnabling dereverb removes echo from the audio for clarity, which may slightly alter the voice.\n\nDisabling dereverb preserves the natural echo of the recording for authenticity.\nOnly for {'voice', 'vocals'} 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": "\nClear Cut: minimizes cross-bleeding between stems, resulting in a cleaner output, but may suppress finer details.\n\nDeep Extraction: captures more intricate details but increases the risk of cross-bleeding, which may lead to some overlap between stems.\n\nAndromeda splitter is not affected by this parameter and has its own fixed extraction behavior.\n"}}, "required": ["stem_list"], "title": "MultistemSplitterPresetsV1", "type": "object"}, "SplitTrack": {"properties": {"type": {"$ref": "#/components/schemas/SplitTrackType"}, "label": {"title": "Label", "type": "string"}, "url": {"title": "Url", "type": "string"}, "playlist_file": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Playlist File"}, "name": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Name"}, "size": {"anyOf": [{"type": "integer"}, {"type": "null"}], "title": "Size"}, "waveform": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Waveform"}}, "required": ["type", "label", "url"], "title": "SplitTrack", "type": "object"}, "SplitTrackType": {"enum": ["stem", "back"], "title": "SplitTrackType", "type": "string"}, "SplitTracksResult": {"properties": {"tracks": {"items": {"$ref": "#/components/schemas/SplitTrack"}, "title": "Tracks", "type": "array"}, "duration": {"title": "Duration", "type": "integer"}}, "required": ["tracks", "duration"], "title": "SplitTracksResult", "type": "object"}, "SplitterType": {"enum": ["andromeda", "perseus", "orion", "phoenix", "lyra", "lynx"], "title": "SplitterType", "type": "string"}, "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": "\nEnabling dereverb removes echo from the audio for clarity, which may slightly alter the voice.\n\nDisabling dereverb preserves the natural echo of the recording for authenticity.\nOnly for {'voice', 'vocals'} 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": "\nClear Cut: minimizes cross-bleeding between stems, resulting in a cleaner output, but may suppress finer details.\n\nDeep Extraction: captures more intricate details but increases the risk of cross-bleeding, which may lead to some overlap between stems.\n\nAndromeda splitter is not affected by this parameter and has its own fixed extraction behavior.\n"}}, "required": ["stem"], "title": "StemSeparatorSplitterPresetsV1", "type": "object"}, "TaskMetaError": {"properties": {"detail": {"title": "Detail", "type": "string"}, "code": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Code"}, "id": {"anyOf": [{"type": "string"}, {"type": "null"}], "title": "Id"}}, "required": ["detail"], "title": "TaskMetaError", "type": "object"}, "TonalityReference": {"enum": ["source_file", "voice_pack"], "title": "TonalityReference", "type": "string"}, "VoiceChangePresetsV1": {"properties": {"voice_pack_id": {"description": "\nID of the voice pack to be used for voice conversion.\n\nCould be one of the legal packs, provided by us.\n\nCould be a custom voice pack from voice cloner, trained by the user(see /voice_packs/list/).\n\n", "examples": ["<user_private_pack_uuid4>", "ALEX_KAYE", "STASIA_FAYE", "NICOLAAS_HAAS", "NIK_ZEL", "OLIA_CHEBO", "YVAR_DE_GROOT", "VETRANA"], "title": "Voice Pack Id", "type": "string"}, "accent": {"default": 1.0, "description": "\nFloat value, changing intensity in range from 0.0 to 1.0\n\n0.0 preserves the source file accent and 1.0 applies the voice pack accent.\n", "example": 0.33, "maximum": 1.0, "minimum": 0.0, "title": "Accent", "type": "number"}, "tonality_reference": {"allOf": [{"$ref": "#/components/schemas/TonalityReference"}], "default": "source_file", "description": "Tonality reference for voice conversion."}, "dereverb_enabled": {"default": false, "description": "\nEnabling dereverb removes echo from the audio for clarity, which may slightly alter the voice.\n\nDisabling dereverb preserves the natural echo of the recording for authenticity.\n", "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."}}, "required": ["voice_pack_id"], "title": "VoiceChangePresetsV1", "type": "object"}, "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": "\nEnabling dereverb removes echo from the audio for clarity, which may slightly alter the voice.\n\nDisabling dereverb preserves the natural echo of the recording for authenticity.\nOnly for {'voice', 'vocals'} 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"}, "CheckV1Request": {"properties": {"task_ids": {"examples": [["2fe8f214-1771-4900-9e7e-570f823bd359", "8cad7e3d-a5a3-4e79-9463-59cd4da16977", "cb443802-e5be-44c2-bdd8-cb1d343c7d25", "f4978ff5-8e0b-4fdc-913a-e350eeb16d31"]], "items": {"format": "uuid4", "type": "string"}, "maxItems": 200, "title": "Task Ids", "type": "array"}}, "required": ["task_ids"], "title": "CheckV1Request", "type": "object"}, "CancelResponse": {"properties": {"result": {"additionalProperties": {"discriminator": {"mapping": {"server_error": "#/components/schemas/ErrorResult", "success": "#/components/schemas/CancelSuccess"}, "propertyName": "status"}, "oneOf": [{"$ref": "#/components/schemas/CancelSuccess"}, {"$ref": "#/components/schemas/ErrorResult"}]}, "examples": [{"550e8400-e29b-41d4-a716-446655440000": {"status": "success"}, "6ba7b810-9dad-11d1-80b4-00c04fd430c8": {"error": "Task is not in progress state", "status": "server_error"}}], "title": "Result", "type": "object"}}, "required": ["result"], "title": "CancelResponse", "type": "object"}, "CancelSuccess": {"properties": {"status": {"const": "success", "default": "success", "title": "Status", "type": "string"}}, "title": "CancelSuccess", "type": "object"}, "CancelRequest": {"properties": {"task_ids": {"examples": [["550e8400-e29b-41d4-a716-446655440000", "6ba7b810-9dad-11d1-80b4-00c04fd430c8"]], "items": {"format": "uuid4", "type": "string"}, "title": "Task Ids", "type": "array"}}, "required": ["task_ids"], "title": "CancelRequest", "type": "object"}, "SuccessResponse": {"properties": {}, "title": "SuccessResponse", "type": "object"}, "DeleteParameters": {"properties": {"source_id": {"description": "ID of the source file.", "example": "550e8400-e29b-41d4-a716-446655440000", "format": "uuid4", "title": "Source Id", "type": "string"}}, "required": ["source_id"], "title": "DeleteParameters", "type": "object"}, "LimitsResponse": {"properties": {"minutes_left": {"description": "Number of processing minutes available to consume.", "example": 1234.5, "title": "Minutes Left", "type": "number"}}, "required": ["minutes_left"], "title": "LimitsResponse", "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"}, "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": "\nUnique uuid4 key to ensure idempotent requests.\n\nPrevents duplicate task execution with the same parameters.\n\nCan be reused until the task starts. Once processing begins, reusing this key will return an error.\n", "title": "Idempotency Key"}}, "required": ["source_id", "presets"], "title": "StemSeparatorSplitParameters", "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": "\nUnique uuid4 key to ensure idempotent requests.\n\nPrevents duplicate task execution with the same parameters.\n\nCan be reused until the task starts. Once processing begins, reusing this key will return an error.\n", "title": "Idempotency Key"}}, "required": ["source_id", "presets"], "title": "DemuserSplitParameters", "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": "\nUnique uuid4 key to ensure idempotent requests.\n\nPrevents duplicate task execution with the same parameters.\n\nCan be reused until the task starts. Once processing begins, reusing this key will return an error.\n", "title": "Idempotency Key"}}, "required": ["source_id", "presets"], "title": "VoiceCleanSplitParameters", "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": "\nUnique uuid4 key to ensure idempotent requests.\n\nPrevents duplicate task execution with the same parameters.\n\nCan be reused until the task starts. Once processing begins, reusing this key will return an error.\n", "title": "Idempotency Key"}}, "required": ["source_id", "presets"], "title": "MultistemSplitParameters", "type": "object"}, "BatchTasksResponse": {"properties": {"results": {"description": "List of task start results in the same order as input parameters.", "items": {"discriminator": {"mapping": {"error": "#/components/schemas/FailedTaskStart", "success": "#/components/schemas/SuccessfulTaskStart"}, "propertyName": "status"}, "oneOf": [{"$ref": "#/components/schemas/SuccessfulTaskStart"}, {"$ref": "#/components/schemas/FailedTaskStart"}]}, "title": "Results", "type": "array"}}, "required": ["results"], "title": "BatchTasksResponse", "type": "object"}, "FailedTaskStart": {"properties": {"status": {"const": "error", "default": "error", "title": "Status", "type": "string"}, "error": {"description": "Error message describing why the task failed to start.", "example": "Idempotency key has already been used.", "title": "Error", "type": "string"}, "code": {"anyOf": [{"$ref": "#/components/schemas/TaskStartErrorCodes"}, {"$ref": "#/components/schemas/LicenseErrorCodes"}], "description": "Error code.", "example": "idempotency_key_used", "title": "Code"}, "source_id": {"description": "Source file ID.", "example": "a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6", "title": "Source Id", "type": "string"}}, "required": ["error", "code", "source_id"], "title": "FailedTaskStart", "type": "object"}, "LicenseErrorCodes": {"enum": ["exceeded_duration", "batch_not_avaliable", "max_duration", "exceeded_size"], "title": "LicenseErrorCodes", "type": "string"}, "SuccessfulTaskStart": {"properties": {"status": {"const": "success", "default": "success", "title": "Status", "type": "string"}, "task_id": {"description": "ID of the created split task.", "example": "e1fc1d8f-502e-4de0-bf3b-b30543d11c77", "title": "Task Id", "type": "string"}, "source_id": {"description": "Source file ID.", "example": "a1b2c3d4-5e6f-7g8h-9i0j-k1l2m3n4o5p6", "title": "Source Id", "type": "string"}}, "required": ["task_id", "source_id"], "title": "SuccessfulTaskStart", "type": "object"}, "TaskStartErrorCodes": {"enum": ["idempotency_key_used", "internal_error"], "title": "TaskStartErrorCodes", "type": "string"}, "BatchStemSeparatorSplitParameters": {"properties": {"items": {"description": "List of split parameters to process.", "items": {"$ref": "#/components/schemas/StemSeparatorSplitParameters"}, "maxItems": 100, "minItems": 1, "title": "Items", "type": "array"}}, "required": ["items"], "title": "BatchStemSeparatorSplitParameters", "type": "object"}, "BatchDemuserSplitParameters": {"properties": {"items": {"description": "List of split parameters to process.", "items": {"$ref": "#/components/schemas/DemuserSplitParameters"}, "maxItems": 100, "minItems": 1, "title": "Items", "type": "array"}}, "required": ["items"], "title": "BatchDemuserSplitParameters", "type": "object"}, "BatchVoiceCleanSplitParameters": {"properties": {"items": {"description": "List of split parameters to process.", "items": {"$ref": "#/components/schemas/VoiceCleanSplitParameters"}, "maxItems": 100, "minItems": 1, "title": "Items", "type": "array"}}, "required": ["items"], "title": "BatchVoiceCleanSplitParameters", "type": "object"}, "TaskResponse": {"properties": {"task_id": {"description": "ID of the created task.", "example": "e1fc1d8f-502e-4de0-bf3b-b30543d11c77", "title": "Task Id", "type": "string"}}, "required": ["task_id"], "title": "TaskResponse", "type": "object"}, "VoiceChangeParameters": {"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/VoiceChangePresetsV1", "description": "Presets for converting the source file."}, "idempotency_key": {"anyOf": [{"format": "uuid4", "type": "string"}, {"type": "null"}], "default": null, "description": "\nUnique uuid4 key to ensure idempotent requests.\n\nPrevents duplicate task execution with the same parameters.\n\nCan be reused until the task starts. Once processing begins, reusing this key will return an error.\n", "title": "Idempotency Key"}}, "required": ["source_id", "presets"], "title": "VoiceChangeParameters", "type": "object"}, "VoicePackInfo": {"properties": {"name": {"description": "Name of the voice pack.", "example": "Professional Narrator Voice Pack", "title": "Name", "type": "string"}, "pack_id": {"description": "ID of the voice pack.", "example": "f5dc9452-9374-4418-9288-02825bbd0016", "title": "Pack Id", "type": "string"}, "created": {"description": "Creation timestamp of the voice pack.", "example": 1672531199, "title": "Created", "type": "integer"}}, "required": ["name", "pack_id", "created"], "title": "VoicePackInfo", "type": "object"}, "VoicePackListResponse": {"properties": {"packs": {"description": "List of voice packs available to the user.", "items": {"$ref": "#/components/schemas/VoicePackInfo"}, "title": "Packs", "type": "array"}}, "required": ["packs"], "title": "VoicePackListResponse", "type": "object"}}, "securitySchemes": {"ApiKeyHeaderAuth": {"type": "apiKey", "in": "header", "name": "X-License-Key"}}}, "servers": []}