Skip to main content

Tasks API

A Task defines a set of AI processing operations to run together in a single request.

Each Task contains an array of separation targets which define which models to run the input media through. You to create a single Task that will process the same input media to produce multiple source separations or other audio processes such as transcription or alignment.


Base URL

https://api.audioshake.ai


Authentication

All of the new Tasks endpoints are authenticated via API key as provided in the AudioShake Dashboard.

  • 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 or Asset with up to 10 target operations.

Request

Headers

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

Body shape

FieldTypeRequiredConstraintsDescription
urlstringnoformat: uriPublicly reachable HTTPS URL to the source audio/video. Provide either url or assetId.
assetIdstringnoID of a previously uploaded asset. Provide either assetId or url.
targetstarget[]yesminItems: 1; maxItems: 10List of operations to run. 1–10 items.

Input: Provide either url or assetId. If you provide one, only that field is returned in the Task response.

Target object

FieldTypeRequiredConstraintsDescription
modelstringyesSupported ModelsTarget model identifier.
formatsstring[]yesSupported FormatsDesired output formats.
residualbooleannodefault: falseInclude residual audio if supported by the model. The residual is everything but the target after separation.
variantstringnoModel VariantsOptional variants can be selected for multi_voice, vocals, and instrumental.
languagestringnoSupported LanguagesSet transcription or alignment language. Adding the language attribute to your API call can help improve performance. If no language is set, it will automatically be detected.

Example Request Body:

{
"url": "https://demos.audioshake.ai/demo-assets/shakeitup.mp3",
"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",
"targets": [
{ "model": "dialogue", "formats": ["wav"] },
{ "model": "effects", "formats": ["wav"] },
{ "model": "multi_voice", "formats": ["wav"], "variant": "two_speaker" }
]
}'

Responses

200 OK

{
"id": "<task-id>",
"createdAt": "2025-09-24T17:41:59.851Z",
"clientId": "<your-client-id>",
"url": "https://demos.audioshake.ai/demo-assets/shakeitup.mp3",
"targets": [
{
"id": "<target-id>",
"model": "dialogue",
"status": "processing",
"formats": ["mp4"],
"output": [],
"cost": 12
},
{
"id": "<target-id>",
"model": "effects",
"status": "processing",
"formats": ["wav"],
"output": [],
"cost": 6
},
{
"id": "<target-id>",
"model": "multi_voice",
"status": "processing",
"formats": ["wav"],
"output": [],
"cost": 60,
"variant": "two_speaker"
}
]
}

Response notes

  • Optional fields are omitted when not applicable (for example: error, variant, language, residual, and the top-level input field you did not provide).

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.audioshake.ai/tasks?skip=1&take=1" \
-H "Accept: application/json" \
-H "x-api-key: $AUDIOSHAKE_API_KEY"

Responses

200 OK

[
{
"id": "<task-id>",
"createdAt": "2020-01-01T00:00:00.000Z",
"clientId": "<client-id>",
"targets": [
{
"id": "<target-id>",
"model": "music_removal",
"status": "processing",
"formats": ["mp4"],
"output": [],
"cost": 12,
"duration": 24
}
]
}
// ... additional tasks
]

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/<task-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://cdn.audioshake.ai/.../music_removal.mp4"
}
],
"cost": 12,
"error": null,
"duration": 183.12498474121094,
"variant": "",
"residual": false,
"language": "en"
}
// ... additional targets
]
}

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.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.audioshake.ai/tasks/statistics?name=distribution" \
-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" }
// ... additional models
]

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.