> ## 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](/api-reference/tasks/create).

## Request

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

<CodeGroup>
  ```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)`);
  }
  ```
</CodeGroup>

## 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](/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`).                                                   |

<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.</Tip>

## 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"] }
    ]
}'
```
