Skip to main content

Tasks

Think of a Task as a single request lifecycle: from uploading an asset, to model processing, to retrieving results.

Each Task contains an array of Task operations or targets, that target the audio processing operation to a specific model or model variant. This enables you to create a single Task that will process the same content to produce multiple Source separations or other audio processes such as Transcription or Alignment. Tasks are limited to a maximum of 10 targets per Task Item, ensuring fast and reliable processing of your media.

The Tasks API is designed to unify our existing job-style endpoints into something simpler and more flexible. With just three core calls, you can cover most use cases.

AudioShake Dashboard

With the introduction of Tasks we are also introducing the AudioShake Dashboard. This is the self-service portal for working with the AudioShake API platform.

From the dashboard you can:

  • Create and manage your account
  • Generate and manage API keys
  • Configure webhooks
  • Purchase credits to run sound separation and related APIs

Create an account here: https://dashboard.audioshake.ai

Base URL Endpoint

All URLs referenced in the documentation have the following base: Production URL https://api.audioshake.ai

// Example calling the tasks endpoint:
https://**api.audioshake.ai**/tasks

The AudioShake API is served over HTTPS. To ensure data privacy, unencrypted HTTP is not supported.

🔐 Authentication

All of the new Tasks endpoints are authenticated via API key as provied in the AudioShake Dashboard. Note: The other existing API endpoints will continue to use the JWT Tokens.

  • Generate your key in the AudioShake Dashboard → Settings.
  • Add it to every request using the x-api-key header.
  • API keys are securely generated and can be revoked at any time.
GET /tasks
Host: api.audioshake.ai
x-api-key: <AUDIOSHAKE_API_KEY>

Create a task

  • Method/Path: POST /tasks
  • Auth: x-api-key: <AUDIOSHAKE_API_KEY>

Purpose: Create a task to process a media URL with up to 10 target operations.

Request

Headers

x-api-key: <AUDIOSHAKE_API_KEY>
Content-Type: application/json

Body shape

FieldTypeRequiredConstraintsDescription
urlstringyesformat: uriPublicly reachable HTTPS URL to the source audio/video.
callbackUrlstringnoformat: uriOptional webhook URL invoked on task/target state changes.
targetstarget[]yesminItems: 1; maxItems: 10List of operations to run. 1–10 items.

Target object

FieldTypeRequiredConstraintsDescription
modelstringyesenum: instrumental, drums, vocals, bass, other, guitar, other-x-guitar, piano, wind, strings, dialogue, music_removal, music_fx, music_detection, multi_voice, transcription, alignmentTarget model identifier.
formatsstring[]yesAudio: wav, mp3, mp4, aac, flac, aiff, pcm
Video: mp4, mov
Text: txt, json
Desired output formats.
residualbooleannodefault: falseInclude residual audio if supported by the model.
variantstringnomulti_voice: two_speaker, n_speaker
Vocals, Instrumental: high_quality
Optional variants can be selected for multi_voice, vocals, and instrumental.
languagestringnodefault: en
Supported Languages
Applies to language hint where applicable. Adding the language attribute to your API call will help improve transcription and alignment performance.

Example Request Body:

{
"url": "<https://example.com/demos-source/surfing.mp4>",
"callbackUrl": "$WEBHOOK_CALLBACK_URL",
"targets": [
{
"model": "music_removal",
"formats": [
"mp4"
]
},
{
"model": "multi_voice",
"formats": [
"wav"
],
"variant": "two_speaker"
},
{
"model": "vocals",
"formats": [
"wav"
],
"variant": "high_quality"
}
]
}

cURL

curl -sS -X POST "https://api.audioshake.ai/tasks" \\
-H "x-api-key: $AUDIOSHAKE_API_KEY" \\
-H "Content-Type: application/json" \\
-d '{
"url": "<https://example.com/demos-source/surfing.mp4>",
"callbackUrl": "$WEBHOOK_CALLBACK_URL",
"targets": [
{
"model": "music_removal",
"formats": [
"mp4"
]
},
{
"model": "multi_voice",
"formats": [
"wav"
],
"variant": "two_speaker",
},
{
"model": "vocals",
"formats": [
"wav"
],
"variant": "high_quality",
}
]
}'

Responses

200 OK

