> ## 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.

# List Available Models

> Fetch the models your account can use, with pricing and formats

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.md).

## Request

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

```bash cURL theme={null}
curl --location 'https://api.audioshake.ai/models' \
--header 'x-api-key: your_api_key'
```

```python list_models.py theme={null}
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 listModels.js theme={null}
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 theme={null}
{
  "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.md). |
| `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`). |

> [!TIP]
>
> 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 theme={null}
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"] }
    ]
}'
```


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