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

# List render and task capabilities

> Return the catalog of everything an agent can use in a render or task —
effects, motions, transitions, output/input formats, element types, task
parameters, and global limits — each flagged with whether it is supported today.



## OpenAPI

````yaml /openapi.json get /v1/capabilities
openapi: 3.1.0
info:
  title: Framelane API
  description: >
    Framelane renders video and runs AI media tasks from a single declarative
    request.


    ### Authentication

    Send your API key as a bearer token: `Authorization: Bearer fl_live_...`.


    ### Core workflow

    1. **Get media in.** Pass any publicly accessible URL directly, or `POST
    /v1/uploads` to
       get a signed URL, then `PUT` your file to it.
    2. **Submit one JSON payload.** `POST /v1/renders` composes a whole scene
    (canvas +
       `elements[]` + `transitions[]`) in a single request; `POST /v1/tasks/{type}` runs an AI
       operation (remove-background, gaze-redirect, super-resolution, transcribe).
    3. **Wait for completion.** Jobs are async: poll `GET
    /v1/{renders|tasks}/{id}` or register
       a webhook. Statuses end in `completed`, `failed`, or `cancelled`.
    4. **Fetch the result.** `GET /v1/{renders|tasks}/{id}/download` redirects
    to a short-lived
       signed URL for the output artifact.

    ### Discovering what's possible

    Call **`GET /v1/capabilities`** (no auth) for the machine-readable catalog
    of every effect,

    motion, transition, format, element type, and task parameter — each flagged
    with whether the

    renderer supports it, plus all numeric ranges and rate limits. Validate
    against it before

    submitting to avoid `422`s.


    ### Idempotency

    `POST` endpoints accept an `Idempotency-Key` header. The same key with the
    same body replays

    the original response (`200`); with a different body it returns `409
    Conflict`.


    ### Errors

    Every error has the shape `{"error": {"code", "message", "details"}}`. The
    machine-readable

    `code` (e.g. `source_not_found`, `quota_exceeded`, `codec_unsupported`) is
    stable — branch on

    it to self-correct.
  version: dev
servers:
  - url: https://api.framelane.io
    description: Production
security: []
tags:
  - name: capabilities
    description: Discover supported features, formats, and limits.
  - name: renders
    description: Compose and render video from a declarative timeline.
  - name: tasks
    description: >-
      Run AI media operations: background removal, gaze redirect,
      super-resolution, transcription.
  - name: uploads
    description: Get signed URLs to upload source media into Framelane storage.
  - name: webhooks
    description: Subscribe to job lifecycle events with signed delivery.
  - name: workspace
    description: Manage your workspace, usage, and assets.
  - name: api-keys
    description: Create and revoke API keys.
  - name: auth
    description: Session sync for the first-party console.
  - name: signup
    description: Create a workspace and verify email.
  - name: billing
    description: Manage your subscription and billing portal.
  - name: system
    description: Health, readiness, and version probes.