{
"id": "cmfy9u6m0004rowxc8zeei57j",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"clientId": "4448d4a8-1051-7054-a06b-5904d1c20b62",
"targets": [
{
"id": "cmfy9u6m0004sowxcfqvotxxt",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"url": "<https://example.com/demos-source/surfing.mp4>",
"model": "music_removal",
"taskId": "cmfy9u6m0004rowxc8zeei57j",
"status": "processing",
"formats": [
"mp4"
],
"output": [],
"cost": 12,
"error": null,
"duration": null,
"variant": "",
"residual": false,
"language": "en"
},
{
"id": "cmfy9u6m0004towxc9ej8sljy",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"url": "<https://example.com/demos-source/surfing.mp4>",
"model": "multi_voice",
"taskId": "cmfy9u6m0004rowxc8zeei57j",
"status": "processing",
"formats": [
"wav"
],
"output": [],
"cost": 6,
"error": null,
"duration": null,
"variant": "two_speaker",
"residual": false,
"language": "en"
},
{
"id": "cmfy9u6m0004vowxc84gyftt3",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"url": "<https://example.com/demos-source/surfing.mp4>",
"model": "vocals",
"taskId": "cmfy9u6m0004rowxc8zeei57j",
"status": "processing",
"formats": [
"wav"
],
"output": [],
"cost": 6,
"error": null,
"duration": null,
"variant": "high_quality",
"residual": false,
"language": "en"
}
]
}


List tasks

  • Method/Path: GET /tasks
  • Auth: x-api-key: <AUDIOSHAKE_API_KEY>

Purpose: Return a list of tasks.

Request

Headers

x-api-key: <AUDIOSHAKE_API_KEY>
Content-Type: application/json

NameInTypeRequiredDescription
clientIdpathstringyesClient identifier.
skippathintnoStart paging param
takepathintnoLimit paging param

cURL


curl -sS -X GET 'https://api-staging.audioshake.ai/tasks?skip=1&take=1&clientId=4448d4a8-1051-7054-a06b-5904d1c20b62' \\
--header 'Accept: application/json' \\
--header 'x-api-key: $AUDIOSHAKE_API_KEY'

Responses

200 OK

[
{
"id": "cmfy9u6m0004rowxc8zeei57j",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"clientId": "4448d4a8-1051-7054-a06b-5904d1c20b62",
"targets": [
{
"id": "cmfy9u6m0004sowxcfqvotxxt",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"url": "<https://example.com/demos-source/surfing.mp4>",
"model": "music_removal",
"taskId": "cmfy9u6m0004rowxc8zeei57j",
"status": "processing",
"formats": [
"mp4"
],
"output": [],
"cost": 12,
"error": null,
"duration": null,
"variant": "",
"residual": false,
"language": "en"
},

/* ... truncatied for brevity ... */
{
"id": "cmfy9u6m0004zowxcypyhk5j0",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"url": "<https://example.com/demos-source/surfing.mp4>",
"model": "strings",
"taskId": "cmfy9u6m0004rowxc8zeei57j",
"status": "processing",
"formats": [
"wav"
],
"output": [],
"cost": 4,
"error": null,
"duration": null,
"variant": "",
"residual": false,
"language": "en"
},
{
"id": "cmfy9u6m00050owxc9fl6vkgc",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"url": "<https://example.com/demos-source/surfing.mp4>",
"model": "wind",
"taskId": "cmfy9u6m0004rowxc8zeei57j",
"status": "processing",
"formats": [
"wav"
],
"output": [],
"cost": 4,
"error": null,
"duration": null,
"variant": "",
"residual": false,
"language": "en"
}
]
},

{
"id": "cmfvvboma002wowxc2luavr6u",
"createdAt": "2025-09-23T01:20:09.822Z",
"updatedAt": "2025-09-23T01:20:09.822Z",
"clientId": "4448d4a8-1051-7054-a06b-5904d1c20b62",
"targets": [
{
"id": "cmfvvboma002xowxcqoko1oaw",
"createdAt": "2025-09-23T01:20:09.822Z",
"updatedAt": "2025-09-23T01:20:44.832Z",
"url": "<https://example.com/demos-source/surfing.mp4>",
"model": "dialogue",
"taskId": "cmfvvboma002wowxc2luavr6u",
"status": "completed",
"formats": [
"mp4"
],
"output": [
{
"name": "dialogue",
"format": "mp4",
"type": "video/mp4",
"link": "<https://dysdhgakrxa0s.cloudfront.net/staging/4448d4a8-1051-7054-a06b-5904d1c20b62/cmfvvboma002wowxc2luavr6u/targets/cmfvvboma002xowxcqoko1oaw/output/dialogue.mp4>"
}
],
"cost": 6,
"error": null,
"duration": 183.12498474121094,
"variant": "",
"residual": false,
"language": "en"
}
]
}

/* ... truncatied for brevity ... */
]


