> ## Documentation Index
> Fetch the complete documentation index at: https://developer.audioshake.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Quickstart

> Make your first AudioShake API call in 5 minutes

Learn how to create an account, generate your first API key, and make your first API call.

> [!TIP]
>
> Working in Python? `pip install audioshake` gives you an official client and CLI that handle upload, polling, and download in one call — see [Python Library & CLI](https://developer.audioshake.ai/tools/python.md).

## Make your first API call

**1. Create an account**

Sign up at [dashboard.audioshake.ai](https://dashboard.audioshake.ai/auth/sign-up/). You'll get 10 free credits to start building immediately.

**2. Create an API key**

In the dashboard, go to **Settings > API Keys** and click **Create new key**. Copy and store the key — you will not be able to view it again.

**3. Create your first Task**

A Task runs one or more [models](https://developer.audioshake.ai/models.md) against a media source. This example separates a track into vocals and instrumental:

```bash curl theme={null}
curl -X POST "https://api.audioshake.ai/tasks" \
  -H "Content-Type: application/json" \
  -H "x-api-key: your_api_key" \
  -d '{
    "url": "https://demos.audioshake.ai/demo-assets/shakeitup.mp3",
    "targets": [
      { "model": "vocals", "formats": ["wav"] },
      { "model": "instrumental", "formats": ["wav"] }
    ]
  }'
```

```python quickstart.py theme={null}
import requests

response = requests.post(
    "https://api.audioshake.ai/tasks",
    headers={
        "Content-Type": "application/json",
        "x-api-key": "your_api_key"
    },
    json={
        "url": "https://demos.audioshake.ai/demo-assets/shakeitup.mp3",
        "targets": [
            {"model": "vocals", "formats": ["wav"]},
            {"model": "instrumental", "formats": ["wav"]}
        ]
    }
)

print(response.json()["id"])
```

```javascript quickstart.js theme={null}
const response = await fetch("https://api.audioshake.ai/tasks", {
  method: "POST",
  headers: {
    "Content-Type": "application/json",
    "x-api-key": "your_api_key"
  },
  body: JSON.stringify({
    url: "https://demos.audioshake.ai/demo-assets/shakeitup.mp3",
    targets: [
      { model: "vocals", formats: ["wav"] },
      { model: "instrumental", formats: ["wav"] }
    ]
  })
});

const task = await response.json();
console.log(task.id);
```

Save the `id` from the response.

**4. Check Task status**

Tasks process asynchronously. Poll until each target's `status` is `completed` or `error`:

```bash curl theme={null}
curl "https://api.audioshake.ai/tasks/<task-id>" \
  -H "x-api-key: your_api_key"
```

```python check_status.py theme={null}
task = requests.get(
    f"https://api.audioshake.ai/tasks/{task_id}",
    headers={"x-api-key": "your_api_key"}
).json()

for target in task["targets"]:
    print(f"{target['model']}: {target['status']}")
```

```javascript checkStatus.js theme={null}
const res = await fetch(`https://api.audioshake.ai/tasks/${taskId}`, {
  headers: { "x-api-key": "your_api_key" }
});
const task = await res.json();

for (const target of task.targets) {
  console.log(`${target.model}: ${target.status}`);
}
```

Each completed target includes an `output` array with download links.

> [!NOTE]
>
> Output download links expire after one hour. Download and store files in your own storage.

> [!TIP]
>
> Use [webhooks](https://developer.audioshake.ai/api-reference/tasks/webhooks.md) to get notified when targets complete instead of polling.

## Using a local file

Upload your file first with [Upload File](https://developer.audioshake.ai/api-reference/assets/upload.md), then use the returned `assetId` instead of `url`:

```json theme={null}
{
  "assetId": "your_asset_id",
  "targets": [
    { "model": "vocals", "formats": ["wav"] },
    { "model": "instrumental", "formats": ["wav"] }
  ]
}
```

## What's next?

> [card] [Models](https://developer.audioshake.ai/models.md)
>
> Browse all available models.

> [card] [Instrument Separation](https://developer.audioshake.ai/separate-stems.md)
>
> Isolate vocals, drums, bass, and more.

> [card] [Webhooks](https://developer.audioshake.ai/api-reference/tasks/webhooks.md)
>
> Get notified when targets complete instead of polling.

> [card] [API Reference](https://developer.audioshake.ai/api-reference/authentication.md)
>
> Full endpoint reference.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.