## Documentation Index

Fetch the complete documentation index at: [/llms.txt](https://developer.audioshake.ai/llms.txt)

Use this file to discover all available pages before exploring further.

The `GET /models` endpoint returns every AudioShake model available to your account, along with its category, pricing, accepted input formats, and output formats. Use it to discover models programmatically instead of hardcoding a list — the `id` field is exactly the value you pass as `model` when [creating a Task](https://developer.audioshake.ai/api-reference/tasks/create).

## Request

Authenticate with your `x-api-key` header, the same as every other endpoint.

### cURL

```bash
curl --location 'https://api.audioshake.ai/models' \
--header 'x-api-key: your_api_key'
```

### Python

```python
import requests

API_KEY = "your_api_key"

models = requests.get(
    "https://api.audioshake.ai/models",
    headers={"x-api-key": API_KEY}
).json()["models"]

for m in models:
    price = m.get("creditsPerMinute", "—")
    print(f"{m['id']}: {m['name']} ({price} credits/min)")
```

### JavaScript

```javascript
const API_KEY = "your_api_key";

const res = await fetch("https://api.audioshake.ai/models", {
  headers: { "x-api-key": API_KEY }
});
const { models } = await res.json();

for (const m of models) {
  console.log(`${m.id}: ${m.name} (${m.creditsPerMinute ?? "—"} credits/min)`);
}
```

## Response

The response is a `{ "models": [...] }` envelope. Each model looks like this:

```json
{
  "models": [
    {
      "id": "bass",
      "name": "Bass",
      "category": "instrumentStemSeparation",
      "description": "Low-end bass sources (electric bass, double bass, bass synth).",
      "access": "enabled",
      "creditsPerMinute": 1,
      "inputs": [
        {
          "id": "media",
          "description": "Source audio or video file",
          "required": true,
          "taskFields": ["url", "assetId"],
          "formats": {
            "audio": ["wav", "aiff", "flac", "mp3", "aac", "m4a"],
            "video": ["mp4", "mov"]
          }
        }
      ],
      "outputFormats": ["aiff", "wav", "flac", "mp3", "mp4"]
    }
  ]
}
```

### Fields

| Field                | Description                                                                                                                                                                   |
|----------------------|-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|
| `id`                 | Stable identifier. Pass this as `model` in [Create Task](https://developer.audioshake.ai/api-reference/tasks/create).                                                      |
| `name`               | Human-readable label.                                                                                                                                                        |
| `category`           | Grouping such as `instrumentStemSeparation`, `speechSeparation`, `postProduction`, `copyrightCompliance`, or `lyricTranscription`.                                         |
| `description`        | One-sentence summary of what the model does.                                                                                                                                 |
| `access`             | `enabled` if your account can use the model. Gated models are flagged `request_access` and omit pricing.                                                                     |
| `creditsPerMinute`   | Your account’s rate. Omitted for `request_access` models.                                                                                                                    |
| `inputs`             | Accepted inputs. Each entry lists the `taskFields` you can set and the `formats` allowed.                                                                                   |
| `outputFormats`      | Formats you can request in a Task’s `formats` array.                                                                                                                        |
| `limits`             | Present only when a model has constraints, e.g. `maxInputDurationSeconds`.                                                                                                 |
| `supportedLanguages` | ISO codes, present only on language-aware models (`transcription`, `alignment`).                                                                                             |

Null and empty values are omitted, so optional fields like `limits`, `supportedLanguages`, and (for gated models) `creditsPerMinute` won’t always be present. Check for a field before reading it.

## Use a model in a Task

Take any `id` from the response and use it directly when creating a Task:

```bash
curl --location 'https://api.audioshake.ai/tasks' \
--header 'Content-Type: application/json' \
--header 'x-api-key: your_api_key' \
--data '{
    "url": "https://your-file.com/song.mp3",
    "targets": [
        { "model": "bass", "formats": ["mp3"] }
    ]
}'
```
