openapi: 3.1.0
info:
  title: FastAPI
  version: 0.1.0
paths:
  /users/sources/list_files:
    get:
      tags:
      - accepts-api-key
      summary: Request Files Processing
      operationId: request_files_processing_users_sources_list_files_get
      parameters:
      - name: path
        in: query
        required: true
        schema:
          type: string
          title: Path
      - name: limit
        in: query
        required: true
        schema:
          type: integer
          exclusiveMinimum: 0
          title: Limit
      - name: page
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          title: Page
      - name: offset
        in: query
        required: false
        schema:
          anyOf:
          - type: integer
            minimum: 0
          - type: 'null'
          title: Offset
      - name: cursor
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Cursor
      - name: folder_on_top
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Folder On Top
      - name: group_name
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Group Name
      - name: sort_by
        in: query
        required: false
        schema:
          anyOf:
          - enum:
            - modified_at
            - added_at
            type: string
          - type: 'null'
          title: Sort By
      - name: sort_order
        in: query
        required: false
        schema:
          enum:
          - asc
          - desc
          type: string
          default: desc
          title: Sort Order
      - name: filetype
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              $ref: '#/components/schemas/FileType'
          - type: 'null'
          title: Filetype
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/ListFilesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/get:
    get:
      tags:
      - accepts-api-key
      summary: Get User
      operationId: get_user_users_get_get
      deprecated: true
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/ApiUser'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/me:
    get:
      tags:
      - accepts-api-key
      summary: Get Current User
      description: Return the authenticated user's profile, credit balance, and subscription
        snapshot.
      operationId: get_current_user_users_me_get
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/ApiUser'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    patch:
      tags:
      - accepts-api-key
      summary: Update Current User
      operationId: update_current_user_users_me_patch
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UpdateUserRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ApiUser'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - accepts-api-key
      summary: Delete Current User
      description: "Delete the authenticated user's own account, everywhere it exists.\n\
        \nRuns the same purge as ``POST /admin/delete_account`` \u2014 Stripe\nsubscriptions,\
        \ assets, projects, chats, solely-owned groups, the SQL row,\nthe S3 objects\
        \ and (in production only) the Firebase account \u2014 and returns\na summary\
        \ instead of a stream. Deleting a Firebase account that is already\ngone is\
        \ not an error, so this is safe to call from a Firebase\n``auth.user().onDelete``\
        \ trigger.\n\nIrreversible. The email keeps its signup-history row, so registering\
        \ again\nwith the same address earns no second signup grant."
      operationId: delete_current_user_users_me_delete
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/DeleteAccountSummary'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/check_coupons:
    get:
      tags:
      - accepts-api-key
      summary: Check Coupons
      operationId: check_coupons_users_check_coupons_get
      parameters:
      - name: coupon_code
        in: query
        required: true
        schema:
          type: string
          description: Stripe promotion code to validate.
          title: Coupon Code
        description: Stripe promotion code to validate.
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/CouponCheckResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/assets/multipart/complete:
    post:
      tags:
      - accepts-api-key
      summary: Complete Multipart Asset Upload
      description: Complete a multipart upload. Client must supply ETags returned
        from each part upload.
      operationId: complete_multipart_asset_upload_users_assets_multipart_complete_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultipartCompleteRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/assets/multipart/abort:
    post:
      tags:
      - accepts-api-key
      summary: Abort Multipart Asset Upload
      operationId: abort_multipart_asset_upload_users_assets_multipart_abort_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/MultipartAbortRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/assets/upload_urls:
    post:
      tags:
      - accepts-api-key
      summary: Create Upload Urls
      operationId: create_upload_urls_users_assets_upload_urls_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                $ref: '#/components/schemas/AssetUploadRequest'
              title: Assets
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/AssetUploadResponse'
                title: Response Create Upload Urls Users Assets Upload Urls Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/assets/preprocess:
    post:
      tags:
      - accepts-api-key
      summary: Process Assets
      operationId: process_assets_users_assets_preprocess_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ProcessAssetsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/RequestTaskResponse'
                title: Response Process Assets Users Assets Preprocess Post
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/tasks/{task_id}:
    get:
      tags:
      - accepts-api-key
      summary: Get User Task
      operationId: get_user_task_users_tasks__task_id__get
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/PendingTaskResponse'
                - $ref: '#/components/schemas/CompleteTaskResponse'
                - $ref: '#/components/schemas/FailedTaskResponse'
                title: Response Get User Task Users Tasks  Task Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - accepts-api-key
      summary: Cancel User Task
      operationId: cancel_user_task_users_tasks__task_id__delete
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/CancelTaskResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /users/tasks:
    get:
      tags:
      - accepts-api-key
      summary: Get Tasks
      description: "Get pending tasks and recently finished tasks for the user.\n\n\
        Args:\n    finish_before_seconds: Number of seconds to look back for finished\
        \ tasks. Default is 300 (5 minutes)."
      operationId: get_tasks_users_tasks_get
      parameters:
      - name: finish_before_seconds
        in: query
        required: false
        schema:
          type: integer
          default: 300
          title: Finish Before Seconds
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/TaskResponse'
                title: Response Get Tasks Users Tasks Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/models:
    get:
      tags:
      - accepts-api-key
      summary: List Capabilities
      description: Describe every `/tools/*` capability and the options each accepts.
      operationId: list_capabilities_tools_models_get
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/ToolsCapabilities'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/generate/video:
    post:
      tags:
      - accepts-api-key
      summary: Generate Video
      operationId: generate_video_tools_generate_video_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateVideoRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateVideoResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/generate/image:
    post:
      tags:
      - accepts-api-key
      summary: Generate Image
      operationId: generate_image_tools_generate_image_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateImageRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateImageResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/generate/audio:
    post:
      tags:
      - accepts-api-key
      summary: Generate Audio
      operationId: generate_audio_tools_generate_audio_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateAudioRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateAudioResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/generate/tts:
    post:
      tags:
      - accepts-api-key
      summary: Generate Tts
      operationId: generate_tts_tools_generate_tts_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/GenerateTtsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GenerateTtsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/search/stock:
    post:
      tags:
      - accepts-api-key
      summary: Search Stock
      operationId: search_stock_tools_search_stock_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchStockRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchStockResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/search/assets:
    post:
      tags:
      - accepts-api-key
      summary: Search Assets
      operationId: search_assets_tools_search_assets_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchAssetsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchAssetsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/search/custom-agents:
    post:
      tags:
      - accepts-api-key
      summary: Search Custom Agents
      operationId: search_custom_agents_tools_search_custom_agents_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchCustomAgentsRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchCustomAgentsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tools/search/voices:
    post:
      tags:
      - accepts-api-key
      summary: Search Voices
      operationId: search_voices_tools_search_voices_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SearchVoicesRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SearchVoicesResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /video/description/{source_file_id}:
    post:
      tags:
      - accepts-api-key
      summary: Request Description
      description: 'Run the description (Gemini analysis) task on an asset.


        Requires WRITE access on the asset or admin. ``needs_downscale`` reports whether
        a

        player/Gemini-compatible video rendition is missing. When it is, we encode
        a

        compatible proxy first and chain the description task after it (the downscale''s

        ``link`` callback), so Gemini only runs once a usable rendition exists. The
        returned

        ``task_id`` always tracks the description task, so callers poll the same id
        in both

        cases.'
      operationId: request_description_video_description__source_file_id__post
      parameters:
      - name: source_file_id
        in: path
        required: true
        schema:
          type: string
          title: Source File Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/GenerateDescriptionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /video/transcript/{source_file_id}:
    post:
      tags:
      - accepts-api-key
      summary: Request Transcript
      description: 'Generate a transcript for a video/audio/master-clip asset through
        the STT task.


        Requires WRITE access on the asset or admin. Rejects asset types that cannot
        be

        transcribed with a 400. The task no-ops when a transcript was already generated.'
      operationId: request_transcript_video_transcript__source_file_id__post
      parameters:
      - name: source_file_id
        in: path
        required: true
        schema:
          type: string
          title: Source File Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/GenerateTranscriptResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /asset/{asset_id}/visibility:
    put:
      tags:
      - accepts-api-key
      summary: Set Asset Visibility
      description: Set visibility (is_public_read) for a single asset (SSE). WRITE
        required.
      operationId: set_asset_visibility_asset__asset_id__visibility_put
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          title: Asset Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetVisibilityRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /asset/most_recent:
    get:
      tags:
      - accepts-api-key
      summary: Get Most Recent Files
      description: 'Return the most recently added file(s) the user has read access
        to.

        Uses default group(s) unless group_id is set (user must have read access to
        that group).

        after: only files with last_edit > after (newer).

        before: only files with last_edit < before (older); use the smallest last_edit
        from a previous page to get the next page.

        filetype: only files with the given file type(s).'
      operationId: get_most_recent_files_asset_most_recent_get
      parameters:
      - name: path
        in: query
        required: false
        schema:
          type: string
          default: /
          title: Path
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          exclusiveMinimum: 0
          default: 1
          title: Limit
      - name: group_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Group Id
      - name: before
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Before
      - name: after
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: After
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        content:
          application/json:
            schema:
              anyOf:
              - type: array
                items:
                  $ref: '#/components/schemas/FileType'
              - type: 'null'
              title: Filetype
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/FileReference'
                title: Response Get Most Recent Files Asset Most Recent Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /asset/folder:
    post:
      tags:
      - accepts-api-key
      summary: Create Folder
      description: 'Create a folder. Either at a path (body.path) or under a parent
        folder (body.parent_asset_id + body.name).

        Path-based: ensures folder and ancestors exist for the user''s default group.

        Parent-based: parent must be a folder the user has WRITE access to.

        Callable with API key (X-Api-Key header) or Bearer token.'
      operationId: create_folder_asset_folder_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CreateFolderRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CreateFolderResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /asset/download_urls:
    post:
      tags:
      - accepts-api-key
      summary: Get Asset Download Url Batch Json
      description: Return download URL payloads for multiple assets using one shared
        config.
      operationId: get_asset_download_url_batch_json_asset_download_urls_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetDownloadUrlBatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetDownloadUrlBatchResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /asset/infos:
    post:
      tags:
      - accepts-api-key
      summary: Get Asset Infos Batch Json
      description: Return minimal source/path/duration info for multiple assets.
      operationId: get_asset_infos_batch_json_asset_infos_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetInfosBatchRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetInfosBatchResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /asset/description/{description_id}/generation-metadata:
    get:
      tags:
      - accepts-api-key
      summary: Get Asset Description Generation Metadata
      description: Return debug/provenance metadata saved with one generated chunk
        description.
      operationId: get_asset_description_generation_metadata_asset_description__description_id__generation_metadata_get
      parameters:
      - name: description_id
        in: path
        required: true
        schema:
          type: string
          title: Description Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/AssetDescriptionGenerationMetadataResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /asset/{asset_id}/duplicate:
    post:
      tags:
      - accepts-api-key
      summary: Duplicate Asset
      description: 'Duplicate a project asset. Caller must have WRITE on the source.


        Non-project assets return 400. Missing asset or no write access returns 404.'
      operationId: duplicate_asset_asset__asset_id__duplicate_post
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          title: Asset Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/DuplicateAssetResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /asset/{asset_id}/description/{description_id}:
    patch:
      tags:
      - accepts-api-key
      summary: Update Asset Scene Description
      description: Replace one timed scene description and regenerate its embeddings.
      operationId: update_asset_scene_description_asset__asset_id__description__description_id__patch
      parameters:
      - name: asset_id
        in: path
        required: true
        schema:
          type: string
          title: Asset Id
      - name: description_id
        in: path
        required: true
        schema:
          type: string
          title: Description Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AssetSceneDescriptionUpdateRequest'
      responses:
        '202':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/AssetSceneDescriptionUpdateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /project/{project_id}/export/cost:
    get:
      tags:
      - accepts-api-key
      summary: Estimate Export Cost
      description: Estimate the token cost of rendering a project's timeline.
      operationId: estimate_export_cost_project__project_id__export_cost_get
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: rendition
        in: query
        required: true
        schema:
          enum:
          - 480p
          - 720p
          - 1080p
          - 4k
          type: string
          description: The rendition to estimate (for example, 1080p).
          title: Rendition
        description: The rendition to estimate (for example, 1080p).
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/ExportCostEstimateResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /project/{project_id}/export:
    post:
      tags:
      - accepts-api-key
      summary: Export Project
      description: 'Start async export of project to MP4 at one or more resolutions.
        Creates the export asset

        in the API, then enqueues a task that browser-encodes the highest requested
        resolution.

        Smaller renditions are enqueued as downscaling_task jobs (not chained). The
        export

        appears as a new video asset in the project''s export folder (project name
        + date + .mp4).


        Returns task_id and asset_id. Poll GET /users/tasks/{task_id} for completion;
        result includes asset_id.'
      operationId: export_project_project__project_id__export_post
      parameters:
      - name: project_id
        in: path
        required: true
        schema:
          type: string
          title: Project Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: array
              items:
                enum:
                - 480p
                - 720p
                - 1080p
                - 4k
                type: string
              description: List of resolutions to export (e.g. ["720p", "1080p"])
              title: Renditions
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExportProjectResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /billing/catalog:
    get:
      tags:
      - accepts-api-key
      summary: Get Billing Catalog
      operationId: get_billing_catalog_billing_catalog_get
      parameters:
      - name: If-None-Match
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: If-None-Match
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/BillingCatalog'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/mcp/prompt:
    get:
      tags:
      - accepts-api-key
      summary: Get General Mcp Prompt
      description: Return the stable, lightweight baseline prompt for MCP clients.
      operationId: get_general_mcp_prompt_agent_mcp_prompt_get
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/GeneralMcpPromptResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/tools/list:
    get:
      tags:
      - accepts-api-key
      summary: List Agent Tools
      description: Return this user's visible agent tools, optionally filtered by
        GenAI.
      operationId: list_agent_tools_agent_tools_list_get
      parameters:
      - name: is_gen_ai
        in: query
        required: false
        schema:
          anyOf:
          - type: boolean
          - type: 'null'
          description: Filter the catalog to GenAI tools (true) or non-GenAI tools
            (false).
          title: Is Gen Ai
        description: Filter the catalog to GenAI tools (true) or non-GenAI tools (false).
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  type: object
                  additionalProperties: true
                title: Response List Agent Tools Agent Tools List Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/response/{chat_id}:
    delete:
      tags:
      - accepts-api-key
      summary: Cancel Response
      operationId: cancel_response_agent_response__chat_id__delete
      parameters:
      - name: chat_id
        in: path
        required: true
        schema:
          type: string
          title: Chat Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: string
                title: Response Cancel Response Agent Response  Chat Id  Delete
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
      - accepts-api-key
      summary: Stream Chat Messages
      description: "Subscribe to a chat's agent SSE stream (Redis-backed).\n\nEmits\
        \ the exact same events as ``POST /agent/response`` \u2014 both sides read\n\
        from the per-chat Redis Stream written by the producer running the agent.\n\
        \nQuery params:\n  - ``last_event_id``: resume from this Redis stream entry\
        \ id. Pass the\n    ``id:`` of the last SSE event you received to avoid duplicates.\
        \ When\n    omitted, the subscription starts from \"now\" \u2014 only events\
        \ produced\n    after the GET request arrives are delivered, no history is\
        \ replayed.\n  - ``after``: accepted for backward compatibility and currently\
        \ ignored.\n    Use ``last_event_id`` instead.\n\nLike ``POST /agent/response``,\
        \ the stream is terminated by a\n``tellers.stream.end`` event carrying the\
        \ reason the turn ended. It is also\nemitted when the subscription finds the\
        \ chat already finished, so a client\nthat reconnects late still gets a definitive\
        \ answer instead of an idle\nsocket."
      operationId: stream_chat_messages_agent_response__chat_id__get
      parameters:
      - name: chat_id
        in: path
        required: true
        schema:
          type: string
          title: Chat Id
      - name: after
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: After
      - name: last_event_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Last Event Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/response:
    post:
      tags:
      - accepts-api-key
      summary: Process Agent Message
      description: "Run the agent and stream its events as SSE.\n\nThe last event\
        \ of the stream is always ``tellers.stream.end``, whose\n``reason`` tells\
        \ the client why the turn ended (``completed``,\n``cancelled``, ``insufficient_tokens``,\
        \ ``error``, ``interrupted``). A\nstream that closes *without* it was cut\
        \ short by the network \u2014 reconnect\nwith ``GET /agent/response/{chat_id}``\
        \ to pick the run back up."
      operationId: process_agent_message_agent_response_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentMessageRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/response/json:
    post:
      tags:
      - accepts-api-key
      - accepts-api-key
      summary: Process Agent Message Json
      description: 'Same as POST /response but runs with no_interaction=True. Emits
        only SSE events

        `event: tellers.json_result` (progressing while running, then done with full
        result).

        chat_id must be set by the client or is created at the start.'
      operationId: process_agent_message_json_agent_response_json_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/AgentMessageRequestWithoutNoInteraction'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/use-tool:
    post:
      tags:
      - accepts-api-key
      summary: Use Agent Tool
      operationId: use_agent_tool_agent_use_tool_post
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/UseAgentToolRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/chats/list:
    get:
      tags:
      - accepts-api-key
      summary: List Chats
      operationId: list_chats_agent_chats_list_get
      parameters:
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          exclusiveMinimum: 0
          default: 10
          title: Limit
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: before
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Before
      - name: after
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: After
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  $ref: '#/components/schemas/ChatHistoryResponse'
                title: Response List Chats Agent Chats List Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/chat/{chat_id}:
    get:
      tags:
      - accepts-api-key
      summary: Get Chat Info
      operationId: get_chat_info_agent_chat__chat_id__get
      parameters:
      - name: chat_id
        in: path
        required: true
        schema:
          type: string
          title: Chat Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/ChatHistoryResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - accepts-api-key
      summary: Delete Chat
      operationId: delete_chat_agent_chat__chat_id__delete
      parameters:
      - name: chat_id
        in: path
        required: true
        schema:
          type: string
          title: Chat Id
      - name: cancel_running
        in: query
        required: false
        schema:
          type: boolean
          default: false
          title: Cancel Running
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/chat/{chat_id}/rename:
    patch:
      tags:
      - accepts-api-key
      summary: Rename Chat
      operationId: rename_chat_agent_chat__chat_id__rename_patch
      parameters:
      - name: chat_id
        in: path
        required: true
        schema:
          type: string
          title: Chat Id
      - name: name
        in: query
        required: true
        schema:
          type: string
          title: Name
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /agent/chat/{chat_id}/messages:
    get:
      tags:
      - accepts-api-key
      summary: Get Chat
      operationId: get_chat_agent_chat__chat_id__messages_get
      parameters:
      - name: chat_id
        in: path
        required: true
        schema:
          type: string
          title: Chat Id
      - name: offset
        in: query
        required: false
        schema:
          type: integer
          minimum: 0
          default: 0
          title: Offset
      - name: limit
        in: query
        required: false
        schema:
          type: integer
          exclusiveMinimum: 0
          default: 20
          title: Limit
      - name: before
        in: query
        required: false
        schema:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Before
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                type: array
                items:
                  anyOf:
                  - $ref: '#/components/schemas/ChatMessageUserResponse'
                  - $ref: '#/components/schemas/ChatMessageAgentResponse'
                title: Response Get Chat Agent Chat  Chat Id  Messages Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /create:
    get:
      tags:
      - accepts-api-key
      summary: Create Agent Stream
      description: 'SSE stream for agent creation. GET with query params; same behavior
        as

        POST /agent/response/json. Emits event: tellers.json_result (progressing,
        then done).'
      operationId: create_agent_stream_create_get
      parameters:
      - name: prompt
        in: query
        required: true
        schema:
          type: string
          description: The message/prompt to send to the agent
          title: Prompt
        description: The message/prompt to send to the agent
      - name: tools
        in: query
        required: false
        schema:
          anyOf:
          - type: array
            items:
              type: string
          - type: 'null'
          description: Tool IDs to use. If omitted, defaults to available agent tools.
          title: Tools
        description: Tool IDs to use. If omitted, defaults to available agent tools.
      - name: llm_model
        in: query
        required: false
        schema:
          type: string
          description: The LLM model to use for the response.
          default: gpt-5.4-2026-03-05
          title: Llm Model
        description: The LLM model to use for the response.
      - name: parallel_tool_calls
        in: query
        required: false
        schema:
          type: boolean
          description: Whether to allow parallel tool calls.
          default: false
          title: Parallel Tool Calls
        description: Whether to allow parallel tool calls.
      - name: chat_id
        in: query
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          description: Optional chat ID for conversation tracking. Created if omitted.
          title: Chat Id
        description: Optional chat ID for conversation tracking. Created if omitted.
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema: {}
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /settings:
    get:
      tags:
      - accepts-api-key
      summary: Get Settings
      operationId: get_settings_settings_get
      parameters:
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/AppSettings'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /task/{task_id}:
    get:
      tags:
      - accepts-api-key
      summary: Get Task
      operationId: get_task_task__task_id__get
      deprecated: true
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - name: authorization
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: Authorization
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                anyOf:
                - $ref: '#/components/schemas/PendingTaskResponse'
                - $ref: '#/components/schemas/CompleteTaskResponse'
                - $ref: '#/components/schemas/FailedTaskResponse'
                title: Response Get Task Task  Task Id  Get
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
      - accepts-api-key
      summary: Delete Task
      operationId: delete_task_task__task_id__delete
      deprecated: true
      parameters:
      - name: task_id
        in: path
        required: true
        schema:
          type: string
          title: Task Id
      - name: x-api-key
        in: header
        required: false
        schema:
          anyOf:
          - type: string
          - type: 'null'
          title: X-Api-Key
      - 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/CancelTaskResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
