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
Field | Type | Required | Constraints | Description |
---|---|---|---|---|
url | string | yes | format: uri | Publicly reachable HTTPS URL to the source audio/video. |
callbackUrl | string | no | format: uri | Optional webhook URL invoked on task/target state changes. |
targets | target[] | yes | minItems: 1; maxItems: 10 | List of operations to run. 1–10 items. |
Target object
Field | Type | Required | Constraints | Description |
---|---|---|---|---|
model | string | yes | enum: instrumental, drums, vocals, bass, other, guitar, other-x-guitar, piano, wind, strings, dialogue, music_removal, music_fx, music_detection, multi_voice, transcription, alignment | Target model identifier. |
formats | string[] | yes | Audio: wav, mp3, mp4, aac, flac, aiff, pcm Video: mp4, mov Text: txt, json | Desired output formats. |
residual | boolean | no | default: false | Include residual audio if supported by the model. |
variant | string | no | multi_voice: two_speaker, n_speaker Vocals, Instrumental: high_quality | Optional variants can be selected for multi_voice, vocals, and instrumental. |
language | string | no | default: 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
Name | In | Type | Required | Description |
---|---|---|---|---|
clientId | path | string | yes | Client identifier. |
skip | path | int | no | Start paging param |
take | path | int | no | Limit 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
Name | In | Type | Required | Description |
---|---|---|---|---|
id | path | string | yes | Unique 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
Name | In | Type | Required | Description |
---|---|---|---|---|
name | path | string | yes | usage 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:
statusCode | error | message |
---|---|---|
400 | Bad Request | Insufficient credits |
404 | Not 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.