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

# List Catalog Models

> Browse the public model catalog. No authentication required. Optional Bearer token enables visibility filtering and user-specific pricing.

## Authentication

<Note>
  This is a **public endpoint**. Authentication is optional but recommended for personalized results.
</Note>

<ParamField header="Authorization" type="string">
  Optional Bearer token. When provided, enables visibility filtering based on user segments and returns user-specific pricing.
</ParamField>

## Visibility Levels

| Level     | Description                                                         |
| --------- | ------------------------------------------------------------------- |
| `public`  | Visible to all users, no authentication needed.                     |
| `segment` | Visible only to users in specific segments (requires Bearer token). |
| `private` | Visible only to users with the model in their `allowedModels` list. |

## Response

Returns an array of catalog model objects.

<ResponseField name="models" type="array">
  <Expandable title="Catalog Model Object">
    <ResponseField name="slug" type="string">Unique slug in format `provider/model` or `provider/model/capability`.</ResponseField>
    <ResponseField name="provider" type="object">Provider information (id, name, logoUrl).</ResponseField>
    <ResponseField name="category" type="string">Model category (e.g., `video`, `image`).</ResponseField>
    <ResponseField name="capability" type="string">Model capability (e.g., `text-to-video`, `image-to-video`).</ResponseField>
    <ResponseField name="pricing" type="object">Pricing details including base credits and per-unit costs.</ResponseField>
    <ResponseField name="tags" type="array">Descriptive tags for filtering and discovery.</ResponseField>
    <ResponseField name="ratings" type="object">Community ratings and review counts.</ResponseField>
  </Expandable>
</ResponseField>

<RequestExample>
  ```bash cURL theme={null}
  # Public access (no auth)
  curl -X GET https://api.muvi.video/v1/catalog/models

  # With auth for personalized results
  curl -X GET https://api.muvi.video/v1/catalog/models \
    -H "Authorization: Bearer YOUR_TOKEN"
  ```

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

  # Public access
  response = requests.get("https://api.muvi.video/v1/catalog/models")

  # With auth for personalized results
  response = requests.get(
      "https://api.muvi.video/v1/catalog/models",
      headers={"Authorization": "Bearer YOUR_TOKEN"}
  )

  models = response.json()
  for model in models:
      print(f"{model['slug']} - {model['capability']}")
  ```

  ```javascript JavaScript theme={null}
  // Public access
  const response = await fetch("https://api.muvi.video/v1/catalog/models");

  // With auth for personalized results
  const authResponse = await fetch("https://api.muvi.video/v1/catalog/models", {
    headers: { "Authorization": "Bearer YOUR_TOKEN" }
  });

  const models = await response.json();
  models.forEach(model => {
    console.log(`${model.slug} - ${model.capability}`);
  });
  ```
</RequestExample>

<ResponseExample>
  ```json 200 theme={null}
  [
    {
      "slug": "google/veo-3.1-fast/text-to-video",
      "provider": {
        "id": "google",
        "name": "Google",
        "logoUrl": "https://cdn.muvi.video/providers/google.png"
      },
      "category": "video",
      "capability": "text-to-video",
      "pricing": {
        "baseCredits": 50,
        "unit": "per_generation"
      },
      "tags": ["fast", "hd", "text-to-video"],
      "ratings": {
        "average": 4.5,
        "count": 128
      }
    }
  ]
  ```
</ResponseExample>
