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

# List models

> The catalog of active models with credit pricing, durations, ratios, resolutions, and per-model reference limits.

Returns the models that are currently usable, grouped into `video`, `image`, and `audio`. Disabled models are not returned.

> [!NOTE]
>
> This endpoint **does not require an API key** because it only holds the public catalog. The other pages in this tab still need a key.

```bash cURL theme={null} theme={null}
curl https://vigen.id/api/v1/models
```

```js Node.js theme={null} theme={null}
const models = await (await fetch("https://vigen.id/api/v1/models")).json();

const video = models.models.video.find((m) => m.capabilities.durations.includes("30"));
console.log(video?.id, video?.creditsDefault, video?.priceMatrix);
```

```python Python theme={null} theme={null}
models = requests.get("https://vigen.id/api/v1/models").json()["models"]

for m in models["video"]:
    print(m["id"], m["capabilities"]["durations"], m["creditsDefault"])
```

### Responses

**success** `boolean` *required*

`true` when the catalog loaded successfully.

**models** `object` *required*

Three buckets: `video`, `image`, `audio`. Each one is an array of model objects.

**one model entry**

**id** `string` *required*

The value for the `model` field when generating.

**label** `string`

Display name. It can change; do not use it as a logic key.

**category** `string`

`"Video"`, `"Image"`, or `"Audio"`.

**mode** `string`

`video`, `image`, or `audio`.

**creditsDefault** `number` *required*

Base price in credits when no override matches. Can be fractional.

**priceMatrix** `object`

Price overrides. Possible keys: duration (`"15"`), resolution (`"720p"`), combination (`"720p:15"`), or quality:resolution (`"low:2K"`).

**capabilities** `object`

Validation rules for this model's parameters.

**contents of capabilities**

**durations** `array\<string\>`

Valid values for `parameters.duration`.

**ratios** `array\<string\>`

Valid values for `parameters.ratio`.

**resolutions** `array\<string\>`

Valid values for `parameters.resolution`.

**maxReferenceImages** `number`

Reference image limit.

**maxReferenceVideos** `number`

Reference video limit.

**maxReferenceAudios** `number`

Reference audio limit.

Some models add `qualities`, `backgrounds`, `outputFormats`, `supportsNegativePrompt`, or `supportsSeed`. A missing key means that parameter is ignored.

```json 200 theme={null} theme={null}
{
  "success": true,
  "models": {
    "video": [
      {
        "id": "seedance-2-5-flash",
        "label": "Seedance 2.5 Flash",
        "category": "Video",
        "mode": "video",
        "creditsDefault": 3,
        "priceMatrix": { "20": 3 },
        "capabilities": {
          "durations": ["20"],
          "ratios": ["16:9", "9:16", "1:1", "4:3", "3:4"],
          "resolutions": ["720p"],
          "maxReferenceImages": 9,
          "maxReferenceVideos": 1,
          "maxReferenceAudios": 1
        }
      }
    ],
    "image": [
      {
        "id": "nano-banana-2.1",
        "label": "Nano Banana 2.1",
        "category": "Image",
        "mode": "image",
        "creditsDefault": 1,
        "priceMatrix": { "1K": 1, "2K": 1.5, "4K": 2 },
        "capabilities": {
          "durations": [],
          "ratios": ["16:9", "9:16", "1:1", "4:3", "3:4"],
          "resolutions": ["1K", "2K", "4K"],
          "maxReferenceImages": 10,
          "maxReferenceVideos": 0,
          "maxReferenceAudios": 0
        }
      }
    ],
    "audio": []
  }
}
```

```json 500 theme={null} theme={null}
{ "error": "Gagal memuat katalog model." }
```

## How to use it in your product

> [accordion] Cache it, do not hardcode
>
> Fetch the catalog once when your service starts, keep it for 5–15 minutes, and refresh it when you receive a `409` (`model ... sedang tidak tersedia`). The model list changes without announcement.

> [accordion] Build your UI from capabilities
>
> Hide duration options that are not in `capabilities.durations` for the selected model. Validating on your side before sending saves user credits and avoids requests the server would certainly reject.

> [accordion] Estimate the cost
>
> Mirror the server's price lookup order: `quality:resolution` → `resolution:duration` → `duration` → `resolution` → `creditsDefault`. Then add 0 for references (there is no surcharge today).

> [accordion] Audio appears in the catalog but cannot be generated yet
>
> The `audio` bucket is filled with music models. Sending them through an API key is not open yet, so present them as "dashboard only".


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