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

# List models

> Every video, image and motion-control model Unsora runs, with each model's modes and inputs: names, allowed values, ranges and defaults.

Returns every generation model with its modes and the exact inputs each one takes, read live from the provider. Use it to see which durations, aspect ratios, resolutions and reference files a model accepts before you call [Generate](https://tryunsora.com/docs/api-reference/catalog/generate.md).

Filter with `?category=video`, `image` or `motion-control`. Prices aren't listed because they depend on the inputs; use [Quote a generation](https://tryunsora.com/docs/api-reference/catalog/quote.md).

```bash theme={null}
curl "https://mvp.tryunsora.com/api/v1/catalog?category=video" \
  -H "Authorization: Bearer uns_YOUR_API_KEY"
```


## OpenAPI

````yaml GET /catalog
openapi: 3.1.0
info:
  title: Unsora API
  version: 1.4.0
  description: >-
    Public API for Unsora integrations. Authenticate with an Unsora API key
    (`uns_…`, created under Developers → API keys in the app) as a Bearer token
    in the Authorization header. Limit: 60 requests per minute per key; over it,
    429 with code RATE_LIMIT_EXCEEDED.
servers:
  - url: https://mvp.tryunsora.com/api/v1
    description: Production
  - url: /api/v1
    description: This server
security: []
tags:
  - name: User
  - name: Models
    description: >-
      Every video, image and motion-control model, with each model's inputs
      taken from the provider's own request schema and prices quoted live. One
      generate endpoint covers all of them.
  - name: Video
  - name: Image
  - name: Influencer
  - name: Thumbnail
  - name: Clipping
  - name: Music
  - name: Voiceover
  - name: Upscaler
  - name: Subtitle removal
  - name: Motion control
  - name: Avatar
  - name: Movie materials
  - name: Voice clones
  - name: Voice changer
  - name: Uploads
  - name: Scheduler
paths:
  /catalog:
    get:
      tags:
        - Models
      summary: List generation models with their inputs
      description: >-
        Every video, image and motion-control model, its modes, and each
        endpoint's input fields (names, allowed values, ranges, defaults).
        Prices aren't listed because they depend on the inputs; use POST
        /catalog/quote.
      parameters:
        - name: category
          in: query
          required: false
          schema:
            type: string
            enum:
              - video
              - image
              - motion-control
      responses:
        '200':
          description: Models
          content:
            application/json:
              schema:
                type: object
                properties:
                  success:
                    type: boolean
                  models:
                    type: array
                    items:
                      $ref: '#/components/schemas/CatalogModel'
        '503':
          description: Model list temporarily unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    CatalogModel:
      type: object
      properties:
        key:
          type: string
          example: seedance-2.5
        label:
          type: string
          example: Seedance 2.5
        provider:
          type: string
          example: ByteDance
        icon:
          type: string
          example: /models/bytedance.svg
          description: Path of the provider logo on app.tryunsora.com.
        category:
          type: string
          enum:
            - video
            - image
            - motion-control
        description:
          type: string
        isNew:
          type: boolean
        legacyDbModels:
          type: array
          items:
            type: string
          description: Older model names that also resolve to this model.
        modes:
          type: array
          items:
            type: object
            properties:
              key:
                type: string
                example: omni
              label:
                type: string
                example: Omni reference
              endpoints:
                type: array
                description: >-
                  Provider endpoints behind the mode. The first one whose `when`
                  media fields all have files is used; the last is the fallback.
                items:
                  type: object
                  properties:
                    modelId:
                      type: string
                      example: bytedance/seedance-2.5/text-to-video
                    when:
                      type: array
                      items:
                        type: string
                    fields:
                      type: array
                      items:
                        $ref: '#/components/schemas/CatalogField'
    ErrorResponse:
      type: object
      properties:
        success:
          type: boolean
        error:
          type: string
        code:
          type: string
        message:
          type: string
      required:
        - error
    CatalogField:
      type: object
      description: >-
        One input of a model endpoint. `key` is the provider's own field name;
        send it in `inputs` with that name.
      properties:
        key:
          type: string
          example: resolution
        label:
          type: string
          example: Resolution
        type:
          type: string
          enum:
            - prompt
            - negative_prompt
            - media
            - select
            - aspect
            - duration
            - toggle
        required:
          type: boolean
        options:
          type: array
          description: >-
            Allowed values (select, aspect, duration, toggle). A value of "auto"
            means: leave the field out.
          items:
            type: object
            properties:
              value:
                type: string
              label:
                type: string
        default:
          type: string
        offLabel:
          type: string
          description: >-
            Toggle fields only: what the app shows when the toggle is off (e.g.
            "No audio"), when set.
        media:
          type: object
          description: >-
            Media fields only: file kind and how many URLs it takes (1 = a
            single URL string).
          properties:
            kind:
              type: string
              enum:
                - image
                - video
                - audio
            max:
              type: integer
      required:
        - key
        - label
        - type
        - required
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      description: An Unsora API key (`uns_…`). A Clerk session token also works.

````

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