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

# List video engines

> The public video engine catalog — modes, durations, resolutions, and pricing per engine.

Returns the catalog of available video engines. Each entry lists the modes it
supports, valid `durations` (and `durations_by_resolution` /
`durations_with_end_frame` where they differ), `resolutions`, `aspect_ratios`,
whether it supports an end frame or audio, and its credit pricing
(`credits_per_second`, `resolution_multipliers`, `audio_credit_multiplier`).

Read this endpoint before calling
[`POST /videos/generations`](/api-reference/videos/generate) so you pass a valid
`engine` + `duration` + `resolution` combination — unsupported values return `422`.


## OpenAPI

````yaml api-reference/openapi.json GET /videos/models
openapi: 3.1.0
info:
  title: Samsa API
  description: >-
    The Samsa public REST API. Authenticate with an organization API key as a
    bearer token (`Authorization: Bearer samsa_sk_...`). Errors follow a single
    envelope shape; every response carries an `X-Request-ID`.
  version: 1.0.0
servers:
  - url: https://api.samsa.ai/public/v1
security:
  - BearerAuth: []
paths:
  /videos/models:
    get:
      tags:
        - Videos
      summary: List the available video engines
      description: >-
        Returns the public video engine catalog: supported modes, durations,
        resolutions, aspect ratios, end-frame support, audio support, and credit
        pricing per engine. Pass an engine's `id` as `engine` on `POST
        /videos/generations`. Requires the `videos.generate` scope.
      operationId: list_video_engines_videos_models_get
      parameters:
        - name: authorization
          in: header
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicVideoEngineList'
        '401':
          description: Missing, invalid, expired, or revoked API key.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '403':
          description: The API key lacks the required scope for this operation.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '404':
          description: Generation, or a referenced model/palette/image, not found.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '422':
          description: >-
            Request validation failed (engine, duration, resolution, frames,
            ...).
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '429':
          description: Per-key rate limit or per-org concurrency cap exceeded.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
        '500':
          description: Internal server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorEnvelope'
components:
  schemas:
    PublicVideoEngineList:
      properties:
        data:
          items:
            $ref: '#/components/schemas/PublicVideoEngine'
          type: array
          title: Data
      type: object
      required:
        - data
      title: PublicVideoEngineList
      description: '`GET /videos/models` response — the public video engine catalog.'
    ErrorEnvelope:
      properties:
        error:
          $ref: '#/components/schemas/ErrorDetail'
      type: object
      required:
        - error
      title: ErrorEnvelope
      description: The complete public error body — an ``error`` object wrapper (ADR §5).
    PublicVideoEngine:
      properties:
        id:
          type: string
          title: Id
          description: Public engine id — pass as `engine` on `POST /videos/generations`.
          examples:
            - veo_3_1_lite
        name:
          type: string
          title: Name
          description: Human-readable engine name.
          examples:
            - Veo 3 1 Lite
        modes:
          items:
            type: string
          type: array
          title: Modes
          description: >-
            Supported generation modes — subset of `image_to_video`,
            `text_to_video`, `text_to_video_styled`.
          examples:
            - - image_to_video
              - text_to_video
              - text_to_video_styled
        supports_end_frame:
          type: boolean
          title: Supports End Frame
          description: True when `image_to_video` accepts an `end_image`.
          examples:
            - true
        durations:
          items:
            type: integer
          type: array
          title: Durations
          description: >-
            Valid `duration` values (seconds). Some engines restrict this set
            further at specific resolutions — see `durations_by_resolution`.
          examples:
            - - 4
              - 6
              - 8
        durations_by_resolution:
          anyOf:
            - additionalProperties:
                items:
                  type: integer
                type: array
              type: object
            - type: 'null'
          title: Durations By Resolution
          description: >-
            Per-resolution `duration` restrictions. A resolution listed here
            (including `default_resolution` when `resolution` is omitted)
            accepts ONLY its listed durations; resolutions not listed accept the
            full `durations` set. Null when unrestricted.
          examples:
            - 1080p:
                - 8
        durations_with_end_frame:
          anyOf:
            - items:
                type: integer
              type: array
            - type: 'null'
          title: Durations With End Frame
          description: >-
            Stricter `duration` set when an `end_image` is supplied; null when
            unrestricted or end frames are unsupported.
          examples:
            - - 8
        resolutions:
          items:
            type: string
          type: array
          title: Resolutions
          description: >-
            Selectable `resolution` values; empty when the engine uses a fixed
            resolution per aspect ratio (omit `resolution` then).
          examples:
            - - 720p
              - 1080p
        default_resolution:
          anyOf:
            - type: string
            - type: 'null'
          title: Default Resolution
          description: >-
            Resolution used when `resolution` is omitted; null for
            fixed-resolution engines.
          examples:
            - 1080p
        aspect_ratios:
          items:
            type: string
          type: array
          title: Aspect Ratios
          description: Valid `aspect_ratio` values for this engine.
          examples:
            - - '16:9'
              - '9:16'
        supports_audio:
          type: boolean
          title: Supports Audio
          description: True when `generate_audio` is accepted.
          examples:
            - true
        credits_per_second:
          type: number
          title: Credits Per Second
          description: >-
            Base credit price per second (5 x engine multiplier), before
            resolution / audio multipliers.
          examples:
            - 5
        resolution_multipliers:
          anyOf:
            - additionalProperties:
                type: number
              type: object
            - type: 'null'
          title: Resolution Multipliers
          description: >-
            Credit multiplier per selectable resolution; null for
            fixed-resolution engines.
          examples:
            - 1080p: 2
              720p: 1
        audio_credit_multiplier:
          anyOf:
            - type: number
            - type: 'null'
          title: Audio Credit Multiplier
          description: >-
            Extra credit multiplier when `generate_audio` is true; null when
            audio is unsupported.
          examples:
            - 1.67
      type: object
      required:
        - id
        - name
        - modes
        - supports_end_frame
        - durations
        - resolutions
        - aspect_ratios
        - supports_audio
        - credits_per_second
      title: PublicVideoEngine
      description: >-
        One engine in the `GET /videos/models` catalog (ADR §8.3 — non-hidden
        only).
    ErrorDetail:
      properties:
        type:
          type: string
          title: Type
          examples:
            - authentication_error
        code:
          type: string
          title: Code
          examples:
            - invalid_api_key
        message:
          type: string
          title: Message
          examples:
            - The provided API key is invalid, expired, or revoked.
        request_id:
          type: string
          title: Request Id
          examples:
            - 8f14e45fceea167a5a36dedd4bea2543
        param:
          anyOf:
            - type: string
            - type: 'null'
          title: Param
          description: Present on validation errors — names the offending field.
          examples:
            - aspect_ratio
      type: object
      required:
        - type
        - code
        - message
        - request_id
      title: ErrorDetail
      description: The ``error`` object of the public envelope (ADR §5).
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: >-
        Organization API key as a bearer token: `Authorization: Bearer
        samsa_sk_...`.

````