Get a task by id

  • Method/Path: GET /tasks/{id}
  • Auth: x-api-key: <AUDIOSHAKE_API_KEY>

Request

Headers

x-api-key: <AUDIOSHAKE_API_KEY>
Content-Type: application/json

NameInTypeRequiredDescription
idpathstringyesUnique identifier of the task

cURL

curl -sS -X GET "https://api.audioshake.ai/tasks/{id}" \\
-H "x-api-key: $AUDIOSHAKE_API_KEY"

Responses

200 OK

{
"id": "cmfy9u6m0004rowxc8zeei57j",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:41:59.851Z",
"clientId": "4448d4a8-1051-7054-a06b-5904d1c20b62",
"targets": [
{
"id": "cmfy9u6m0004sowxcfqvotxxt",
"createdAt": "2025-09-24T17:41:59.851Z",
"updatedAt": "2025-09-24T17:49:38.781Z",
"url": "<https://example.com/demos-source/surfing.mp4>",
"model": "music_removal",
"taskId": "cmfy9u6m0004rowxc8zeei57j",
"status": "completed",
"formats": [
"mp4"
],
"output": [
{
"name": "music_removal",
"format": "mp4",
"type": "video/mp4",
"link": "<https://dysdhgakrxa0s.cloudfront.net/staging/4448d4a8-1051-7054-a06b-5904d1c20b62/cmfy9u6m0004rowxc8zeei57j/targets/cmfy9u6m0004sowxcfqvotxxt/output/music_removal.mp4>"
}
],
"cost": 12,
"error": null,
"duration": 183.12498474121094,
"variant": "",
"residual": false,
"language": "en"
},
/* ... Additional Task Items Trunciated for brevity */
]
}

404 Resource not found

    {
"statusCode": 404,
"error": "Not Found",
"message": "Cannot find task"
}


Task statistics

  • Method/Path: GET /tasks/statistics
  • Auth: x-api-key: <AUDIOSHAKE_API_KEY>
  • Name: usage or distribution

Purpose: Aggregated task statistics (field set to be finalized).

Request

Headers

x-api-key: <AUDIOSHAKE_API_KEY>
Content-Type: application/json

NameInTypeRequiredDescription
namepathstringyesusage or distribution

cURL

Usage Example

curl -sS -X GET 'https://api-staging.audioshake.ai/tasks/statistics?name=usage' \\
-H 'Accept: application/json' \\
-H 'x-api-key: $AUDIOSHAKE_API_KEY'

Distribution Example

curl -sS -X GET 'https://api-staging.audioshake.ai/tasks/statistics?name=distrubution' \\
-H 'Accept: application/json' \\
-H 'x-api-key: $AUDIOSHAKE_API_KEY'

Responses

200 OK Usage

[
{
"totalTargets": 32,
"month": "2025-09",
"totalMinutes": "118.04"
}
]

200 OK Distribution

[
{
"count": 6,
"model": "vocals",
"percentage": "18.75"
},
{
"count": 4,
"model": "instrumental",
"percentage": "12.5"
},
{
"count": 3,
"model": "piano",
"percentage": "9.38"
},
{
"count": 3,
"model": "wind",
"percentage": "9.38"
},
{
"count": 3,
"model": "multi_voice",
"percentage": "9.38"
},
{
"count": 2,
"model": "drums",
"percentage": "6.25"
},
{
"count": 2,
"model": "music_removal",
"percentage": "6.25"
},
/* ... Statisic by distribution item trunciated for brevity */
]


Error Responses:

statusCodeerrormessage
400Bad RequestInsufficient credits
404Not Found"Cannot find <task>"

Insufficient credits: The AudioShake API is restricted to accounts with sufficient credits. If you run out, you'll see an error message like this; simply return to the dashboard to purchase more.