The MVSEP API provides programmatic access to create a separation, return the results, get site information and control user capabilities.
To use this API, you need an API key. You are not logged in, please login to get your API token.
Examples in Python: https://github.com/ZFTurbo/MVSep-API-Examples
Webhooks can be setup here: Webhooks Page
Note that Premium users can request up to 10 concurrent jobs, while non-Premium users can only request 1 concurrent job.
To create separation you need to make a POST call to the following url:
https://mvsep.com/api/separation/create
Field | Type | Description |
---|---|---|
api_token | String | Your API key |
audiofile | Binary | Audiofile to be processed. Not required if url parameter is set |
url | String | Link to the audiofile. Not required if audiofile parameter is set |
remote_type | String | (optional) Remote type of the audiofile. Defaults to direct . Not required if audiofile parameter is set. Supported types are direct (Direct Download), mega (MEGA), drive (Google Drive), dropbox (Dropbox) |
sep_type | Integer | (optional) Separation Type, defaults to 11 (Demucs3 Model B (vocals, drums, bass, other)) |
add_opt1 | String | (optional) Separation Type first additional field |
add_opt2 | String | (optional) Separation Type second additional field |
add_opt3 | String | (optional) Separation Type third additional field |
output_format | Integer | (optional) output format, defaults to 0 (mp3 (320kbps)) |
is_demo | Boolean | (optional) should the separation be published to demo page, defaults to false |
Name | Value | Additional fields |
---|---|---|
Ensemble (vocals, instrum) | 26 | Key: add_opt1 Name: Output files Options:
Key: add_opt2 Name: Model Type Options:
|
Ensemble (vocals, instrum, bass, drums, other) | 28 | Key: add_opt1 Name: Output files Options:
Key: add_opt2 Name: Model Type Options:
|
Ensemble All-In (vocals, bass, drums, piano, guitar, lead/back vocals, other) | 30 | Key: add_opt1 Name: Output files Options:
Key: add_opt2 Name: Model Type Options:
|
Demucs4 HT (vocals, drums, bass, other) | 20 | Key: add_opt1 Name: Model type Options:
|
BS Roformer (vocals, instrumental) | 40 | Key: add_opt1 Name: Vocal model type Options:
|
MelBand Roformer (vocals, instrumental) | 48 | Key: add_opt1 Name: Vocal model type Options:
|
MDX23C (vocals, instrumental) | 25 | Key: add_opt1 Name: Vocal model type Options:
|
SCNet (vocals, instrumental) | 46 | Key: add_opt1 Name: Vocal model type Options:
|
MDX B (vocals, instrumental) | 23 | Key: add_opt1 Name: Vocal model type Options:
|
Ultimate Vocal Remover VR (vocals, music) | 9 | Key: add_opt1 Name: Model Type Options:
Key: add_opt2 Name: Agressiveness Options:
|
Demucs4 Vocals 2023 (vocals, instrum) | 27 | |
MDX-B Karaoke (lead/back vocals) | 12 | Key: add_opt1 Name: Karaoke model type Options:
|
MelBand Karaoke by viperx and aufr33 (lead/back vocals) | 49 | Key: add_opt1 Name: Karaoke model type Options:
|
MVSep Piano (piano, other) | 29 | Key: add_opt1 Name: Piano model type Options:
|
MVSep Guitar (guitar, other) | 31 | Key: add_opt1 Name: Guitar model type Options:
|
MVSep Bass (bass, other) | 41 | Key: add_opt1 Name: Bass model type Options:
Key: add_opt2 Name: How to extract Options:
Key: add_opt3 Name: Output files Options:
|
MVSep Drums (drums, other) | 44 | Key: add_opt1 Name: Drums model type Options:
Key: add_opt2 Name: How to extract Options:
Key: add_opt3 Name: Output files Options:
|
MVSep Strings (strings, other) | 52 | |
MVSep Wind (wind, other) | 54 | Key: add_opt1 Name: Wind model type Options:
Key: add_opt2 Name: How to extract Options:
Key: add_opt3 Name: Output files Options:
|
MVSep Organ (organ, other) | 58 | Key: add_opt1 Name: Organ model type Options:
|
Apollo Enhancers (by JusperLee and Lew) | 51 | Key: add_opt1 Name: Model type Options:
|
Reverb Removal (noreverb) | 22 | Key: add_opt1 Name: Model Type Options:
Key: add_opt2 Name: Preprocess Options:
|
MVSep Crowd removal (crowd, other) | 34 | Key: add_opt1 Name: Model type Options:
|
MVSep Demucs4HT DNR (dialog, sfx, music) | 24 | Key: add_opt1 Name: Model type Options:
|
BandIt Plus (speech, music, effects) | 36 | |
BandIt v2 (speech, music, effects) | 45 | Key: add_opt1 Name: Model Type Options:
|
MVSep DnR v3 (speech, music, sfx) | 56 | Key: add_opt1 Name: Model type Options:
Key: add_opt2 Name: How to extract Options:
Key: add_opt3 Name: Output files Options:
|
DrumSep (4-6 stems: kick, snare, cymbals, toms, ride, hh, crash) | 37 | Key: add_opt1 Name: Model Type Options:
Key: add_opt2 Name: Preprocess Options:
|
DeNoise by aufr33 | 47 | Key: add_opt1 Name: Model type Options:
|
Whisper (extract text from audio) | 39 | Key: add_opt1 Name: Model type Options:
|
Medley Vox (Multi-singer separation) | 53 | Key: add_opt1 Name: Model type Options:
|
MVSep Multichannel BS (vocals, instrumental) | 43 | Key: add_opt1 Name: Model Type Options:
|
MVSep Male/Female separation | 57 | Key: add_opt1 Name: Model type Options:
Key: add_opt2 Name: How to extract Options:
|
MDX A/B (vocals, drums, bass, other) | 7 | Key: add_opt1 Name: Vocal model type Options:
|
Demucs3 Model (vocals, drums, bass, other) | 10 | Key: add_opt1 Name: Model type Options:
|
Vit Large 23 (vocals, instrum) | 33 | Key: add_opt1 Name: Model type Options:
|
UVRv5 Demucs (vocals, music) | 17 | Key: add_opt1 Name: Model Type Options:
|
MVSep DNR (music, sfx, speech) | 18 | |
MVSep Vocal Model (vocals, music) | 19 | |
Demucs2 (vocals, drums, bass, other) | 13 | |
Danna Sep (vocals, drums, bass, other) | 15 | |
Byte Dance (vocals, drums, bass, other) | 16 | |
MVSep MelBand Roformer (vocals, instrum) | 35 | |
spleeter | 0 | Key: add_opt1 Name: Model type Options:
|
UnMix | 3 | Key: add_opt1 Name: Model type Options:
|
Zero Shot (Query Based) (Low quality) | 14 | Key: add_opt1 Name: Model Type Options:
|
LarsNet (kick, snare, cymbals, toms, hihat) | 38 | Key: add_opt1 Name: Model type Options:
|
MVSep MultiSpeaker (MDX23C) | 42 | Key: add_opt1 Name: Model Type Options:
|
Aspiration (by Sucial) | 50 | Key: add_opt1 Name: Model type Options:
|
Phantom Centre extraction (by wesleyr36) | 55 |
Name | Value |
---|---|
mp3 (320 kbps) | 0 |
wav (uncompressed) | 1 |
flac (lossless) | 2 |
m4a (lossy) | 3 |
curl --location --request POST 'https://mvsep.com/api/separation/create'
--form 'audiofile=@"/path/to/file.mp3"'
--form 'api_token="<Your API Token>"'
--form 'sep_type="9"'
--form 'add_opt1="0"'
--form 'add_opt2="1"'
--form 'output_format="1"'
--form 'is_demo="1"'
Key | Value |
---|---|
success |
|
data | Holds extra information depending on the success key |
data -> link | Shows link to "GET RESULT" URL of created job (only shown when success is true ) |
data -> hash | Shows created job hash (only shown when success is true ) |
data -> message | Shows the description of an error (only shown when success is false ) |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Some parameters are missing or invalid. This error appears when you don't pass every mandatory parameters or pass invalid parameters. |
401 |
Unknown or invalid api_token . This error appears if you use an unknown API key
|
To get the separation result, you need to make a GET call to the following url:
https://mvsep.com/api/separation/get
Field | Type | Description |
---|---|---|
hash | String | Separation Hash |
mirror | Integer | (optional) Uses another mirror if set to 1, defaults to 0. Requires api_token and 1 credit if set to 1. |
api_token | string | (optional) API key of the user. Required if mirror parameter is set to 1. |
curl --location --request GET 'https://mvsep.com/api/separation/get?hash=20230327071601-0e3e5c6c85-13-dimensions.mp3'
Key | Value |
---|---|
success |
|
status |
|
data | Holds extra information depending on the status key |
data -> queue_count | Shows unprocessed jobs count in user's priority (only shown when status is waiting or distributing ) |
data -> current_order | Shows the order of user's job (only shown when status is waiting or distributing ) |
data -> message | Shows the description of status (shown on all statuses, shows error reason instead when status is failed ) |
data -> algorithm | Shows the used algorithm on job (only shown when status is done ) |
data -> algorithm_description | Shows the used algorithm details on job (only shown when status is done ) |
data -> output_format | Shows the output format of job (only shown when status is done ) |
data -> tags | Shows the audio meta tags (only shown when status is done ) |
data -> input_file | Shows the input audio download details (only shown when status is done ) |
data -> files | Shows the output audios download details (only shown when status is done ) |
data -> date | Shows the job processing date (only shown when status is done ) |
data -> finished_chunks | Shows the number of finished parts of a large job (only shown when status is distributing ) |
data -> all_chunks | Shows the number of all parts of a large job (only shown when status is distributing ) |
To get the result of remote job, you need to make a GET call to the following url:
https://mvsep.com/api/separation/get-remote
Field | Type | Description |
---|---|---|
hash | String | Separation Hash |
curl --location --request GET 'https://mvsep.com/api/separation/get-remote?hash=n2AwBjy4KsFZfqqR'
Key | Value |
---|---|
success |
|
status |
|
data | Holds extra information depending on the status key |
data -> queue_count | Shows unprocessed jobs count in user's priority (only shown when status is waiting ) |
data -> current_order | Shows the order of user's job (only shown when status is waiting ) |
data -> message | Shows the description of status (only when status is failed ) |
data -> link | Shows link to "GET RESULT" URL of created job (only shown when status is done ) |
data -> hash | Hash of the separation (only shown when status is done ) |
To get the detailed data about separation types, you need to make a GET call to the following url:
https://mvsep.com/api/app/algorithms
curl --location --request GET 'https://mvsep.com/api/app/algorithms'
Returns data as an array:
Key | Value |
---|---|
render_id | Separation type value (ID) |
name | The name of the separation type |
algorithm_group_id |
The group where separation type belongs:
|
orientation |
For whom does this separation type intended:
|
order_id | The order of the separation type |
price_coefficient |
Used to calculate how many credits do job take from premium user. Uses this formula : floor(<audiofile duration in seconds> * price_coefficient / 60)?:1
|
usage | Shows monthly usage count of separation type |
rating | Shows monthly usage rating of separation type as array:
|
algorithm_fields | Contains information about additional fields of the separation type |
algorithm_fields -> name |
Shows which additional field of the separation type:
|
algorithm_fields -> text | Display name of the additional field of the separation type. |
algorithm_fields -> options | JSON Encoded key-value chains of additional field |
algorithm_fields -> default_key | Default value of the additional field. One of the keys of <code>algorithm_fields -> options</code> |
algorithm_descriptions | Contains information about descriptions of the separation type |
algorithm_descriptions -> short_description | Small description of the separation type that does not use HTML. |
algorithm_descriptions -> long_description | Detailed description of the separation type that uses HTML. |
algorithm_descriptions -> lang | Specified language code of the description. |
To get information about latest news about MVSEP, you need to make a GET call to the following url:
https://mvsep.com/api/app/news
Field | Type | Description |
---|---|---|
lang | String | (optional) 2-letter language code (en, ru) |
start | Integer | (optional) Starting point offset, defaults to 0 (i.e. start from latest) |
limit | Integer | (optional) Maximum amount of results returned, defaults to 10, maximum is 20. |
curl --location --request GET 'https://mvsep.com/api/app/news?lang=en&start=2&limit=1'
Returns data as an array:
Key | Value |
---|---|
title | Title of the news |
lang | Title of the news |
text | Full description of the news |
created_at | Date of the news |
To get site queue information, you need to make a GET call to the following url:
https://mvsep.com/api/app/queue
Field | Type | Description |
---|---|---|
api_token | String | (optional) API key of the user |
curl --location --request GET 'https://mvsep.com/api/app/queue'
Key | Value |
---|---|
queue |
Contains array of current queues for different plans:
|
plan |
Contains current queue for current plan (add api_token to request for registered/premium plan):
|
To get information about demo separations, you need to make a GET call to the following url:
https://mvsep.com/api/app/demo
Field | Type | Description |
---|---|---|
start | Integer | (optional) Starting point offset, defaults to 0 (i.e. start from latest) |
limit | Integer | (optional) Maximum amount of results returned, defaults to 10, maximum is 20. |
curl --location --request GET 'https://mvsep.com/api/app/demo?start=0&limit=2'
Returns data as an array:
Key | Value |
---|---|
hash | Separation Hash |
date | Date of the separation |
input_audio | Input audio URL |
size | Input audio size |
algorithm | Contains basic information about used separation type (refer to the GET SEPARATION TYPES tab for information about returned parameters) |
To authenticate user and get user's API key, you need to make a POST call to the following url:
https://mvsep.com/api/app/login
Field | Type | Description |
---|---|---|
String | Email of the user | |
password | String | Password of the user |
curl --location --request POST 'https://mvsep.com/api/app/login' --form 'email="<Email of the user>"' --form 'password="<Password of the user>"'
Key | Value |
---|---|
success |
|
data | Contains information when credentials are valid |
data -> name | Name of the user |
data -> email | Email of the user |
data -> api_token | The API key of the user. Make sure to store it in secure storage and use for subsequent operations. |
data -> premium_minutes | Credits left for the user |
data -> premium_enabled |
Whether user allowed credits to be spent.
|
data -> long_filenames_enabled |
Whether user wants extra information in filenames:
|
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Incorrect credentials specified |
To register user to the MVSEP site, you need to make a POST call to the following url:
https://mvsep.com/api/app/register
Field | Type | Description |
---|---|---|
name | String | Name of the user |
String | Email of the user | |
password | String | Password of the user |
password_confirmation | String | Repeat the password of the user |
curl --location --request GET 'https://mvsep.com/api/app/register' --form 'name="user"'
--form 'email="asdf@example.com"'
--form 'password="ASDFQWEr123"'
--form 'password_confirmation="ASDFQWEr123"'
Key | Value |
---|---|
success |
|
message | Occurs when the form is valid |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Form is invalid |
To get user information, you need to make a GET call to the following url:
https://mvsep.com/api/app/user
Field | Type | Description |
---|---|---|
api_token | String | API key of the user |
curl --location --request GET 'https://mvsep.com/api/app/user?api_token=<Your API Token>'
Key | Value |
---|---|
success |
|
data | Contains information when credentials are valid |
data -> name | Name of the user |
data -> email | Email of the user |
data -> api_token | The API key of the user. Make sure to store it in secure storage and use for subsequent operations. |
data -> premium_minutes | Credits left for the user |
data -> premium_enabled |
Whether user allowed credits to be spent.
|
data -> long_filenames_enabled |
Whether user wants extra information in filenames:
|
data -> current_queue | Shows ongoing separations for the user |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Invalid API key |
To get basic information separation history of the user, you need to make a GET call to the following url:
https://mvsep.com/api/app/separation_history
Field | Type | Description |
---|---|---|
api_token | String | API key of the user |
start | Integer | (optional) Starting point offset, defaults to 0 (i.e. start from latest) |
limit | Integer | (optional) Maximum amount of results returned, defaults to 10, maximum is 20. |
curl --location --request GET 'https://mvsep.com/api/app/separation_history?api_token=<Your API Token>&start=1&limit=2'
Key | Value |
---|---|
success |
|
data | Contains basic information array about previous separations |
data -> hash | Separation Hash |
data -> job_exists | Contains basic information array about previous separations |
data -> credits | How many credits were used for the job, null if separation does not exist |
data -> time_left | Approximate time left until job is deleted |
data -> algorithm | Contains basic information about used separation type (refer to the GET SEPARATION TYPES tab for information about returned parameters) |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Invalid API key |
To enable premium usage for the user, you need to make a POST call to the following url:
https://mvsep.com/api/app/enable_premium
Field | Type | Description |
---|---|---|
api_token | String | API key of the user |
curl --location --request POST 'https://mvsep.com/api/app/enable_premium' --form 'api_token="<Your API Token>"'
Key | Value |
---|---|
success |
|
message | Informs about the status of the operation |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Invalid API key |
To disable premium usage for the user, you need to make a POST call to the following url:
https://mvsep.com/api/app/disable_premium
Field | Type | Description |
---|---|---|
api_token | String | API key of the user |
curl --location --request POST 'https://mvsep.com/api/app/disable_premium' --form 'api_token="<Your API Token>"'
Key | Value |
---|---|
success |
|
message | Informs about the status of the operation |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Invalid API key |
To enable long filenames for the user, you need to make a POST call to the following url:
https://mvsep.com/api/app/enable_long_filenames
Field | Type | Description |
---|---|---|
api_token | String | API key of the user |
curl --location --request POST 'https://mvsep.com/api/app/enable_long_filenames' --form 'api_token="<Your API Token>"'
Key | Value |
---|---|
success |
|
message | Informs about the status of the operation |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Invalid API key |
To disable long filenames for the user, you need to make a POST call to the following url:
https://mvsep.com/api/app/disable_long_filenames
Field | Type | Description |
---|---|---|
api_token | String | API key of the user |
curl --location --request POST 'https://mvsep.com/api/app/disable_long_filenames' --form 'api_token="<Your API Token>"'
Key | Value |
---|---|
success |
|
message | Informs about the status of the operation |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Invalid API key |
To get information about Quality Checker queue entries, you need to make a GET call to the following url:
https://mvsep.com/api/quality_checker/queue
Field | Type | Description |
---|---|---|
start | Integer | (optional) Starting point offset, defaults to 0 (i.e. start from latest) |
limit | Integer | (optional) Maximum amount of results returned, defaults to 10, maximum is 20. |
curl --location --request GET 'https://mvsep.com/api/quality_checker/queue?&start=1&limit=2'
Returns data as an array:
Key | Value |
---|---|
id | Identification number of entry |
dataset_type | Dataset Type chosen when adding the entry / Leaderboard type
|
date | Created date of the entry |
algo_name | Name of the used separation type/algorithm |
main_text | Description of the used separation type/algorithm |
proc | Status of the processing
|
proc_remote_date | Timestamp of processing date |
msg | Returns "OK" if successful, otherwise shows error message |
metrics | Information about entry metrics |
sdr_* (wildcard) | SDR of the corresponding stems |
dataset_name | Name of the dataset |
To get information about Quality Checker leaderboards, you need to make a GET call to the following url:
https://mvsep.com/api/quality_checker/leaderboard
Field | Type | Description |
---|---|---|
dataset_type | String | Dataset Type, defaults to 0 if not given
|
start | Integer | (optional) Starting point offset, defaults to 0 (i.e. start from latest) |
limit | Integer | (optional) Maximum amount of results returned, defaults to 10, maximum is 20. |
algo_name_filter | String | Filters Separation Type/Algorithm names by given text |
sort | String | Sort by given SDR of the stem. You can get list of sortable values for given dataset type from sortables key in response |
curl --location --request GET 'https://mvsep.com/api/quality_checker/leaderboard?&start=1&limit=2&algo_name_filter=MVSep'
Key | Value |
---|---|
data | Contains array of Quality Checker entries. Refer to GET QUEUE response from Quality Checker Section for more information |
dataset_type | Used dataset type key |
sortables | Keys that can be used to sort used dataset type by given stem in sequential order. |
sort | Used sorting key from sortable. |
To create Quality Checker entry, you need to make a POST call to the following url:
https://mvsep.com/api/quality_checker/add
Field | Type | Description |
---|---|---|
api_token | String | (required) Your API key |
zipfile | Binary | (required) Zip file to be processed |
algo_name | String | (required) Name of the algorithm |
main_text | String | (required) Description of the algorithm |
dataset_type | String | Dataset type. Defaults to 0 .
|
password | String | (required) Password to delete algorithm |
ensemble | integer | 0 - algorithm is not ensemble. 1 - algorithm is ensemble. |
curl --location 'https://mvsep.com/api/quality_checker/add' --form 'zipfile=@"/path/to/zipfile"' --form 'algo_name="Test Algorithm Name"' --form 'main_text="Test Algorithm Description"' --form 'dataset_type="2"' --form 'ensemble="1"' --form 'password="test"'
Key | Value |
---|---|
success |
|
data | Contains information about entry |
data -> id | ID of the entry. |
data -> link | Link to the entry. |
The MVSEP API uses the following error codes:
Error Code | Meaning |
---|---|
400 | Form is invalid |
401 |
Unknown or invalid api_token . This error appears if you use an unknown API key
|
To get information about Quality Checker queue entry by id, you need to make a GET call to the following url:
https://mvsep.com/api/quality_checker/entry
Field | Type | Description |
---|---|---|
id | Integer | (required) ID of the entry |
curl --location --request GET 'https://mvsep.com/api/quality_checker/entry?id=7675'
To delete Quality Checker queue entry by id and password, you need to make a GET call to the following url:
https://mvsep.com/api/quality_checker/delete
Field | Type | Description |
---|---|---|
id | Integer | (required) ID of the entry |
password | String | (required) Used password for the entry |
curl --location 'https://mvsep.com/api/quality_checker/delete' --form 'id="7720"' --form 'password="test"'
Key | Value |
---|---|
success |
|
data->message | Shows whether entry was deleted |
turbo@mvsep.com