components:
  schemas:
    AgentMessageRequest:
      properties:
        message:
          type: string
          title: Message
          description: The message to send to the agent
        chat_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Chat Id
          description: Optional chat ID for conversation tracking
        previous_response_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Previous Response Id
          description: The ID of the previous response to the model. Use this to create
            multi-turn conversations.
        llm_verbosity:
          type: string
          enum:
          - low
          - medium
          - high
          title: Llm Verbosity
          description: Range of number of tokens that can be generated by the LLM,
            higher values yield more verbose responses.
          default: low
        llm_reasoning_effort:
          anyOf:
          - type: string
            enum:
            - none
            - minimal
            - low
            - medium
            - high
            - xhigh
            - max
          - type: 'null'
          title: Llm Reasoning Effort
          description: 'Controls reasoning effort: higher values yield more precise
            but slower responses.'
          default: low
        priority:
          anyOf:
          - type: string
            enum:
            - low
            - default
            - high
          - type: 'null'
          title: Priority
          description: 'Priority level for the response: ''low'' (cheaper/slower),
            ''default'' (standard), or ''high'' (premium/low-latency). Only levels
            in the chosen model''s `available_priorities` (see GET /) take effect;
            others fall back to ''default''.'
        context:
          anyOf:
          - $ref: '#/components/schemas/AppContext'
          - type: 'null'
          description: The app context when the response is sent.
        llm_model:
          type: string
          enum:
          - gpt-5.6-sol
          - gpt-5.6-terra
          - gpt-5.6-luna
          - gpt-5.5-2026-04-23
          - gpt-5.5-pro-2026-04-23
          - gpt-5.4-pro-2026-03-05
          - gpt-5.4
          - gpt-5.4-mini
          - gpt-5.3-codex
          - gpt-5.2-2025-12-11
          - gpt-5-mini-2025-08-07
          - gpt-5-nano
          title: Llm Model
          description: The model to use to generate the response.
          default: gpt-5.6-terra
        tools:
          items:
            type: string
          type: array
          title: Tools
          description: The tools to use to generate the response. Defaults to the
            same as GET /settings (AVAILABLE_AGENT_TOOLS if set, else all tools).
        custom_agent_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Custom Agent Id
          description: The ID of the custom agent to use to generate the response.
            If not provided, the default custom agent will be used.
        parallel_tool_calls:
          type: boolean
          title: Parallel Tool Calls
          description: Whether to allow parallel tool calls. If True, the tool calls
            will be executed in parallel. If False, the tool calls will be executed
            sequentially.
          default: false
        compaction:
          type: boolean
          title: Compaction
          description: Whether to enable automatic context cleanup when the selected
            model supports it. This keeps long conversations manageable.
          default: true
        override_llm_verbosity:
          anyOf:
          - type: string
            enum:
            - low
            - medium
            - high
          - type: 'null'
          title: Override Llm Verbosity
          description: Override the verbosity of the LLM, range of number of tokens
            that can be generated by the LLM, higher values yield more verbose responses.
        override_llm_reasoning_effort:
          anyOf:
          - type: string
            enum:
            - none
            - minimal
            - low
            - medium
            - high
            - xhigh
            - max
          - type: 'null'
          title: Override Llm Reasoning Effort
          description: 'Override the reasoning effort of the LLM, controls reasoning
            effort: higher values yield more precise but slower responses.'
        max_mode:
          type: boolean
          title: Max Mode
          description: Whether to enable max mode. If True, the agent will use the
            maximum number of tokens allowed by the model.
          default: false
        tool_exposure:
          $ref: '#/components/schemas/ToolExposure'
          description: "How much of each tool the model is shown up front. 'flat_search'\
            \ (default) defers the parameter schemas behind the model's tool_search\
            \ tool but keeps every tool name and description visible, because a deferred\
            \ top-level function still shows both \u2014 roughly 10k tokens up front.\
            \ 'search' groups deferred tools into namespaces, showing only namespace\
            \ descriptions up front. 'flat' defers nothing \u2014 every schema up\
            \ front as a plain function list, no tool_search, roughly 45k tokens \u2014\
            \ and is how you rule out tool discovery entirely when the agent does\
            \ not call a tool you expect it to. Both deferring values fall back to\
            \ 'flat' on models without tool_search."
          default: flat_search
        max_tellers_token:
          anyOf:
          - type: integer
            minimum: 0.0
          - type: 'null'
          title: Max Tellers Token
          description: Maximum cumulative Tellers Token budget for the agent run.
        no_interaction:
          type: boolean
          title: No Interaction
          description: Whether to disable interaction with the agent. If True, the
            agent will try to generate a response without interacting with the user.
          default: false
      additionalProperties: false
      type: object
      required:
      - message
      title: AgentMessageRequest
    AgentMessageRequestWithoutNoInteraction:
      properties:
        message:
          type: string
          title: Message
          description: The message to send to the agent
        chat_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Chat Id
          description: Optional chat ID for conversation tracking
        previous_response_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Previous Response Id
          description: The ID of the previous response to the model. Use this to create
            multi-turn conversations.
        llm_verbosity:
          type: string
          enum:
          - low
          - medium
          - high
          title: Llm Verbosity
          description: Range of number of tokens that can be generated by the LLM,
            higher values yield more verbose responses.
          default: low
        llm_reasoning_effort:
          anyOf:
          - type: string
            enum:
            - none
            - minimal
            - low
            - medium
            - high
            - xhigh
            - max
          - type: 'null'
          title: Llm Reasoning Effort
          description: 'Controls reasoning effort: higher values yield more precise
            but slower responses.'
          default: low
        priority:
          anyOf:
          - type: string
            enum:
            - low
            - default
            - high
          - type: 'null'
          title: Priority
          description: 'Priority level for the response: ''low'' (cheaper/slower),
            ''default'' (standard), or ''high'' (premium/low-latency). Only levels
            in the chosen model''s `available_priorities` (see GET /) take effect;
            others fall back to ''default''.'
        context:
          anyOf:
          - $ref: '#/components/schemas/AppContext'
          - type: 'null'
          description: The app context when the response is sent.
        llm_model:
          type: string
          enum:
          - gpt-5.6-sol
          - gpt-5.6-terra
          - gpt-5.6-luna
          - gpt-5.5-2026-04-23
          - gpt-5.5-pro-2026-04-23
          - gpt-5.4-pro-2026-03-05
          - gpt-5.4
          - gpt-5.4-mini
          - gpt-5.3-codex
          - gpt-5.2-2025-12-11
          - gpt-5-mini-2025-08-07
          - gpt-5-nano
          title: Llm Model
          description: The model to use to generate the response.
          default: gpt-5.6-terra
        tools:
          items:
            type: string
          type: array
          title: Tools
          description: The tools to use to generate the response. Defaults to the
            same as GET /settings (AVAILABLE_AGENT_TOOLS if set, else all tools).
        custom_agent_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Custom Agent Id
          description: The ID of the custom agent to use to generate the response.
            If not provided, the default custom agent will be used.
        parallel_tool_calls:
          type: boolean
          title: Parallel Tool Calls
          description: Whether to allow parallel tool calls. If True, the tool calls
            will be executed in parallel. If False, the tool calls will be executed
            sequentially.
          default: false
        compaction:
          type: boolean
          title: Compaction
          description: Whether to enable automatic context cleanup when the selected
            model supports it. This keeps long conversations manageable.
          default: true
        override_llm_verbosity:
          anyOf:
          - type: string
            enum:
            - low
            - medium
            - high
          - type: 'null'
          title: Override Llm Verbosity
          description: Override the verbosity of the LLM, range of number of tokens
            that can be generated by the LLM, higher values yield more verbose responses.
        override_llm_reasoning_effort:
          anyOf:
          - type: string
            enum:
            - none
            - minimal
            - low
            - medium
            - high
            - xhigh
            - max
          - type: 'null'
          title: Override Llm Reasoning Effort
          description: 'Override the reasoning effort of the LLM, controls reasoning
            effort: higher values yield more precise but slower responses.'
        max_mode:
          type: boolean
          title: Max Mode
          description: Whether to enable max mode. If True, the agent will use the
            maximum number of tokens allowed by the model.
          default: false
        tool_exposure:
          $ref: '#/components/schemas/ToolExposure'
          description: "How much of each tool the model is shown up front. 'flat_search'\
            \ (default) defers the parameter schemas behind the model's tool_search\
            \ tool but keeps every tool name and description visible, because a deferred\
            \ top-level function still shows both \u2014 roughly 10k tokens up front.\
            \ 'search' groups deferred tools into namespaces, showing only namespace\
            \ descriptions up front. 'flat' defers nothing \u2014 every schema up\
            \ front as a plain function list, no tool_search, roughly 45k tokens \u2014\
            \ and is how you rule out tool discovery entirely when the agent does\
            \ not call a tool you expect it to. Both deferring values fall back to\
            \ 'flat' on models without tool_search."
          default: flat_search
        max_tellers_token:
          anyOf:
          - type: integer
            minimum: 0.0
          - type: 'null'
          title: Max Tellers Token
          description: Maximum cumulative Tellers Token budget for the agent run.
      additionalProperties: false
      type: object
      required:
      - message
      title: AgentMessageRequestWithoutNoInteraction
    ApiUser:
      properties:
        firebase_uid:
          anyOf:
          - type: string
          - type: 'null'
          title: Firebase Uid
        email:
          type: string
          title: Email
        company:
          anyOf:
          - type: string
          - type: 'null'
          title: Company
        first_name:
          anyOf:
          - type: string
          - type: 'null'
          title: First Name
        job_title:
          anyOf:
          - type: string
          - type: 'null'
          title: Job Title
        last_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Last Name
        profile_pic:
          anyOf:
          - type: string
          - type: 'null'
          title: Profile Pic
        created_at_str:
          type: string
          title: Created At Str
          description: '``created_at`` as UTC ISO-8601 ending in Z (e.g. for debugging
            / clients).'
        last_seen_at_str:
          type: string
          title: Last Seen At Str
          description: '``last_seen_at`` as UTC ISO-8601 ending in Z.'
        updated_at_str:
          type: string
          title: Updated At Str
          description: '``updated_at`` as UTC ISO-8601 ending in Z.'
        credits:
          type: number
          title: Credits
          description: Spendable balance from grants (`get_token`), not legacy columns.
        storage_quota_gb:
          type: integer
          title: Storage Quota Gb
          description: Total storage quota available to the user in GB.
        subscription:
          anyOf:
          - $ref: '#/components/schemas/ApiUserSubscription'
          - type: 'null'
        role:
          additionalProperties:
            type: boolean
          type: object
          title: Role
          description: Role flags for roles held by the user. Missing roles are omitted.
        user_preferences:
          $ref: '#/components/schemas/UserPreferences'
          description: Persisted user preferences returned with the user profile.
      type: object
      required:
      - firebase_uid
      - email
      - company
      - first_name
      - job_title
      - last_name
      - profile_pic
      - created_at_str
      - last_seen_at_str
      - updated_at_str
      - credits
      - storage_quota_gb
      - subscription
      - user_preferences
      title: ApiUser
    ApiUserSubscription:
      properties:
        type:
          type: string
          enum:
          - Monthly
          - Yearly
          title: Type
          description: User-facing subscription cadence label.
        monthly_tokens:
          type: number
          title: Monthly Tokens
          description: Subscription token amount available each month.
        storage_quota_gb:
          type: integer
          title: Storage Quota Gb
          description: Total storage quota available to the user in GB.
        pricing:
          items:
            $ref: '#/components/schemas/ApiUserSubscriptionPricingLine'
          type: array
          title: Pricing
          description: Current Stripe subscription price lines with price id and quantity.
        cancel_at_period_end:
          type: boolean
          title: Cancel At Period End
          description: True when Stripe will cancel the subscription at period end.
          default: false
        cancel_at:
          anyOf:
          - type: string
          - type: 'null'
          title: Cancel At
          description: UTC ISO-8601 time when Stripe will cancel the subscription.
        current_period_end:
          anyOf:
          - type: string
          - type: 'null'
          title: Current Period End
          description: UTC ISO-8601 end of the current subscription period.
        latest_payment_issue:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Latest Payment Issue
          description: When set, an invoice needs payment or customer action (e.g.
            3DS). Fields may include invoice_id, invoice_status, hosted_invoice_url,
            customer_action_url.
      type: object
      required:
      - type
      - monthly_tokens
      - storage_quota_gb
      title: ApiUserSubscription
    ApiUserSubscriptionPricingLine:
      properties:
        id:
          type: string
          title: Id
          description: Stripe price id for this subscription line.
        quantity:
          type: integer
          title: Quantity
          description: Quantity for this Stripe price line.
      type: object
      required:
      - id
      - quantity
      title: ApiUserSubscriptionPricingLine
    AppContext:
      properties:
        current_playback_time:
          anyOf:
          - type: number
          - type: 'null'
          title: Current Playback Time
          description: The current playback time in the project when the response
            is sent.
        on_screen_asset:
          anyOf:
          - type: string
          - type: 'null'
          title: On Screen Asset
          description: The id of the asset on screen when the response is sent.
        on_screen_project:
          anyOf:
          - type: string
          - type: 'null'
          title: On Screen Project
          description: The id of the project on screen when the response is sent.
        selected_clips:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Selected Clips
          description: The ids of the clips selected when the response is sent.
        selected_assets:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Selected Assets
          description: The ids of the assets selected when the response is sent.
        selected_projects:
          anyOf:
          - items:
              type: string
            type: array
          - type: 'null'
          title: Selected Projects
          description: The ids of the projects selected when the response is sent.
      additionalProperties: false
      type: object
      title: AppContext
    AppSettings:
      properties:
        maintenance_mode:
          type: boolean
          title: Maintenance Mode
        social_publishing_platforms:
          items:
            $ref: '#/components/schemas/SocialPublishingPlatformSetting'
          type: array
          title: Social Publishing Platforms
        project_aspect_ratios:
          items:
            $ref: '#/components/schemas/AspectRatio'
          type: array
          title: Project Aspect Ratios
        available_agent_tools:
          items:
            additionalProperties: true
            type: object
          type: array
          title: Available Agent Tools
        available_llm_models:
          items:
            $ref: '#/components/schemas/AvailableModel'
          type: array
          title: Available Llm Models
        llm_model_tiers:
          $ref: '#/components/schemas/LlmModelTier'
        presets:
          items:
            $ref: '#/components/schemas/TellersPreset'
          type: array
          title: Presets
      type: object
      required:
      - maintenance_mode
      - social_publishing_platforms
      - project_aspect_ratios
      - available_agent_tools
      - available_llm_models
      - llm_model_tiers
      - presets
      title: AppSettings
    AspectRatio:
      type: string
      enum:
      - '16_9'
      - '9_16'
      - '4_5'
      - '1_1'
      - '2_3'
      - '1.91_1'
      - '1.43_1'
      title: AspectRatio
    AssetAnalysisSettings:
      properties:
        reasoning:
          anyOf:
          - type: string
            enum:
            - low
            - medium
            - high
          - type: 'null'
          title: Reasoning
        fps:
          anyOf:
          - type: number
            maximum: 24.0
            minimum: 1.0
          - type: 'null'
          title: Fps
        entity_quality:
          anyOf:
          - type: string
            enum:
            - low
            - medium
            - high
          - type: 'null'
          title: Entity Quality
        asset_quality:
          anyOf:
          - type: string
            enum:
            - low
            - medium
            - high
          - type: 'null'
          title: Asset Quality
        prompt:
          anyOf:
          - type: string
          - type: 'null'
          title: Prompt
      additionalProperties: false
      type: object
      title: AssetAnalysisSettings
    AssetDescriptionGenerationMetadataResponse:
      properties:
        description_id:
          type: string
          title: Description Id
        asset_id:
          type: string
          title: Asset Id
        start_time_ms:
          type: integer
          title: Start Time Ms
        end_time_ms:
          type: integer
          title: End Time Ms
        generation_metadata:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Generation Metadata
      type: object
      required:
      - description_id
      - asset_id
      - start_time_ms
      - end_time_ms
      - generation_metadata
      title: AssetDescriptionGenerationMetadataResponse
    AssetDownloadUrlBatchItem:
      properties:
        asset_id:
          type: string
          title: Asset Id
        error:
          type: boolean
          title: Error
        error_message:
          anyOf:
          - type: string
          - type: 'null'
          title: Error Message
        download:
          anyOf:
          - $ref: '#/components/schemas/AssetDownloadUrlResponse'
          - type: 'null'
      type: object
      required:
      - asset_id
      - error
      title: AssetDownloadUrlBatchItem
      description: Resolved download payload for one asset in a batch request.
    AssetDownloadUrlBatchRequest:
      properties:
        asset_ids:
          items:
            type: string
          type: array
          minItems: 1
          title: Asset Ids
          description: Asset IDs to resolve.
        quality:
          type: string
          enum:
          - 480p
          - 720p
          - 1080p
          - original
          - highest
          - lowest
          title: Quality
          default: 720p
        player_compatible:
          type: boolean
          title: Player Compatible
          default: true
        frame_time:
          anyOf:
          - type: number
          - type: 'null'
          title: Frame Time
        request_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Request Id
      type: object
      required:
      - asset_ids
      title: AssetDownloadUrlBatchRequest
      description: Request body for resolving multiple asset download URLs.
    AssetDownloadUrlBatchResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/AssetDownloadUrlBatchItem'
          type: array
          title: Items
      type: object
      required:
      - items
      title: AssetDownloadUrlBatchResponse
    AssetDownloadUrlResponse:
      properties:
        url:
          type: string
          title: Url
        expiredIn:
          type: integer
          title: Expiredin
          description: 'Seconds the URL is expected to work: matches S3 presign expiry
            when applicable; for Pexels/CDN links this is a recommended refresh interval,
            not a hard protocol expiry.'
        current_time:
          type: string
          format: date-time
          title: Current Time
          description: The current time when the URL was generated
        request_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Request Id
          description: The request ID when the URL was generated
      type: object
      required:
      - url
      - expiredIn
      title: AssetDownloadUrlResponse
      description: Media URL and how long it should remain valid (for refresh / UrlSource
        lifecycle).
    AssetFrameRef:
      properties:
        asset_id:
          type: string
          title: Asset Id
          description: The asset to take the frame from.
        timestamp_seconds:
          anyOf:
          - type: number
            minimum: 0.0
          - type: 'null'
          title: Timestamp Seconds
          description: Which frame to take, in seconds, when the asset is a video.
            Ignored if `is_last_frame` is true. Defaults to the first frame.
        is_last_frame:
          type: boolean
          title: Is Last Frame
          description: Take the asset's final frame, ignoring `timestamp_seconds`.
          default: false
        crop:
          anyOf:
          - $ref: '#/components/schemas/AssetImageCropRef'
          - type: 'null'
          description: Optional edge insets to crop before sending the frame to a
            model.
      additionalProperties: false
      type: object
      required:
      - asset_id
      title: AssetFrameRef
      description: "A single frame of an asset \u2014 mirrors the tools' ``AssetFrame``."
    AssetImageCropRef:
      properties:
        crop_l:
          anyOf:
          - type: number
            exclusiveMaximum: 1.0
            minimum: 0.0
          - type: 'null'
          title: Crop L
        crop_r:
          anyOf:
          - type: number
            exclusiveMaximum: 1.0
            minimum: 0.0
          - type: 'null'
          title: Crop R
        crop_t:
          anyOf:
          - type: number
            exclusiveMaximum: 1.0
            minimum: 0.0
          - type: 'null'
          title: Crop T
        crop_b:
          anyOf:
          - type: number
            exclusiveMaximum: 1.0
            minimum: 0.0
          - type: 'null'
          title: Crop B
      additionalProperties: false
      type: object
      title: AssetImageCropRef
      description: "Optional edge insets \u2014 mirrors the tools' ``AssetImageCrop``."
    AssetInfosBatchItem:
      properties:
        asset_id:
          type: string
          title: Asset Id
        error:
          type: boolean
          title: Error
        error_message:
          anyOf:
          - type: string
          - type: 'null'
          title: Error Message
        info:
          anyOf:
          - $ref: '#/components/schemas/AssetMinimalInfoResponse'
          - type: 'null'
      type: object
      required:
      - asset_id
      - error
      title: AssetInfosBatchItem
    AssetInfosBatchRequest:
      properties:
        asset_ids:
          items:
            type: string
          type: array
          minItems: 1
          title: Asset Ids
          description: Asset IDs to fetch minimal info for.
      type: object
      required:
      - asset_ids
      title: AssetInfosBatchRequest
    AssetInfosBatchResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/AssetInfosBatchItem'
          type: array
          title: Items
      type: object
      required:
      - items
      title: AssetInfosBatchResponse
    AssetMinimalInfoResponse:
      properties:
        source_name:
          type: string
          title: Source Name
        path:
          type: string
          title: Path
        duration_second:
          type: number
          title: Duration Second
        file_type:
          $ref: '#/components/schemas/FileType'
      type: object
      required:
      - source_name
      - path
      - duration_second
      - file_type
      title: AssetMinimalInfoResponse
    AssetPeriodRef:
      properties:
        asset_id:
          type: string
          title: Asset Id
          description: The asset to take the range from.
        start_time:
          anyOf:
          - type: number
            minimum: 0.0
          - type: 'null'
          title: Start Time
          description: Range start in seconds. Defaults to 0.
        end_time:
          anyOf:
          - type: number
            minimum: 0.0
          - type: 'null'
          title: End Time
          description: Range end in seconds. Ignored if `till_the_end` is true. Defaults
            to the end of the asset.
        till_the_end:
          type: boolean
          title: Till The End
          description: Extend to the end of the asset, ignoring `end_time`.
          default: false
      additionalProperties: false
      type: object
      required:
      - asset_id
      title: AssetPeriodRef
      description: "A time range within an asset \u2014 mirrors the tools' ``AssetPeriod``."
    AssetSceneDescriptionUpdateRequest:
      properties:
        description:
          type: string
          minLength: 1
          title: Description
      type: object
      required:
      - description
      title: AssetSceneDescriptionUpdateRequest
    AssetSceneDescriptionUpdateResponse:
      properties:
        description_id:
          type: string
          title: Description Id
        task_id:
          type: string
          title: Task Id
      type: object
      required:
      - description_id
      - task_id
      title: AssetSceneDescriptionUpdateResponse
    AssetSearchResult:
      properties:
        asset_id:
          type: string
          title: Asset Id
        score:
          type: number
          title: Score
        description:
          type: string
          title: Description
        start_time_seconds:
          type: number
          title: Start Time Seconds
        end_time_seconds:
          type: number
          title: End Time Seconds
      additionalProperties: false
      type: object
      required:
      - asset_id
      - score
      - description
      - start_time_seconds
      - end_time_seconds
      title: AssetSearchResult
    AssetUploadRequest:
      properties:
        content_length:
          type: integer
          title: Content Length
          description: The content length of the asset in bytes
        upload_id:
          type: string
          title: Upload Id
        source_file:
          $ref: '#/components/schemas/SourceFileInfo'
        file_type:
          $ref: '#/components/schemas/FileType'
          default: video
        parent_asset_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Parent Asset Id
          description: Optional asset_id of a folder to upload into. When set, the
            file's inAppPath is treated as relative to this folder and the user must
            have write access to it.
        multipart:
          type: boolean
          title: Multipart
          description: If true, returns presigned multipart upload URLs instead of
            a single PUT URL.
          default: false
        multipart_part_size:
          anyOf:
          - type: integer
          - type: 'null'
          title: Multipart Part Size
          description: Optional multipart part size in bytes (min 5 MiB). If omitted,
            a default is used.
      type: object
      required:
      - content_length
      - upload_id
      - source_file
      title: AssetUploadRequest
    AssetUploadResponse:
      properties:
        upload_id:
          type: string
          title: Upload Id
        asset_id:
          type: string
          title: Asset Id
        presigned_put_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Presigned Put Url
        presigned_put_urls:
          items:
            type: string
          type: array
          title: Presigned Put Urls
        multipart_upload_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Multipart Upload Id
        multipart_part_size:
          anyOf:
          - type: integer
          - type: 'null'
          title: Multipart Part Size
        multipart_part_count:
          anyOf:
          - type: integer
          - type: 'null'
          title: Multipart Part Count
      type: object
      required:
      - upload_id
      - asset_id
      title: AssetUploadResponse
    AssetVisibilityRequest:
      properties:
        is_public_read:
          type: boolean
          title: Is Public Read
      type: object
      required:
      - is_public_read
      title: AssetVisibilityRequest
    AudioCapability:
      properties:
        models:
          items:
            $ref: '#/components/schemas/AudioModelCapability'
          type: array
          title: Models
      additionalProperties: false
      type: object
      required:
      - models
      title: AudioCapability
    AudioModelCapability:
      properties:
        id:
          type: string
          title: Id
          description: Value to pass as `model`.
        tool_id:
          type: string
          title: Tool Id
          description: "The agent tool backing this model. Join to `available_agent_tools`\
            \ in GET /settings for its display name, description and pricing \u2014\
            \ kept there rather than duplicated here so there is one source of truth.\
            \ Several models can share a tool."
        required:
          items:
            type: string
          type: array
          title: Required
          description: Request fields this model cannot do without. Everything else
            in the request schema is optional.
        min:
          type: number
          title: Min
          description: Shortest `duration_seconds` accepted, in seconds.
        max:
          type: number
          title: Max
          description: Longest `duration_seconds` accepted, in seconds.
        max_char:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Char
          description: Longest `prompt` accepted, in characters. None = unbounded.
      additionalProperties: false
      type: object
      required:
      - id
      - tool_id
      - required
      - min
      - max
      title: AudioModelCapability
      description: "What one audio model accepts, as published by ``GET /tools/models``.\n\
        \nAudio has no spatial dimensions \u2014 the only per-model constraint is\
        \ the\nduration range, and the two models differ by more than an order of\n\
        magnitude, which a flat request schema cannot express."
    AvailableModel:
      properties:
        name:
          type: string
          title: Name
        codename:
          type: string
          title: Codename
        compatible_models:
          items:
            type: string
          type: array
          title: Compatible Models
        options:
          $ref: '#/components/schemas/TellersAvailableOptions'
        available_priorities:
          items:
            type: string
            enum:
            - low
            - default
            - high
          type: array
          title: Available Priorities
      type: object
      required:
      - name
      - codename
      - compatible_models
      - options
      - available_priorities
      title: AvailableModel
    BillingCatalog:
      properties:
        plans:
          items:
            oneOf:
            - $ref: '#/components/schemas/CatalogPlanOneOff'
            - $ref: '#/components/schemas/CatalogPlanSubscription'
            discriminator:
              propertyName: kind
              mapping:
                one_off_tokens: '#/components/schemas/CatalogPlanOneOff'
                subscription: '#/components/schemas/CatalogPlanSubscription'
          type: array
          title: Plans
      additionalProperties: false
      type: object
      required:
      - plans
      title: BillingCatalog
    CancelTaskResponse:
      properties:
        task_id:
          type: string
          title: Task Id
        previous_state:
          $ref: '#/components/schemas/TaskStatus'
        description:
          type: string
          title: Description
      type: object
      required:
      - task_id
      - previous_state
      - description
      title: CancelTaskResponse
    CatalogFeature:
      properties:
        text:
          type: string
          title: Text
          description: User-facing feature/highlight text.
        icon_key:
          anyOf:
          - type: string
          - type: 'null'
          title: Icon Key
          description: Optional semantic icon key that frontend maps to an icon.
      additionalProperties: false
      type: object
      required:
      - text
      title: CatalogFeature
      description: Frontend-facing feature/highlight with optional semantic icon key.
    CatalogHighlight:
      properties:
        number:
          anyOf:
          - type: number
          - type: 'null'
          title: Number
          description: Optional numeric value to display prominently.
        stripe_price_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Stripe Price Id
          description: Optional Stripe price id used by UI when refreshing highlight
            values.
        text:
          type: string
          title: Text
          description: Label displayed under/next to the number.
      additionalProperties: false
      type: object
      required:
      - text
      title: CatalogHighlight
      description: Frontend-facing compact metric shown as number + label.
    CatalogPlanOneOff:
      properties:
        tier_id:
          type: string
          title: Tier Id
        display_name:
          type: string
          title: Display Name
          description: Human-readable plan name for frontend display.
        subtitle:
          type: string
          title: Subtitle
          description: Optional short subtitle/description displayed under the plan
            name.
          default: ''
        cta_text:
          type: string
          title: Cta Text
          description: Optional call-to-action label shown on the plan button.
          default: ''
        highlights:
          items:
            $ref: '#/components/schemas/CatalogHighlight'
          type: array
          maxItems: 2
          title: Highlights
          description: Up to two compact highlights for frontend display (number +
            text).
        features:
          items:
            $ref: '#/components/schemas/CatalogFeature'
          type: array
          title: Features
          description: Human-readable feature bullets for this plan (frontend display).
        enabled:
          type: boolean
          title: Enabled
          default: true
        default_items:
          items:
            $ref: '#/components/schemas/PlanLineItem'
          type: array
          title: Default Items
          description: Suggested default cart rows (empty list when not applicable).
        pricing:
          $ref: '#/components/schemas/PlanPricing'
          description: Priced lines used for preview and checkout.
        kind:
          type: string
          const: one_off_tokens
          title: Kind
          default: one_off_tokens
      additionalProperties: false
      type: object
      required:
      - tier_id
      - display_name
      - default_items
      - pricing
      title: CatalogPlanOneOff
      description: Prepaid token pack.
    CatalogPlanSubscription:
      properties:
        tier_id:
          type: string
          title: Tier Id
        display_name:
          type: string
          title: Display Name
          description: Human-readable plan name for frontend display.
        subtitle:
          type: string
          title: Subtitle
          description: Optional short subtitle/description displayed under the plan
            name.
          default: ''
        cta_text:
          type: string
          title: Cta Text
          description: Optional call-to-action label shown on the plan button.
          default: ''
        highlights:
          items:
            $ref: '#/components/schemas/CatalogHighlight'
          type: array
          maxItems: 2
          title: Highlights
          description: Up to two compact highlights for frontend display (number +
            text).
        features:
          items:
            $ref: '#/components/schemas/CatalogFeature'
          type: array
          title: Features
          description: Human-readable feature bullets for this plan (frontend display).
        enabled:
          type: boolean
          title: Enabled
          default: true
        default_items:
          items:
            $ref: '#/components/schemas/PlanLineItem'
          type: array
          title: Default Items
          description: Suggested default cart rows (empty list when not applicable).
        pricing:
          $ref: '#/components/schemas/PlanPricing'
          description: Priced lines used for preview and checkout.
        kind:
          type: string
          const: subscription
          title: Kind
          default: subscription
        interval:
          anyOf:
          - type: string
            enum:
            - month
            - year
          - type: 'null'
          title: Interval
        interval_upgrade_cta:
          type: string
          title: Interval Upgrade Cta
          description: Optional call-to-action label for switching subscription interval,
            e.g. monthly to yearly.
          default: ''
        quantity_update_cta:
          type: string
          title: Quantity Update Cta
          description: Optional call-to-action label for changing subscription item
            quantities.
          default: ''
      additionalProperties: false
      type: object
      required:
      - tier_id
      - display_name
      - default_items
      - pricing
      title: CatalogPlanSubscription
    CatalogPricingLine:
      properties:
        stripe_price_id:
          type: string
          title: Stripe Price Id
        display_name:
          type: string
          title: Display Name
          description: Human-readable label for this Stripe price line (frontend display).
          default: ''
        unit_amount_cents:
          type: number
          title: Unit Amount Cents
          description: Effective unit price in cents per displayed unit (e.g. per
            token). For Stripe prices configured per pack/group, this is normalized
            using Stripe transform quantity metadata.
          default: 0.0
        min_quantity:
          anyOf:
          - type: integer
            minimum: 0.0
          - type: 'null'
          title: Min Quantity
          description: Checkout minimum quantity for this price (one-off packs).
        max_quantity:
          anyOf:
          - type: integer
            minimum: 0.0
          - type: 'null'
          title: Max Quantity
          description: Checkout maximum quantity for this price (one-off packs).
        tier_pricing_from_stripe:
          type: boolean
          title: Tier Pricing From Stripe
          description: If true, replace this price line with tier bands fetched from
            Stripe (subscription only).
          default: false
        tiers_mode:
          anyOf:
          - type: string
            enum:
            - graduated
            - volume
          - type: 'null'
          title: Tiers Mode
          description: 'For Stripe tiered prices: `graduated` vs `volume` (Stripe
            Price `tiers_mode`). Set on each band when `tier_pricing_from_stripe`
            lines are expanded from Stripe.'
      additionalProperties: false
      type: object
      required:
      - stripe_price_id
      title: CatalogPricingLine
      description: One billable Stripe price on the plan.
    ChatHistoryResponse:
      properties:
        id:
          type: string
          title: Id
        name:
          type: string
          title: Name
        created_at:
          type: string
          format: date-time
          title: Created At
        updated_at:
          type: string
          format: date-time
          title: Updated At
        custom_agent_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Custom Agent Id
        total_tokens:
          type: number
          title: Total Tokens
        is_running:
          type: boolean
          title: Is Running
      type: object
      required:
      - id
      - name
      - created_at
      - updated_at
      - custom_agent_id
      - total_tokens
      - is_running
      title: ChatHistoryResponse
    ChatMessageAgentResponse:
      properties:
        type:
          type: string
          const: agent
          title: Type
          default: agent
        id:
          type: string
          title: Id
        agent_message:
          additionalProperties: true
          type: object
          title: Agent Message
        created_at:
          type: string
          format: date-time
          title: Created At
      type: object
      required:
      - id
      - agent_message
      - created_at
      title: ChatMessageAgentResponse
    ChatMessageUserResponse:
      properties:
        type:
          type: string
          const: user
          title: Type
          default: user
        id:
          type: string
          title: Id
        user_message:
          type: string
          title: User Message
        enabled_tools:
          items:
            type: string
          type: array
          title: Enabled Tools
        verbosity:
          type: string
          title: Verbosity
        reasoning_effort:
          type: string
          title: Reasoning Effort
        max_tellers_token:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Tellers Token
        context:
          additionalProperties: true
          type: object
          title: Context
        created_at:
          type: string
          format: date-time
          title: Created At
      type: object
      required:
      - id
      - user_message
      - enabled_tools
      - verbosity
      - reasoning_effort
      - max_tellers_token
      - context
      - created_at
      title: ChatMessageUserResponse
    CompleteTaskResponse:
      properties:
        status:
          type: string
          const: COMPLETE
          title: Status
          default: COMPLETE
        result:
          anyOf:
          - {}
          - type: 'null'
          title: Result
      type: object
      required:
      - result
      title: CompleteTaskResponse
    CouponCheckResponse:
      properties:
        coupon_code:
          type: string
          title: Coupon Code
        is_valid:
          type: boolean
          title: Is Valid
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
      type: object
      required:
      - coupon_code
      - is_valid
      - name
      - description
      title: CouponCheckResponse
    CreateFolderRequest:
      properties:
        path:
          anyOf:
          - type: string
          - type: 'null'
          title: Path
        parent_asset_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Parent Asset Id
        name:
          anyOf:
          - type: string
          - type: 'null'
          title: Name
      type: object
      title: CreateFolderRequest
      description: Either provide path (create at path) or parent_asset_id + name
        (create under parent).
    CreateFolderResponse:
      properties:
        id:
          type: string
          title: Id
        path:
          type: string
          title: Path
      type: object
      required:
      - id
      - path
      title: CreateFolderResponse
    DeleteAccountSummary:
      properties:
        dry_run:
          type: boolean
          title: Dry Run
          default: false
        assets_deleted:
          type: integer
          title: Assets Deleted
          default: 0
        chats_deleted:
          type: integer
          title: Chats Deleted
          default: 0
        groups_deleted:
          type: integer
          title: Groups Deleted
          default: 0
        s3_objects_deleted:
          type: integer
          title: S3 Objects Deleted
          default: 0
        stripe_subscriptions_cancelled:
          type: integer
          title: Stripe Subscriptions Cancelled
          default: 0
        stripe_customer_kept:
          type: boolean
          title: Stripe Customer Kept
          default: false
        firebase_deleted:
          type: boolean
          title: Firebase Deleted
          default: false
        firebase_skip_reason:
          anyOf:
          - type: string
          - type: 'null'
          title: Firebase Skip Reason
          description: Why the Firebase account was left alone; null when it was deleted
        signup_history_recorded:
          type: boolean
          title: Signup History Recorded
          default: false
        user_deleted:
          type: boolean
          title: User Deleted
          default: false
      type: object
      title: DeleteAccountSummary
      description: "What a completed purge removed \u2014 the ``done`` event, as a\
        \ typed model."
    DuplicateAssetResponse:
      properties:
        id:
          type: string
          title: Id
      type: object
      required:
      - id
      title: DuplicateAssetResponse
      description: New asset id after a successful duplicate.
    ElevenLabsVoice:
      properties:
        voice_id:
          type: string
          title: Voice Id
          description: The ElevenLabs voice ID.
        name:
          type: string
          title: Name
          description: Display name of the voice.
        accent:
          anyOf:
          - type: string
          - type: 'null'
          title: Accent
          description: Accent of the voice, if provided.
        gender:
          anyOf:
          - type: string
          - type: 'null'
          title: Gender
          description: Gender of the voice, if provided.
        age:
          anyOf:
          - type: string
          - type: 'null'
          title: Age
          description: Age descriptor of the voice, if provided.
        language:
          anyOf:
          - type: string
          - type: 'null'
          title: Language
          description: Primary language of the voice, if provided.
        category:
          anyOf:
          - type: string
          - type: 'null'
          title: Category
          description: Voice category (generated, cloned, premade, professional, famous,
            high_quality).
        descriptive:
          anyOf:
          - type: string
          - type: 'null'
          title: Descriptive
          description: Short descriptive text for the voice, if provided.
        use_case:
          anyOf:
          - type: string
          - type: 'null'
          title: Use Case
          description: Primary use-case of the voice, if provided.
        preview_url:
          anyOf:
          - type: string
          - type: 'null'
          title: Preview Url
          description: Preview audio URL for the voice, if provided.
      additionalProperties: false
      type: object
      required:
      - voice_id
      - name
      title: ElevenLabsVoice
    ExportCostEstimateResponse:
      properties:
        rendition:
          type: string
          enum:
          - 480p
          - 720p
          - 1080p
          - 4k
          title: Rendition
        duration_seconds:
          type: number
          title: Duration Seconds
        estimated_cost_tellers_tokens:
          type: number
          title: Estimated Cost Tellers Tokens
        detail_duration:
          type: number
          title: Detail Duration
        total_estimate_duration:
          type: number
          title: Total Estimate Duration
        duration_exported_file:
          type: number
          title: Duration Exported File
        duration_rendering_file:
          items:
            $ref: '#/components/schemas/ExportRenderingDurationResponse'
          type: array
          title: Duration Rendering File
      type: object
      required:
      - rendition
      - duration_seconds
      - estimated_cost_tellers_tokens
      - detail_duration
      - total_estimate_duration
      - duration_exported_file
      - duration_rendering_file
      title: ExportCostEstimateResponse
    ExportProjectResponse:
      properties:
        task_id:
          type: string
          title: Task Id
        asset_id:
          type: string
          title: Asset Id
      type: object
      required:
      - task_id
      - asset_id
      title: ExportProjectResponse
      description: 'Response for POST /project/{project_id}/export: task_id and the
        new export asset_id.'
    ExportRenderingDurationResponse:
      properties:
        asset_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Asset Id
        estimated_time:
          type: number
          title: Estimated Time
      type: object
      required:
      - asset_id
      - estimated_time
      title: ExportRenderingDurationResponse
    FailedTaskResponse:
      properties:
        status:
          type: string
          const: FAILED
          title: Status
          default: FAILED
        result:
          anyOf:
          - {}
          - type: 'null'
          title: Result
      type: object
      title: FailedTaskResponse
    FileReference:
      properties:
        file_name:
          type: string
          title: File Name
        is_folder:
          type: boolean
          title: Is Folder
        file_id:
          anyOf:
          - type: string
          - type: 'null'
          title: File Id
        file_type:
          anyOf:
          - type: string
          - type: 'null'
          title: File Type
        duration_seconds:
          anyOf:
          - type: number
          - type: 'null'
          title: Duration Seconds
        last_edit:
          type: string
          format: date-time
          title: Last Edit
      type: object
      required:
      - file_name
      - is_folder
      - file_id
      - file_type
      - last_edit
      title: FileReference
    FileType:
      type: string
      enum:
      - video
      - audio
      - image
      - text
      - pdf
      - placeholder
      - group_clip
      - master_clip
      - aaf
      - proj_original
      - folder
      - project
      - entity
      - teller_config
      title: FileType
    GeneralMcpPromptResponse:
      properties:
        id:
          type: string
          const: general
          title: Id
        name:
          type: string
          title: Name
        description:
          type: string
          title: Description
        prompt:
          type: string
          title: Prompt
      type: object
      required:
      - id
      - name
      - description
      - prompt
      title: GeneralMcpPromptResponse
    GenerateAudioRequest:
      properties:
        prompt:
          type: string
          title: Prompt
          description: Text prompt describing the audio.
        model:
          type: string
          enum:
          - music
          - sfx
          title: Model
          description: '''music'' for a composed track, ''sfx'' for a sound effect.'
          default: music
        duration_seconds:
          type: number
          title: Duration Seconds
          description: "Requested length. Accepted range differs per model \u2014\
            \ music takes 10-300s and sfx 0.1-22s. See GET /tools/models."
          default: 30.0
        output_path:
          anyOf:
          - type: string
          - type: 'null'
          title: Output Path
          description: Optional library path for the generated audio file.
      additionalProperties: false
      type: object
      required:
      - prompt
      title: GenerateAudioRequest
    GenerateAudioResponse:
      properties:
        asset_id:
          type: string
          title: Asset Id
        duration_seconds:
          type: number
          title: Duration Seconds
      additionalProperties: false
      type: object
      required:
      - asset_id
      - duration_seconds
      title: GenerateAudioResponse
    GenerateDescriptionResponse:
      properties:
        task_id:
          type: string
          title: Task Id
        needs_downscale:
          type: boolean
          title: Needs Downscale
      type: object
      required:
      - task_id
      - needs_downscale
      title: GenerateDescriptionResponse
    GenerateImageRequest:
      properties:
        prompt:
          type: string
          title: Prompt
          description: Text prompt for image generation.
        model:
          type: string
          enum:
          - p-image
          - ideogram
          - gpt-image
          - banana
          - banana-pro
          - banana-flash
          title: Model
          description: Model to use.
          default: p-image
        format:
          anyOf:
          - type: string
            enum:
            - '16:9'
            - '9:16'
            - '1:1'
            - '3:2'
            - '2:3'
            - '4:3'
            - '3:4'
          - type: 'null'
          title: Format
          description: "Aspect ratio. Defaults to 16:9. Left unset so an explicit\
            \ choice can be told from the default \u2014 a model that would ignore\
            \ it rejects it rather than silently producing another shape."
        resolution:
          anyOf:
          - type: string
            enum:
            - '512'
            - 1k
            - 2k
            - 4k
          - type: 'null'
          title: Resolution
          description: Output resolution. Used by gpt-image (maps to pixel dimensions)
            and banana models (512 / 1k / 2k / 4k). Ignored by p-image.
        input_frame:
          anyOf:
          - type: string
          - $ref: '#/components/schemas/AssetFrameRef'
          - type: 'null'
          title: Input Frame
          description: "Source image, enabling edit/compose mode. An asset id, or\
            \ an object pinning `timestamp_seconds` / `is_last_frame` when the asset\
            \ is a video \u2014 see GET /tools/models."
      additionalProperties: false
      type: object
      required:
      - prompt
      title: GenerateImageRequest
    GenerateImageResponse:
      properties:
        asset_id:
          type: string
          title: Asset Id
      additionalProperties: false
      type: object
      required:
      - asset_id
      title: GenerateImageResponse
    GenerateTranscriptResponse:
      properties:
        task_id:
          type: string
          title: Task Id
      type: object
      required:
      - task_id
      title: GenerateTranscriptResponse
    GenerateTtsRequest:
      properties:
        prompt:
          type: string
          minLength: 1
          title: Prompt
          description: Text to speak. Named `prompt` for consistency with the other
            generate routes; the underlying model calls it `text`.
        voice_id:
          type: string
          minLength: 1
          title: Voice Id
          description: "ElevenLabs voice id \u2014 obtain one from POST /tools/search/voices."
        model:
          type: string
          enum:
          - elevenlabs-v2
          - elevenlabs-v3
          - gemini-3.1-flash-tts
          title: Model
          description: Model to use.
          default: elevenlabs-v3
        output_path:
          anyOf:
          - type: string
          - type: 'null'
          title: Output Path
          description: Optional library path for the generated audio file.
      additionalProperties: false
      type: object
      required:
      - prompt
      - voice_id
      title: GenerateTtsRequest
    GenerateTtsResponse:
      properties:
        asset_id:
          type: string
          title: Asset Id
        duration_seconds:
          type: number
          title: Duration Seconds
        voice_id:
          type: string
          title: Voice Id
      additionalProperties: false
      type: object
      required:
      - asset_id
      - duration_seconds
      - voice_id
      title: GenerateTtsResponse
    GenerateVideoRequest:
      properties:
        prompt:
          type: string
          title: Prompt
          description: Text prompt describing the video to generate.
        model:
          type: string
          enum:
          - p-video
          - kling
          - kling-pro
          - veo
          - sora
          - sora-pro
          - runway
          - wan
          - ltx
          - seedance
          title: Model
          description: Model to use.
          default: p-video
        format:
          anyOf:
          - type: string
            enum:
            - '16:9'
            - '9:16'
          - type: 'null'
          title: Format
          description: "Aspect ratio. Defaults to 16:9. Left unset so an explicit\
            \ choice can be told from the default \u2014 a model that would ignore\
            \ it rejects it rather than silently producing another shape."
        resolution:
          anyOf:
          - type: string
            enum:
            - 480p
            - 720p
            - 1080p
          - type: 'null'
          title: Resolution
          description: 'Output resolution. Supported values vary by model: p-video/veo
            support 720p/1080p; wan/seedance support 480p/720p; kling/sora/runway
            ignore this field.'
        input_frame:
          anyOf:
          - type: string
          - $ref: '#/components/schemas/AssetFrameRef'
          - type: 'null'
          title: Input Frame
          description: Start (first) frame. An asset id for the default frame, or
            an object pinning `timestamp_seconds` / `is_last_frame`.
        output_frame:
          anyOf:
          - type: string
          - $ref: '#/components/schemas/AssetFrameRef'
          - type: 'null'
          title: Output Frame
          description: "End (last) frame. An asset id for the default frame, or an\
            \ object pinning `timestamp_seconds` / `is_last_frame`. Not every model\
            \ accepts an end frame \u2014 see GET /tools/models."
        input_audio:
          anyOf:
          - type: string
          - $ref: '#/components/schemas/AssetPeriodRef'
          - type: 'null'
          title: Input Audio
          description: "Audio reference. An asset id for the whole asset, or an object\
            \ pinning `start_time` / `end_time`. Not every model accepts audio, and\
            \ only some accept a range \u2014 see GET /tools/models."
      additionalProperties: false
      type: object
      required:
      - prompt
      title: GenerateVideoRequest
    GenerateVideoResponse:
      properties:
        asset_id:
          type: string
          title: Asset Id
        duration_seconds:
          type: number
          title: Duration Seconds
      additionalProperties: false
      type: object
      required:
      - asset_id
      - duration_seconds
      title: GenerateVideoResponse
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    ImageCapability:
      properties:
        models:
          items:
            $ref: '#/components/schemas/ImageModelCapability'
          type: array
          title: Models
      additionalProperties: false
      type: object
      required:
      - models
      title: ImageCapability
    ImageModelCapability:
      properties:
        id:
          type: string
          title: Id
          description: Value to pass as `model`.
        tool_id:
          type: string
          title: Tool Id
          description: "The agent tool backing this model. Join to `available_agent_tools`\
            \ in GET /settings for its display name, description and pricing \u2014\
            \ kept there rather than duplicated here so there is one source of truth.\
            \ Several models can share a tool."
        required:
          items:
            type: string
          type: array
          title: Required
          description: Request fields this model cannot do without. Everything else
            in the request schema is optional.
        formats:
          items:
            type: string
          type: array
          title: Formats
          description: Aspect ratios acted on. Empty = field ignored.
        resolutions:
          items:
            type: string
          type: array
          title: Resolutions
          description: Resolutions acted on. Empty = field ignored.
        supports_input_frame:
          type: boolean
          title: Supports Input Frame
          description: Whether `input_frame` (source image) is used.
        supports_frame_timestamp:
          type: boolean
          title: Supports Frame Timestamp
          description: Whether `input_frame` may pin a `timestamp_seconds` / `is_last_frame`.
            False means only a bare asset id is accepted.
        max_char:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Char
          description: Longest `prompt` accepted, in characters. None = unbounded.
      additionalProperties: false
      type: object
      required:
      - id
      - tool_id
      - required
      - formats
      - resolutions
      - supports_input_frame
      - supports_frame_timestamp
      title: ImageModelCapability
      description: "What one image model accepts, as published by ``GET /tools/models``.\n\
        \n``formats`` / ``resolutions`` list the values the model actually *acts on*.\n\
        An empty list means the field is ignored \u2014 gpt-image derives its dimensions\n\
        from ``resolution`` and pays no attention to ``format``, while p-image is\n\
        the reverse."
    ListFilesResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/FileReference'
          type: array
          title: Items
        next_cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Next Cursor
      type: object
      required:
      - items
      title: ListFilesResponse
    LlmModelTier:
      properties:
        low:
          anyOf:
          - type: string
            enum:
            - gpt-5.6-sol
            - gpt-5.6-terra
            - gpt-5.6-luna
            - gpt-5.5-2026-04-23
            - gpt-5.5-pro-2026-04-23
            - gpt-5.4-pro-2026-03-05
            - gpt-5.4
            - gpt-5.4-mini
            - gpt-5.3-codex
            - gpt-5.2-2025-12-11
            - gpt-5-mini-2025-08-07
            - gpt-5-nano
          - type: 'null'
          title: Low
        medium:
          anyOf:
          - type: string
            enum:
            - gpt-5.6-sol
            - gpt-5.6-terra
            - gpt-5.6-luna
            - gpt-5.5-2026-04-23
            - gpt-5.5-pro-2026-04-23
            - gpt-5.4-pro-2026-03-05
            - gpt-5.4
            - gpt-5.4-mini
            - gpt-5.3-codex
            - gpt-5.2-2025-12-11
            - gpt-5-mini-2025-08-07
            - gpt-5-nano
          - type: 'null'
          title: Medium
        high:
          anyOf:
          - type: string
            enum:
            - gpt-5.6-sol
            - gpt-5.6-terra
            - gpt-5.6-luna
            - gpt-5.5-2026-04-23
            - gpt-5.5-pro-2026-04-23
            - gpt-5.4-pro-2026-03-05
            - gpt-5.4
            - gpt-5.4-mini
            - gpt-5.3-codex
            - gpt-5.2-2025-12-11
            - gpt-5-mini-2025-08-07
            - gpt-5-nano
          - type: 'null'
          title: High
      type: object
      title: LlmModelTier
    MultipartAbortRequest:
      properties:
        asset_id:
          type: string
          title: Asset Id
        multipart_upload_id:
          type: string
          title: Multipart Upload Id
      type: object
      required:
      - asset_id
      - multipart_upload_id
      title: MultipartAbortRequest
    MultipartCompletePart:
      properties:
        part_number:
          type: integer
          title: Part Number
        etag:
          type: string
          title: Etag
      type: object
      required:
      - part_number
      - etag
      title: MultipartCompletePart
    MultipartCompleteRequest:
      properties:
        asset_id:
          type: string
          title: Asset Id
        multipart_upload_id:
          type: string
          title: Multipart Upload Id
        parts:
          items:
            $ref: '#/components/schemas/MultipartCompletePart'
          type: array
          title: Parts
      type: object
      required:
      - asset_id
      - multipart_upload_id
      - parts
      title: MultipartCompleteRequest
    PendingTaskResponse:
      properties:
        status:
          type: string
          const: PENDING
          title: Status
          default: PENDING
        progress:
          anyOf:
          - type: number
          - type: 'null'
          title: Progress
        result:
          anyOf:
          - {}
          - type: 'null'
          title: Result
      type: object
      title: PendingTaskResponse
    PlanLineItem:
      properties:
        price_id:
          type: string
          title: Price Id
        quantity:
          type: integer
          minimum: 0.0
          title: Quantity
          description: Default quantity for this price.
        quantity_step:
          type: integer
          minimum: 1.0
          title: Quantity Step
          description: Checkout quantity step for this item.
        units_per_quantity:
          type: number
          exclusiveMinimum: 0.0
          title: Units Per Quantity
          description: Multiplier to convert checkout quantity into displayed units
            for this item.
          default: 1
      additionalProperties: false
      type: object
      required:
      - price_id
      - quantity
      - quantity_step
      title: PlanLineItem
      description: Reusable cart line item (used by checkout defaults).
    PlanPricing:
      properties:
        lines:
          items:
            $ref: '#/components/schemas/CatalogPricingLine'
          type: array
          title: Lines
          description: Priced Stripe lines (one for typical one-off; two for subscription).
      additionalProperties: false
      type: object
      required:
      - lines
      title: PlanPricing
      description: 'Pricing-only blob for Rust ``pricing_preview_json`` (``lines``
        only).


        Default starter quantities live on the plan as ``default_items``.'
    ProcessAssetsRequest:
      properties:
        assets:
          items:
            $ref: '#/components/schemas/AssetUploadResponse'
          type: array
          title: Assets
        version:
          anyOf:
          - $ref: '#/components/schemas/VersionReference'
          - type: 'null'
        cutter_sensitivity:
          type: number
          title: Cutter Sensitivity
          default: 0.5
        generate_proxy:
          items:
            type: string
            enum:
            - '360'
            - '480'
            - '720'
            - '1080'
            - '2160'
          type: array
          title: Generate Proxy
          default:
          - '720'
      type: object
      required:
      - assets
      - version
      title: ProcessAssetsRequest
    PublishedCustomAgentSearchResult:
      properties:
        name:
          type: string
          title: Name
          description: The published custom agent name.
        description:
          type: string
          title: Description
          description: The published custom agent description.
        app_url:
          type: string
          title: App Url
          description: Tellers app link for opening this custom agent.
      additionalProperties: false
      type: object
      required:
      - name
      - description
      - app_url
      title: PublishedCustomAgentSearchResult
    RequestTaskResponse:
      properties:
        task_id:
          type: string
          title: Task Id
        error:
          anyOf:
          - type: string
          - type: 'null'
          title: Error
      type: object
      required:
      - task_id
      title: RequestTaskResponse
    SearchAssetsRequest:
      properties:
        prompt:
          type: string
          title: Prompt
          description: Natural language query to search for.
        search_mode:
          type: string
          enum:
          - semantic_by_scene_keyframe
          - semantic_by_scene_description
          - semantic_by_scene_sequence
          - semantic_by_asset_description
          - text_by_filename
          - text_by_file_description
          title: Search Mode
          description: Search mode. Semantic modes are embedding-based, not keyword
            matching. semantic_by_scene_keyframe matches on keyframe embeddings, semantic_by_scene_description
            on single-scene description embeddings, and semantic_by_scene_sequence
            on aggregate consecutive-scene embeddings. text_by_filename searches filenames
            by case-insensitive substring, and text_by_file_description searches asset
            descriptions by case-insensitive substring.
          default: semantic_by_scene_keyframe
        folder:
          anyOf:
          - type: string
          - type: 'null'
          title: Folder
          description: Folder path to restrict the search to (e.g. '/my-project').
        file_type:
          anyOf:
          - $ref: '#/components/schemas/FileType'
          - type: 'null'
          description: Restrict results to a specific asset file type.
        format:
          anyOf:
          - type: string
            enum:
            - '16:9'
            - '9:16'
          - type: 'null'
          title: Format
          description: Filter by aspect ratio.
        limit:
          type: integer
          maximum: 50.0
          minimum: 1.0
          title: Limit
          description: Number of results.
          default: 10
        cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Cursor
          description: Opaque cursor returned by a previous page.
      additionalProperties: false
      type: object
      required:
      - prompt
      title: SearchAssetsRequest
    SearchAssetsResponse:
      properties:
        results:
          items:
            $ref: '#/components/schemas/AssetSearchResult'
          type: array
          title: Results
        next_cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Next Cursor
      additionalProperties: false
      type: object
      required:
      - results
      title: SearchAssetsResponse
    SearchCustomAgentsRequest:
      properties:
        query:
          type: string
          maxLength: 200
          minLength: 1
          title: Query
        limit:
          type: integer
          maximum: 50.0
          minimum: 1.0
          title: Limit
          default: 20
        recommended_by_tellers:
          type: boolean
          title: Recommended By Tellers
          description: Only agents recommended by Tellers.
          default: false
        created_by_tellers:
          type: boolean
          title: Created By Tellers
          description: Only agents created by Tellers.
          default: false
        cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Cursor
          description: Opaque cursor from a previous page.
      additionalProperties: false
      type: object
      required:
      - query
      title: SearchCustomAgentsRequest
    SearchCustomAgentsResponse:
      properties:
        results:
          items:
            $ref: '#/components/schemas/PublishedCustomAgentSearchResult'
          type: array
          title: Results
        next_cursor:
          anyOf:
          - type: string
          - type: 'null'
          title: Next Cursor
      additionalProperties: false
      type: object
      required:
      - results
      - next_cursor
      title: SearchCustomAgentsResponse
    SearchMeCapability:
      properties:
        required:
          items:
            type: string
          type: array
          title: Required
        search_modes:
          items:
            type: string
          type: array
          title: Search Modes
          description: Values accepted for `search_mode`.
        file_types:
          items:
            type: string
          type: array
          title: File Types
          description: Values accepted for `file_type`.
        formats:
          items:
            type: string
          type: array
          title: Formats
          description: Values accepted for `format`.
        min_limit:
          type: integer
          title: Min Limit
        max_limit:
          type: integer
          title: Max Limit
        supports_folder:
          type: boolean
          title: Supports Folder
          default: true
      additionalProperties: false
      type: object
      required:
      - required
      - search_modes
      - file_types
      - formats
      - min_limit
      - max_limit
      title: SearchMeCapability
    SearchStockCapability:
      properties:
        required:
          items:
            type: string
          type: array
          title: Required
        types:
          items:
            type: string
          type: array
          title: Types
          description: Values accepted for `type`.
        formats:
          items:
            type: string
          type: array
          title: Formats
          description: Values accepted for `format`.
        min_limit:
          type: integer
          title: Min Limit
        max_limit:
          type: integer
          title: Max Limit
      additionalProperties: false
      type: object
      required:
      - required
      - types
      - formats
      - min_limit
      - max_limit
      title: SearchStockCapability
    SearchStockRequest:
      properties:
        prompt:
          type: string
          title: Prompt
          description: Search query for stock content.
        type:
          type: string
          enum:
          - image
          - video
          title: Type
          description: Type of content to search.
          default: video
        format:
          anyOf:
          - type: string
            enum:
            - '16:9'
            - '9:16'
          - type: 'null'
          title: Format
          description: Filter by aspect ratio.
        limit:
          type: integer
          maximum: 80.0
          minimum: 1.0
          title: Limit
          description: Number of results.
          default: 10
      additionalProperties: false
      type: object
      required:
      - prompt
      title: SearchStockRequest
    SearchStockResponse:
      properties:
        results:
          items:
            $ref: '#/components/schemas/StockAssetSearchResult'
          type: array
          title: Results
      additionalProperties: false
      type: object
      required:
      - results
      title: SearchStockResponse
    SearchVoicesCapability:
      properties:
        required:
          items:
            type: string
          type: array
          title: Required
        min_limit:
          type: integer
          title: Min Limit
        max_limit:
          type: integer
          title: Max Limit
        supports_language:
          type: boolean
          title: Supports Language
          default: true
      additionalProperties: false
      type: object
      required:
      - required
      - min_limit
      - max_limit
      title: SearchVoicesCapability
    SearchVoicesRequest:
      properties:
        search:
          anyOf:
          - type: string
          - type: 'null'
          title: Search
          description: Free-text query (name, description, use case).
        language:
          anyOf:
          - type: string
          - type: 'null'
          title: Language
          description: Filter by language code, e.g. 'en'.
        limit:
          type: integer
          maximum: 100.0
          minimum: 1.0
          title: Limit
          description: Number of results.
          default: 10
      additionalProperties: false
      type: object
      title: SearchVoicesRequest
    SearchVoicesResponse:
      properties:
        voices:
          items:
            $ref: '#/components/schemas/ElevenLabsVoice'
          type: array
          title: Voices
        has_more:
          type: boolean
          title: Has More
      additionalProperties: false
      type: object
      required:
      - voices
      - has_more
      title: SearchVoicesResponse
    SocialPublishingPlatformSetting:
      properties:
        id:
          type: string
          title: Id
        label:
          type: string
          title: Label
        supported_media_types:
          items:
            type: string
          type: array
          title: Supported Media Types
      type: object
      required:
      - id
      - label
      - supported_media_types
      title: SocialPublishingPlatformSetting
    SourceFileInfo:
      properties:
        sourceName:
          type: string
          title: Sourcename
        sourceUrl:
          anyOf:
          - type: string
          - type: 'null'
          title: Sourceurl
        sourceIconUrl:
          anyOf:
          - type: string
          - type: 'null'
          title: Sourceiconurl
        authors:
          items:
            type: string
          type: array
          title: Authors
        creationDatetime:
          anyOf:
          - type: integer
          - type: 'null'
          title: Creationdatetime
        additionDatetime:
          type: integer
          title: Additiondatetime
        isCitationRequired:
          anyOf:
          - type: boolean
          - type: 'null'
          title: Iscitationrequired
        citation:
          anyOf:
          - type: string
          - type: 'null'
          title: Citation
        reuseConditionInfo:
          anyOf:
          - type: string
          - type: 'null'
          title: Reuseconditioninfo
        inAppPath:
          items:
            type: string
          type: array
          title: Inapppath
        title:
          anyOf:
          - type: string
          - type: 'null'
          title: Title
        description:
          anyOf:
          - type: string
          - type: 'null'
          title: Description
        keywords:
          items:
            type: string
          type: array
          title: Keywords
        duration_seconds:
          anyOf:
          - type: number
          - type: 'null'
          title: Duration Seconds
        provider_generation_id:
          anyOf:
          - type: string
          - type: 'null'
          title: Provider Generation Id
        provider_generation_id_created_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Provider Generation Id Created At
        generated_by_llm_model:
          anyOf:
          - type: string
          - type: 'null'
          title: Generated By Llm Model
        prompt_used_to_create:
          anyOf:
          - type: string
          - type: 'null'
          title: Prompt Used To Create
        umid:
          anyOf:
          - type: string
          - type: 'null'
          title: Umid
        capture_device_umid:
          anyOf:
          - type: string
          - type: 'null'
          title: Capture Device Umid
        original_file_path:
          anyOf:
          - type: string
          - type: 'null'
          title: Original File Path
        original_ffprobe_metadata:
          anyOf:
          - additionalProperties: true
            type: object
          - type: 'null'
          title: Original Ffprobe Metadata
      type: object
      required:
      - sourceName
      - sourceUrl
      - sourceIconUrl
      - authors
      - creationDatetime
      - additionDatetime
      - inAppPath
      - title
      - description
      - keywords
      title: SourceFileInfo
    SpeechModelCapability:
      properties:
        id:
          type: string
          title: Id
          description: Value to pass as `model`.
        tool_id:
          type: string
          title: Tool Id
          description: "The agent tool backing this model. Join to `available_agent_tools`\
            \ in GET /settings for its display name, description and pricing \u2014\
            \ kept there rather than duplicated here so there is one source of truth.\
            \ Several models can share a tool."
        required:
          items:
            type: string
          type: array
          title: Required
          description: Request fields this model cannot do without. Everything else
            in the request schema is optional.
        max_char:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Char
          description: Longest `prompt` accepted, in characters. None = unbounded.
      additionalProperties: false
      type: object
      required:
      - id
      - tool_id
      - required
      title: SpeechModelCapability
      description: 'A speech model. Voice choice is the only variable, and it comes
        from

        ``POST /tools/search/voices`` rather than from a fixed list here.'
    StockAssetSearchResult:
      properties:
        asset_id:
          type: string
          title: Asset Id
          description: The ID of the asset.
        title:
          type: string
          title: Title
          description: The title of the asset.
        description:
          type: string
          title: Description
          description: The description of the asset.
        duration_seconds:
          type: number
          title: Duration Seconds
          description: The duration of the asset in seconds. 0.0 for images.
      additionalProperties: false
      type: object
      required:
      - asset_id
      - title
      - description
      - duration_seconds
      title: StockAssetSearchResult
    TaskResponse:
      properties:
        id:
          type: string
          title: Id
        task_type:
          type: string
          title: Task Type
        status:
          type: string
          title: Status
        progress:
          type: number
          title: Progress
        asset_ids:
          items:
            type: string
          type: array
          title: Asset Ids
        created_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Created At
        ended_at:
          anyOf:
          - type: string
            format: date-time
          - type: 'null'
          title: Ended At
        error_message:
          anyOf:
          - type: string
          - type: 'null'
          title: Error Message
      type: object
      required:
      - id
      - task_type
      - status
      - progress
      - asset_ids
      - created_at
      - ended_at
      - error_message
      title: TaskResponse
    TaskStatus:
      type: string
      enum:
      - FAILURE
      - PENDING
      - RECEIVED
      - RETRY
      - REVOKED
      - STARTED
      - SUCCESS
      - PROGRESS
      title: TaskStatus
    TellersAvailableOptions:
      properties:
        verbosity:
          items:
            type: string
            enum:
            - low
            - medium
            - high
          type: array
          title: Verbosity
        reasoning_effort:
          items:
            anyOf:
            - type: string
              enum:
              - none
              - minimal
              - low
              - medium
              - high
              - xhigh
              - max
            - type: 'null'
          type: array
          title: Reasoning Effort
        compaction:
          type: boolean
          title: Compaction
          default: false
      type: object
      required:
      - verbosity
      - reasoning_effort
      title: TellersAvailableOptions
    TellersPreset:
      properties:
        name:
          type: string
          title: Name
        model:
          anyOf:
          - type: string
            enum:
            - gpt-5.6-sol
            - gpt-5.6-terra
            - gpt-5.6-luna
            - gpt-5.5-2026-04-23
            - gpt-5.5-pro-2026-04-23
            - gpt-5.4-pro-2026-03-05
            - gpt-5.4
            - gpt-5.4-mini
            - gpt-5.3-codex
            - gpt-5.2-2025-12-11
            - gpt-5-mini-2025-08-07
            - gpt-5-nano
          - type: 'null'
          title: Model
        options:
          $ref: '#/components/schemas/TellersPresetOptions'
      type: object
      required:
      - name
      - model
      - options
      title: TellersPreset
    TellersPresetOptions:
      properties:
        reasoning_effort:
          anyOf:
          - type: string
            enum:
            - none
            - minimal
            - low
            - medium
            - high
            - xhigh
            - max
          - type: 'null'
          title: Reasoning Effort
        verbosity:
          anyOf:
          - type: string
            enum:
            - low
            - medium
            - high
          - type: 'null'
          title: Verbosity
        priority:
          anyOf:
          - type: string
            enum:
            - low
            - default
            - high
          - type: 'null'
          title: Priority
      type: object
      required:
      - reasoning_effort
      - verbosity
      - priority
      title: TellersPresetOptions
    ToolExposure:
      type: string
      enum:
      - search
      - flat_search
      - flat
      title: ToolExposure
      description: "How much of a tool the model is shown up front.\n\nWhat deferral\
        \ hides depends on whether the tool is in a namespace, and the\ndifference\
        \ is the whole point of this enum. Per OpenAI's tool search guide:\na deferred\
        \ tool *inside a namespace* is hidden completely \u2014 the model sees\nonly\
        \ the namespace name and description \u2014 while a deferred *top-level*\n\
        function still shows its name and description, so deferral there only holds\n\
        back the parameter schema. Measured over the current 56 tools:\n\n==============\
        \  ============================  ==========\nexposure        visible up front\
        \              tokens\n==============  ============================  ==========\n\
        ``search``      11 namespace descriptions          ~0.5k\n``flat_search``\
        \ 56 tool names + descriptions      ~10.2k\n``flat``        the above plus\
        \ every schema       ~44.6k\n==============  ============================\
        \  ==========\n\n``search`` uses namespace descriptions and hides the names\
        \ inside them;\n``flat_search`` exposes top-level tool names and descriptions\
        \ while\ndeferring only parameter schemas. ``flat`` removes deferral entirely.\n\
        \nGrouping without deferring is deliberately not offered: namespaces exist\n\
        to make search legible, so once every schema is up front they buy nothing\n\
        and cost their own descriptions.\n\nThe member value is what the API accepts\
        \ on the wire."
    ToolsCapabilities:
      properties:
        video:
          $ref: '#/components/schemas/VideoCapability'
        image:
          $ref: '#/components/schemas/ImageCapability'
        audio:
          $ref: '#/components/schemas/AudioCapability'
        tts:
          $ref: '#/components/schemas/TtsCapability'
        search_stock:
          $ref: '#/components/schemas/SearchStockCapability'
        search_me:
          $ref: '#/components/schemas/SearchMeCapability'
        search_voices:
          $ref: '#/components/schemas/SearchVoicesCapability'
      additionalProperties: false
      type: object
      required:
      - video
      - image
      - audio
      - tts
      - search_stock
      - search_me
      - search_voices
      title: ToolsCapabilities
      description: "Every ``/tools/*`` capability, keyed by area.\n\nGrouped rather\
        \ than returned as one flat list so a client can jump straight\nto the area\
        \ it cares about \u2014 ``image`` to pick a model, ``search_me`` to see\n\
        which search modes exist \u2014 instead of filtering."
    TtsCapability:
      properties:
        models:
          items:
            $ref: '#/components/schemas/SpeechModelCapability'
          type: array
          title: Models
      additionalProperties: false
      type: object
      required:
      - models
      title: TtsCapability
    UpdateUserRequest:
      properties:
        first_name:
          anyOf:
          - type: string
          - type: 'null'
          title: First Name
        last_name:
          anyOf:
          - type: string
          - type: 'null'
          title: Last Name
        user_preferences:
          anyOf:
          - $ref: '#/components/schemas/UserPreferences'
          - type: 'null'
      additionalProperties: false
      type: object
      title: UpdateUserRequest
    UseAgentToolRequest:
      properties:
        tool_id:
          type: string
          title: Tool Id
          description: The id of the tool to use
        tool_arguments:
          additionalProperties: true
          type: object
          title: Tool Arguments
          description: The arguments to pass to the tool
      type: object
      required:
      - tool_id
      - tool_arguments
      title: UseAgentToolRequest
    UserPreferences:
      properties:
        analysis:
          anyOf:
          - $ref: '#/components/schemas/AssetAnalysisSettings'
          - type: 'null'
      additionalProperties: true
      type: object
      title: UserPreferences
    ValidationError:
      properties:
        loc:
          items:
            anyOf:
            - type: string
            - type: integer
          type: array
          title: Location
        msg:
          type: string
          title: Message
        type:
          type: string
          title: Error Type
      type: object
      required:
      - loc
      - msg
      - type
      title: ValidationError
    VersionReference:
      properties:
        embedding_space:
          type: string
          title: Embedding Space
        embedding_strategy:
          type: string
          title: Embedding Strategy
        dimensionality:
          type: integer
          title: Dimensionality
      type: object
      required:
      - embedding_space
      - embedding_strategy
      - dimensionality
      title: VersionReference
    VideoCapability:
      properties:
        models:
          items:
            $ref: '#/components/schemas/VideoModelCapability'
          type: array
          title: Models
      additionalProperties: false
      type: object
      required:
      - models
      title: VideoCapability
    VideoModelCapability:
      properties:
        id:
          type: string
          title: Id
          description: Value to pass as `model`.
        tool_id:
          type: string
          title: Tool Id
          description: "The agent tool backing this model. Join to `available_agent_tools`\
            \ in GET /settings for its display name, description and pricing \u2014\
            \ kept there rather than duplicated here so there is one source of truth.\
            \ Several models can share a tool."
        required:
          items:
            type: string
          type: array
          title: Required
          description: Request fields this model cannot do without. Everything else
            in the request schema is optional.
        formats:
          items:
            type: string
          type: array
          title: Formats
          description: Aspect ratios acted on.
        resolutions:
          items:
            type: string
          type: array
          title: Resolutions
          description: Resolutions acted on. Empty = field ignored.
        supports_input_frame:
          type: boolean
          title: Supports Input Frame
          description: Whether `input_frame` (start frame) is used.
        supports_output_frame:
          type: boolean
          title: Supports Output Frame
          description: Whether `output_frame` (end frame) is used. Pair it with `input_frame`;
            some models reject an end frame on its own.
        supports_input_audio:
          type: boolean
          title: Supports Input Audio
          description: Whether `input_audio` (audio reference) is used.
        supports_frame_timestamp:
          type: boolean
          title: Supports Frame Timestamp
          description: Whether a frame reference may pin a `timestamp_seconds` / `is_last_frame`.
            False means only a bare asset id is accepted.
        format_requires_resolution:
          type: boolean
          title: Format Requires Resolution
          description: This model only acts on `format` when `resolution` is also
            given; sent alone it would be ignored, so it is rejected.
          default: false
        format_ignored_with_input_frame:
          type: boolean
          title: Format Ignored With Input Frame
          description: This model takes its aspect ratio from `input_frame` whenever
            one is given; `format` sent alongside would be ignored, so the pair is
            rejected. Crop the frame to the shape you want instead.
          default: false
        supports_audio_range:
          type: boolean
          title: Supports Audio Range
          description: Whether `input_audio` may pin a time range. False means only
            a bare asset id is accepted.
        max_char:
          anyOf:
          - type: integer
          - type: 'null'
          title: Max Char
          description: Longest `prompt` accepted, in characters. None = unbounded.
      additionalProperties: false
      type: object
      required:
      - id
      - tool_id
      - required
      - formats
      - resolutions
      - supports_input_frame
      - supports_output_frame
      - supports_input_audio
      - supports_frame_timestamp
      - supports_audio_range
      title: VideoModelCapability
      description: "What one video model accepts, as published by ``GET /tools/models``.\n\
        \n``formats`` / ``resolutions`` list the values the model actually *acts on*.\n\
        An empty list means the field is ignored and the model's native output is\n\
        used \u2014 not that any value is accepted."
