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

# Get Model Capabilities

> List the AI Studio models and exactly what each one accepts

## Overview

This endpoint returns every video and image model available on the AI Studio endpoints together with the aspect ratios, durations, reference limits, audio support, and features each one accepts. It is generated from the same registry that validates generation requests, so it always matches what the API enforces. Use it to build model pickers or to validate requests before sending them, instead of hard-coding the tables from the documentation.

<Note>
  A valid API key is required to use this endpoint. Obtain your API key from the [API Access page](https://app.pictory.ai/api-access) in your Pictory dashboard.
</Note>

***

## API Endpoint

```http theme={null}
GET https://api.pictory.ai/pictoryapis/v1/aistudio/models
```

***

## Request Headers

<ParamField header="Authorization" type="string" required>
  API key for authentication (starts with `pictai_`)

  ```
  Authorization: YOUR_API_KEY
  ```
</ParamField>

***

## Response

### Success Response (200)

<ResponseField name="defaults" type="object">
  The model used when a request omits `model`: `video` for plain video generation, `extend` for a request with `extendVideoUrl`, and `image` for image generation.
</ResponseField>

<ResponseField name="trainingPresets" type="array">
  The values accepted by the `trainingPreset` request field.
</ResponseField>

<ResponseField name="videoModels" type="array">
  One entry per video model.

  <Expandable title="Video Model Properties">
    <ResponseField name="model" type="string">
      The value to send as `model`
    </ResponseField>

    <ResponseField name="retired" type="boolean">
      Present and `true` for ids that are no longer offered but still accepted for compatibility
    </ResponseField>

    <ResponseField name="servedAs" type="string">
      For retired ids, the model that serves and bills the request
    </ResponseField>

    <ResponseField name="aspectRatios" type="array">
      Accepted `aspectRatio` values
    </ResponseField>

    <ResponseField name="durations" type="array">
      Accepted `duration` values
    </ResponseField>

    <ResponseField name="audio" type="string">
      `optional` (send `audio: true` to enable), `always` (audio cannot be turned off), or `none`
    </ResponseField>

    <ResponseField name="referenceImages" type="object">
      `max`: the number of `referenceImageUrls` accepted. `durations`: when not `null`, the only `duration` values accepted while reference images are attached.
    </ResponseField>

    <ResponseField name="firstFrame" type="boolean">
      Whether `firstFrameImageUrl` is accepted
    </ResponseField>

    <ResponseField name="maxResolution" type="string">
      The highest resolution the model delivers (`"1080p"` or `"720p"`). Every request is served at this tier, except the per-duration limits listed under [Output Resolution](/api-reference/ai-studio/generate-video#output-resolution).
    </ResponseField>

    <ResponseField name="endFrame" type="boolean">
      Whether `endFrameImageUrl` (a first and end frame transition) is accepted
    </ResponseField>

    <ResponseField name="extend" type="object">
      `supported`: whether `extendVideoUrl` is accepted. `durations`: when present, the fixed continuation length the model produces.
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="imageModels" type="array">
  One entry per image model.

  <Expandable title="Image Model Properties">
    <ResponseField name="model" type="string">
      The value to send as `model`
    </ResponseField>

    <ResponseField name="aspectRatios" type="array">
      Accepted `aspectRatio` values
    </ResponseField>

    <ResponseField name="editing" type="boolean">
      Whether reference images are accepted
    </ResponseField>

    <ResponseField name="referenceImages" type="object">
      `max`: the number of `referenceImageUrls` accepted (`0` when editing is not supported)
    </ResponseField>

    <ResponseField name="aspectRatioOnEdit" type="boolean">
      Whether `aspectRatio` is honored when reference images are provided; when `false`, the output follows the reference image
    </ResponseField>

    <ResponseField name="editsServedBy" type="string">
      Present when editing requests are served by a different model at this model's rate
    </ResponseField>
  </Expandable>
</ResponseField>

<Note>
  Credit rates are not part of this response. Refer to the pricing tables on the [Generate Video](/api-reference/ai-studio/generate-video) and [Generate Image](/api-reference/ai-studio/generate-image) pages.
</Note>

### Response Examples

<ResponseExample>
  ```json 200 - Success (abridged) theme={null}
  {
      "defaults": { "video": "pixverse5.6", "extend": "pixverse6", "image": "seedream3.0" },
      "trainingPresets": ["sales-training", "product-training", "soft-skills-training"],
      "videoModels": [
          {
              "model": "pixverse6",
              "aspectRatios": ["16:9", "4:3", "1:1", "3:4", "9:16", "2:3", "3:2", "21:9"],
              "durations": ["5s", "8s", "10s", "15s"],
              "audio": "optional",
              "referenceImages": { "max": 4, "durations": null },
              "maxResolution": "1080p",
              "firstFrame": true,
              "endFrame": true,
              "extend": { "supported": true }
          },
          {
              "model": "veo3.1_fast",
              "aspectRatios": ["16:9", "9:16"],
              "durations": ["4s", "6s", "8s"],
              "audio": "optional",
              "referenceImages": { "max": 3, "durations": ["8s"] },
              "maxResolution": "1080p",
              "firstFrame": true,
              "endFrame": false,
              "extend": { "supported": true, "durations": ["7s"] }
          },
          {
              "model": "pixverse5.5",
              "retired": true,
              "servedAs": "pixverse5.6",
              "aspectRatios": ["16:9", "9:16", "1:1", "3:4", "4:3"],
              "durations": ["5s", "8s", "10s"],
              "audio": "none",
              "referenceImages": { "max": 4, "durations": null },
              "maxResolution": "1080p",
              "firstFrame": true,
              "endFrame": true,
              "extend": { "supported": false }
          }
      ],
      "imageModels": [
          {
              "model": "nanobanana-lite2",
              "aspectRatios": ["1:1", "16:9", "9:16"],
              "editing": true,
              "referenceImages": { "max": 4 },
              "aspectRatioOnEdit": true,
              "editsServedBy": "nanobanana2"
          },
          {
              "model": "flux-schnell",
              "aspectRatios": ["1:1", "16:9", "9:16"],
              "editing": false,
              "referenceImages": { "max": 0 },
              "aspectRatioOnEdit": false
          }
      ]
  }
  ```

  ```json 401 - Unauthorized theme={null}
  {
      "message": "Unauthorized"
  }
  ```
</ResponseExample>

***

## Status Codes

| Status Code | Description |
| - | - |
| **200** | Request processed successfully. |
| **401** | Unauthorized. The API key in the `Authorization` header is missing or invalid. |
| **500** | Internal server error. Retry the request after a brief delay. |

***

## Code Examples

<CodeGroup>
  ```bash cURL theme={null}
  curl --request GET \
    --url 'https://api.pictory.ai/pictoryapis/v1/aistudio/models' \
    --header 'Authorization: YOUR_API_KEY' \
    --header 'accept: application/json'
  ```

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

  response = requests.get(
      "https://api.pictory.ai/pictoryapis/v1/aistudio/models",
      headers={"Authorization": "YOUR_API_KEY", "accept": "application/json"},
  )
  models = response.json()

  for model in models["videoModels"]:
      print(model["model"], model["durations"], "audio:", model["audio"])
  ```

  ```javascript JavaScript theme={null}
  const response = await fetch('https://api.pictory.ai/pictoryapis/v1/aistudio/models', {
    headers: { 'Authorization': 'YOUR_API_KEY', 'accept': 'application/json' }
  });
  const models = await response.json();

  for (const model of models.videoModels) {
    console.log(model.model, model.durations, 'audio:', model.audio);
  }
  ```
</CodeGroup>


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