paths:
  /v1/capabilities:
    get:
      tags:
        - capabilities
      summary: List render and task capabilities
      description: >-
        Return the catalog of everything an agent can use in a render or task —

        effects, motions, transitions, output/input formats, element types, task

        parameters, and global limits — each flagged with whether it is
        supported today.
      operationId: get_capabilities
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CapabilitiesResponse'
components:
  schemas:
    CapabilitiesResponse:
      properties:
        api_version:
          type: string
          title: Api Version
          description: API build version this catalog reflects.
        output_formats:
          items:
            $ref: '#/components/schemas/OutputFormatCap'
          type: array
          title: Output Formats
        input_formats:
          items:
            $ref: '#/components/schemas/InputFormatCap'
          type: array
          title: Input Formats
        element_types:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Element Types
        effects:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Effects
        motions:
          items:
            $ref: '#/components/schemas/MotionCap'
          type: array
          title: Motions
        transitions:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Transitions
        word_animations:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Word Animations
        progress_bar_styles:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Progress Bar Styles
        audio_viz_styles:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Audio Viz Styles
        blend_modes:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Blend Modes
        easings:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Easings
        motion_scopes:
          items:
            $ref: '#/components/schemas/EnumValueCap'
          type: array
          title: Motion Scopes
        task_types:
          items:
            $ref: '#/components/schemas/TaskTypeCap'
          type: array
          title: Task Types
        limits:
          $ref: '#/components/schemas/Limits'
        rate_limits:
          items:
            $ref: '#/components/schemas/RateLimit'
          type: array
          title: Rate Limits
      type: object
      required:
        - api_version
        - output_formats
        - input_formats
        - element_types
        - effects
        - motions
        - transitions
        - word_animations
        - progress_bar_styles
        - audio_viz_styles
        - blend_modes
        - easings
        - motion_scopes
        - task_types
        - limits
        - rate_limits
      title: CapabilitiesResponse
      description: The full capability catalog returned by ``GET /v1/capabilities``.
    OutputFormatCap:
      properties:
        value:
          type: string
          title: Value
          description: The `output_format` value.
        description:
          type: string
          title: Description
          description: What this format produces.
        supported:
          type: boolean
          title: Supported
          description: Whether the renderer can emit this format today.
        alpha_capable:
          type: boolean
          title: Alpha Capable
          description: Whether it can carry a transparent (alpha) channel.
      type: object
      required:
        - value
        - description
        - supported
        - alpha_capable
      title: OutputFormatCap
    InputFormatCap:
      properties:
        extension:
          type: string
          title: Extension
          description: Canonical file extension (no leading dot).
        mime_type:
          type: string
          title: Mime Type
          description: Accepted MIME type for uploads/ingest.
        kind:
          type: string
          title: Kind
          description: 'Media category: video, audio, image, or font.'
      type: object
      required:
        - extension
        - mime_type
        - kind
      title: InputFormatCap
    EnumValueCap:
      properties:
        value:
          type: string
          title: Value
          description: The enum value to send in a request.
        description:
          type: string
          title: Description
          description: What this value does.
        supported:
          type: boolean
          title: Supported
          description: Whether the renderer honors this value today.
      type: object
      required:
        - value
        - description
        - supported
      title: EnumValueCap
    MotionCap:
      properties:
        value:
          type: string
          title: Value
          description: The motion preset value.
        description:
          type: string
          title: Description
          description: What this motion does.
        supported:
          type: boolean
          title: Supported
          description: True if any scope/direction is supported.
        element_entrance:
          type: boolean
          title: Element Entrance
          description: Supported as an element entrance animation.
        element_exit:
          type: boolean
          title: Element Exit
          description: Supported as an element exit animation.
        character:
          type: boolean
          title: Character
          description: Supported as a per-glyph (character-scope) text animation.
      type: object
      required:
        - value
        - description
        - supported
        - element_entrance
        - element_exit
        - character
      title: MotionCap
    TaskTypeCap:
      properties:
        value:
          type: string
          title: Value
          description: The task type — call `POST /v1/tasks/{value with - for _}`.
        description:
          type: string
          title: Description
          description: What this task does.
        provider:
          type: string
          title: Provider
          description: 'Backend that runs it: `renderer` or `assemblyai`.'
        params:
          items:
            $ref: '#/components/schemas/ParamSpec'
          type: array
          title: Params
          description: Tunable parameters and their constraints.
      type: object
      required:
        - value
        - description
        - provider
        - params
      title: TaskTypeCap
    Limits:
      properties:
        canvas_min:
          type: integer
          title: Canvas Min
          description: Minimum output width/height in pixels.
        canvas_max:
          type: integer
          title: Canvas Max
          description: Maximum output width/height in pixels.
        frame_rate_min:
          type: integer
          title: Frame Rate Min
          description: Minimum frames per second.
        frame_rate_max:
          type: integer
          title: Frame Rate Max
          description: Maximum frames per second.
        frame_rate_default:
          type: integer
          title: Frame Rate Default
          description: Frame rate used when omitted.
        max_source_bytes:
          type: integer
          title: Max Source Bytes
          description: Maximum size of a single source/upload file.
        pagination_default_limit:
          type: integer
          title: Pagination Default Limit
          description: Default page size on list endpoints.
        pagination_max_limit:
          type: integer
          title: Pagination Max Limit
          description: Maximum page size on list endpoints.
      type: object
      required:
        - canvas_min
        - canvas_max
        - frame_rate_min
        - frame_rate_max
        - frame_rate_default
        - max_source_bytes
        - pagination_default_limit
        - pagination_max_limit
      title: Limits
    RateLimit:
      properties:
        scope:
          type: string
          title: Scope
          description: Which action this limit applies to.
        limit:
          type: integer
          title: Limit
          description: Maximum requests allowed per window.
        window_seconds:
          type: integer
          title: Window Seconds
          description: Length of the rate-limit window in seconds.
      type: object
      required:
        - scope
        - limit
        - window_seconds
      title: RateLimit
    ParamSpec:
      properties:
        name:
          type: string
          title: Name
          description: Parameter name in the task request body.
        type:
          type: string
          title: Type
          description: 'JSON type: string, number, integer, boolean, array, or enum.'
        required:
          type: boolean
          title: Required
          description: Whether the parameter must be supplied.
        minimum:
          anyOf:
            - type: number
            - type: 'null'
          title: Minimum
          description: Inclusive lower bound, if numeric.
        maximum:
          anyOf:
            - type: number
            - type: 'null'
          title: Maximum
          description: Inclusive upper bound, if numeric.
        default:
          anyOf:
            - {}
            - type: 'null'
          title: Default
          description: Default value when omitted.
        options:
          anyOf:
            - items:
                type: string
              type: array
            - type: 'null'
          title: Options
          description: Allowed values, for enum params.
        description:
          anyOf:
            - type: string
            - type: 'null'
          title: Description
          description: What the parameter controls.
      type: object
      required:
        - name
        - type
        - required
      title: ParamSpec

````