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

# Demucs

> Separate instruments from songs using Meta's Demucs.

|             |                 |
| ----------- | --------------- |
| **Credits** | 3 credits       |
| **Tool**    | `song-splitter` |

### Headers

| Name            | Type   | Required | Description        |
| --------------- | ------ | -------- | ------------------ |
| `Authorization` | string | Yes      | Your API key       |
| `Content-Type`  | string | Yes      | `application/json` |

### Body

| Parameter          | Type   | Required | Description                                                                                |
| ------------------ | ------ | -------- | ------------------------------------------------------------------------------------------ |
| `tool`             | string | Yes      | `song-splitter`                                                                            |
| `input.model`      | string | Yes      | `demucs`                                                                                   |
| `input.file`       | string | Yes      | URL of the audio file to process                                                           |
| `input.instrument` | string | No       | Instrument to extract. Options: `drums`, `other` (instrumental, default), `vocals`, `bass` |

<RequestExample>
  ```bash bash theme={null}
  curl -X POST https://api.artificialstudio.ai/api/run \
    -H "Content-Type: application/json" \
    -H "Authorization: YOUR_API_KEY" \
    -d '{
      "tool": "song-splitter",
      "input": {
        "model": "demucs",
        "file": "https://example.com/my-song.mp3",
        "instrument": "vocals"
      }
    }'
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.artificialstudio.ai/api/run', {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': 'YOUR_API_KEY'
    },
    body: JSON.stringify({
      tool: 'song-splitter',
      input: {
        model: 'demucs',
        file: 'https://example.com/my-song.mp3',
        instrument: 'vocals'
      }
    })
  });

  const data = await response.json();
  ```

  ```python Python theme={null}
  import requests

  response = requests.post(
      'https://api.artificialstudio.ai/api/run',
      headers={
          'Content-Type': 'application/json',
          'Authorization': 'YOUR_API_KEY'
      },
      json={
          'tool': 'song-splitter',
          'input': {
              'model': 'demucs',
              'file': 'https://example.com/my-song.mp3',
              'instrument': 'vocals'
          }
      }
  )

  data = response.json()
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  {
    "id": "507f1f77bcf86cd799439011",
    "status": "processing",
    "tool": "song-splitter",
    "createdAt": "2024-01-15T10:30:00.000Z"
  }
  ```

  ```json 400 theme={null}
  {
    "message": "Missing or invalid parameters"
  }
  ```

  ```json 401 theme={null}
  {
    "message": "Invalid or missing API key"
  }
  ```

  ```json 402 theme={null}
  {
    "message": "You do not have enough credits to perform this action"
  }
  ```

  ```json 429 theme={null}
  {
    "message": "Too many API requests, please try again later"
  }
  ```
</ResponseExample>
