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-keyheader. - 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
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
url | string | no | format: uri | Publicly reachable HTTPS URL to the source audio/video. Provide either url or assetId. |
assetId | string | no | ID of a previously uploaded asset. Provide either assetId or url. | |
targets | target[] | yes | minItems: 1; maxItems: 10 | List 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
| Field | Type | Required | Constraints | Description |
|---|---|---|---|---|
model | string | yes | Supported Models | Target model identifier. |
formats | string[] | yes | Supported Formats | Desired output formats. |
residual | boolean | no | default: false | Include residual audio if supported by the model. The residual is everything but the target after separation. |
variant | string | no | Model Variants | Optional variants can be selected for multi_voice, vocals, and instrumental. |
language | string | no | Supported Languages | Set 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
| 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.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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| id | path | string | yes | Unique 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
| Name | In | Type | Required | Description |
|---|---|---|---|---|
| name | path | string | yes | usage 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:
| 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.