openapi: 3.1.0
info:
  title: Aana API
  version: 0.1.0
servers:
  - url: https://v1.api.aana.ai
paths:
  /webhooks:
    get:
      tags:
        - webhooks
      summary: List Webhooks
      description: This endpoint is used to list all registered webhooks.
      operationId: list_webhooks_webhooks_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookListResponse'
    post:
      tags:
        - webhooks
      summary: Create Webhook
      description: This endpoint is used to register a webhook.
      operationId: create_webhook_webhooks_post
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookRegistrationRequest'
        required: true
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /webhooks/{webhook_id}:
    get:
      tags:
        - webhooks
      summary: Get Webhook
      description: This endpoint is used to fetch a webhook by ID.
      operationId: get_webhook_webhooks__webhook_id__get
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: string
            title: Webhook Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
        - webhooks
      summary: Update Webhook
      description: This endpoint is used to update a webhook.
      operationId: update_webhook_webhooks__webhook_id__put
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: string
            title: Webhook Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/WebhookUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
        - webhooks
      summary: Delete Webhook
      description: This endpoint is used to delete a webhook.
      operationId: delete_webhook_webhooks__webhook_id__delete
      parameters:
        - name: webhook_id
          in: path
          required: true
          schema:
            type: string
            title: Webhook Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/WebhookResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tasks/count:
    get:
      tags:
        - tasks
      summary: Count Tasks
      description: Count tasks per status.
      operationId: count_tasks_tasks_count_get
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskCount'
  /tasks/{task_id}:
    get:
      tags:
        - tasks
      summary: Get Task Status
      description: Get the task status by task ID.
      operationId: get_task_tasks__task_id__get
      parameters:
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            description: The task ID.
            example: 11111111-1111-1111-1111-111111111111
            title: Task Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskInfo'
        '404':
          description: Task not found or does not belong to the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
        - tasks
      summary: Delete Task
      description: Delete the task by task ID.
      operationId: delete_task_tasks__task_id__delete
      parameters:
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            description: The task ID.
            example: 11111111-1111-1111-1111-111111111111
            title: Task Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskInfo'
        '400':
          description: Cannot delete a running or assigned task
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Task not found or does not belong to the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tasks:
    get:
      tags:
        - tasks
      summary: List Tasks
      description: List all tasks.
      operationId: list_tasks_tasks_get
      parameters:
        - name: status
          in: query
          required: false
          schema:
            description: Filter tasks by status. If None, all tasks are returned.
            title: Status
            $ref: '#/components/schemas/Status'
            nullable: true
        - name: page
          in: query
          required: false
          schema:
            type: integer
            description: The page number.
            default: 1
            title: Page
        - name: per_page
          in: query
          required: false
          schema:
            type: integer
            description: The number of tasks per page.
            default: 100
            title: Per Page
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskList'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tasks/{task_id}/retry:
    post:
      tags:
        - tasks
      summary: Retry Failed Task
      description: Retry a failed task by resetting its status to CREATED.
      operationId: retry_task_tasks__task_id__retry_post
      parameters:
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            description: The task ID.
            example: 11111111-1111-1111-1111-111111111111
            title: Task Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskInfo'
        '400':
          description: Only failed tasks can be retried
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Task not found or does not belong to the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tasks/get/{task_id}:
    get:
      tags:
        - tasks
      summary: Get Task Status (Legacy)
      description: Get the task status by task ID (Legacy endpoint).
      operationId: get_task_legacy_tasks_get__task_id__get
      deprecated: true
      parameters:
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            description: The task ID.
            example: 11111111-1111-1111-1111-111111111111
            title: Task Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskInfo'
        '404':
          description: Task not found or does not belong to the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /tasks/delete/{task_id}:
    get:
      tags:
        - tasks
      summary: Delete Task (Legacy)
      description: Delete the task by task ID (Legacy endpoint).
      operationId: delete_task_legacy_tasks_delete__task_id__get
      deprecated: true
      parameters:
        - name: task_id
          in: path
          required: true
          schema:
            type: string
            description: The task ID.
            example: 11111111-1111-1111-1111-111111111111
            title: Task Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResponse'
        '404':
          description: Task not found or does not belong to the user
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /collections:
    post:
      tags:
        - collections
      summary: Create Collection
      description: Create a new collection.
      operationId: create_collection_collections_post
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionRequest'
      responses:
        '201':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    get:
      tags:
        - collections
      summary: List Collections
      description: List all collections for a user.
      operationId: list_collections_collections_get
      parameters:
        - name: public
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              Whether to list public collections. List private collections by
              default.
            default: false
            title: Public
        - name: return_thumbnails
          in: query
          required: false
          schema:
            type: boolean
            description: Whether to return thumbnails for the collections
            default: false
            title: Return Thumbnails
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionListResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /collections/{collection_id}:
    get:
      tags:
        - collections
      summary: Get Collection
      description: Get a collection by ID.
      operationId: get_collection_collections__collection_id__get
      parameters:
        - name: collection_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 100
            pattern: ^[A-Za-z0-9_-]+$
            description: The human-readable ID of the collection.
            example: my_collection
            title: Collection Id
        - name: public
          in: query
          required: false
          schema:
            type: boolean
            description: >-
              Whether to get a public collection. Get a private collection by
              default.
            default: false
            title: Public
        - name: return_thumbnails
          in: query
          required: false
          schema:
            type: boolean
            description: Whether to return thumbnails for the collection
            default: false
            title: Return Thumbnails
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
        - collections
      summary: Delete Collection
      description: Delete a collection.
      operationId: delete_collection_collections__collection_id__delete
      parameters:
        - name: collection_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 100
            pattern: ^[A-Za-z0-9_-]+$
            description: The human-readable ID of the collection.
            example: my_collection
            title: Collection Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    put:
      tags:
        - collections
      summary: Update Collection
      description: Update a collection.
      operationId: update_collection_collections__collection_id__put
      parameters:
        - name: collection_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 100
            pattern: ^[A-Za-z0-9_-]+$
            description: The human-readable ID of the collection.
            example: my_collection
            title: Collection Id
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/CollectionUpdateRequest'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /collections/{collection_id}/items:
    get:
      tags:
        - collections
      summary: Get Collection Items
      description: Get items in a collection.
      operationId: get_collection_items_collections__collection_id__items_get
      parameters:
        - name: collection_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 100
            pattern: ^[A-Za-z0-9_-]+$
            description: The human-readable ID of the collection.
            example: my_collection
            title: Collection Id
        - name: is_public
          in: query
          required: false
          schema:
            type: boolean
            description: Whether the collection is public
            default: false
            title: Is Public
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            description: The number of items to return
            default: 10
            title: Limit
        - name: offset
          in: query
          required: false
          schema:
            description: The offset to start from returned by a previous query
            title: Offset
            type: string
            format: uuid
            nullable: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/CollectionItemsResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /collections/{collection_id}/items/{media_id}:
    get:
      tags:
        - collections
      summary: Get Media Item
      description: Get a specific media item from a collection.
      operationId: get_media_item_collections__collection_id__items__media_id__get
      parameters:
        - name: collection_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 100
            pattern: ^[A-Za-z0-9_-]+$
            description: The human-readable ID of the collection.
            example: my_collection
            title: Collection Id
        - name: media_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            pattern: ^[A-Za-z0-9_-]+$
            description: The media ID.
            example: 123e4567-e89b-12d3-a456-426614174000
            title: Media Id
        - name: is_public
          in: query
          required: false
          schema:
            type: boolean
            description: Whether the collection is public
            default: false
            title: Is Public
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaItem'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
    delete:
      tags:
        - collections
      summary: Remove Item From Collection
      description: Remove an item from a collection.
      operationId: >-
        remove_item_from_collection_collections__collection_id__items__media_id__delete
      parameters:
        - name: collection_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 100
            pattern: ^[A-Za-z0-9_-]+$
            description: The human-readable ID of the collection.
            example: my_collection
            title: Collection Id
        - name: media_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            pattern: ^[A-Za-z0-9_-]+$
            description: The media ID.
            example: 123e4567-e89b-12d3-a456-426614174000
            title: Media Id
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/MediaDeleteResponse'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /collections/{collection_id}/items/{media_id}/analysis:
    get:
      tags:
        - collections
      summary: Get Analysis Results
      description: Get the analysis results for an indexed media item in a collection.
      operationId: >-
        get_analysis_results_collections__collection_id__items__media_id__analysis_get
      parameters:
        - name: collection_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 100
            pattern: ^[A-Za-z0-9_-]+$
            description: The human-readable ID of the collection.
            example: my_collection
            title: Collection Id
        - name: media_id
          in: path
          required: true
          schema:
            type: string
            minLength: 1
            maxLength: 36
            pattern: ^[A-Za-z0-9_-]+$
            description: The media ID.
            example: 123e4567-e89b-12d3-a456-426614174000
            title: Media Id
        - name: is_public
          in: query
          required: false
          schema:
            type: boolean
            description: Whether the collection is public
            default: false
            title: Is Public
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/VideoAnalysisResults'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
  /analyze:
    post:
      tags:
        - analyze
      summary: Analyze video
      description: >-
        Transforms videos into easy-to-navigate episodic summaries for quick
        understanding and reference of video content.
      operationId: episodic_summary
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_episodic_summary'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseModel'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
        - lang: cURL
          source: >-
            curl https://v1.api.aana.ai/analyze \

            --request POST \

            --header 'Content-Type: application/x-www-form-urlencoded' \

            --header 'x-api-key: YOUR_API_KEY_HERE' \

            --data
            'body={"video":{"media_id":"12345","url":"https://example.com/video_12345.mp4"},"index_language":"en"}'
          label: cURL
        - lang: Python
          source: |-
            import json, requests

            payload = {'index_language': 'en',
             'video': {'media_id': '12345',
                       'url': 'https://example.com/video_12345.mp4'}}

            headers = {
              "Content-Type": "application/x-www-form-urlencoded",
              "x-api-key": "YOUR_API_KEY_HERE"
            }

            response = requests.post("https://v1.api.aana.ai/analyze",
                headers=headers,
                data={"body": json.dumps(payload)}
            )

            data = response.json()
            print(data)
          label: Python
  /index:
    post:
      tags:
        - indexing
      summary: Index video
      description: >-
        Index video to be searchable in your collection, enabling discovery of
        specific moments and information.
      operationId: episodic_indexing
      requestBody:
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_episodic_indexing'
        required: true
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskResponse'
        '400':
          description: Bad Request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseModel'
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
        - lang: cURL
          source: >-
            curl https://v1.api.aana.ai/index \

            --request POST \

            --header 'Content-Type: application/x-www-form-urlencoded' \

            --header 'x-api-key: YOUR_API_KEY_HERE' \

            --data
            'body={"video":{"media_id":"12345","url":"https://example.com/video_12345.mp4"},"collection":"my_collection","index_language":"en","reindex_if_exists":false}'
          label: cURL
        - lang: Python
          source: |-
            import json, requests

            payload = {'collection': 'my_collection',
             'index_language': 'en',
             'reindex_if_exists': False,
             'video': {'media_id': '12345',
                       'url': 'https://example.com/video_12345.mp4'}}

            headers = {
              "Content-Type": "application/x-www-form-urlencoded",
              "x-api-key": "YOUR_API_KEY_HERE"
            }

            response = requests.post("https://v1.api.aana.ai/index",
                headers=headers,
                data={"body": json.dumps(payload)}
            )

            data = response.json()
            print(data)
          label: Python
  /search:
    post:
      tags:
        - search
      summary: Find relevant video moments
      description: >-
        Locates specific information or segments within videos using natural
        language queries for precise content discovery.
      operationId: episodic_search
      parameters:
        - name: defer
          in: query
          required: false
          schema:
            type: boolean
            description: Defer execution of the endpoint to the task queue.
            default: false
            title: Defer
          description: Defer execution of the endpoint to the task queue.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_episodic_search'
      responses:
        '200':
          description: Successful Response
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/EpisodicSearchEndpointResponse'
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ExceptionResponseModel'
          description: Bad Request
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
        - lang: cURL
          source: >-
            curl https://v1.api.aana.ai/search \

            --request POST \

            --header 'Content-Type: application/x-www-form-urlencoded' \

            --header 'x-api-key: YOUR_API_KEY_HERE' \

            --data
            'body={"query":"Cat","collection":"my_collection","search_public_collections":false,"retriever_type":"hybrid"}'
          label: cURL
        - lang: Python
          source: |-
            import json, requests

            payload = {'collection': 'my_collection',
             'query': 'Cat',
             'retriever_type': 'hybrid',
             'search_public_collections': False}

            headers = {
              "Content-Type": "application/x-www-form-urlencoded",
              "x-api-key": "YOUR_API_KEY_HERE"
            }

            response = requests.post("https://v1.api.aana.ai/search",
                headers=headers,
                data={"body": json.dumps(payload)}
            )

            data = response.json()
            print(data)
          label: Python
  /search_grid:
    post:
      tags:
        - search
      summary: >-
        Search for a query in the given collection and generate a grid of search
        results (streaming)
      operationId: episodic_grid_search
      parameters:
        - name: defer
          in: query
          required: false
          schema:
            type: boolean
            description: Defer execution of the endpoint to the task queue.
            default: false
            title: Defer
          description: Defer execution of the endpoint to the task queue.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_episodic_grid_search'
      responses:
        '200':
          description: Successful Response
          content:
            application/json-seq:
              schema:
                $ref: '#/components/schemas/EpisodicSearchGridEndpointResponse'
        '400':
          content:
            application/json-seq:
              schema:
                $ref: '#/components/schemas/ExceptionResponseModel'
          description: Bad Request
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
        - lang: cURL
          source: >-
            curl https://v1.api.aana.ai/search_grid \

            --request POST \

            --header 'Content-Type: application/x-www-form-urlencoded' \

            --header 'x-api-key: YOUR_API_KEY_HERE' \

            --data
            'body={"query":"Cat","collection":"my_collection","search_public_collections":false,"search_language":"en"}'
          label: cURL
        - lang: Python
          source: >-
            import json, requests

            import ijson # pip install ijson


            payload = {'collection': 'my_collection',
             'query': 'Cat',
             'search_language': 'en',
             'search_public_collections': False}

            headers = {
              "Content-Type": "application/x-www-form-urlencoded",
              "x-api-key": "YOUR_API_KEY_HERE"
            }


            response = requests.post("https://v1.api.aana.ai/search_grid",
                headers=headers,
                data={"body": json.dumps(payload)},
                stream=True
            )


            for obj in ijson.items(response.raw, '', multiple_values=True,
            buf_size=32):
                print(obj)
          label: Python
  /search_clusters:
    post:
      tags:
        - search
      summary: >-
        Search for a query in the given collection and cluster the results
        (streaming)
      operationId: episodic_search_clusters
      parameters:
        - name: defer
          in: query
          required: false
          schema:
            type: boolean
            description: Defer execution of the endpoint to the task queue.
            default: false
            title: Defer
          description: Defer execution of the endpoint to the task queue.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_episodic_search_clusters'
      responses:
        '200':
          description: Successful Response
          content:
            application/json-seq:
              schema:
                $ref: '#/components/schemas/EpisodicSearchClustersEndpointResponse'
        '400':
          content:
            application/json-seq:
              schema:
                $ref: '#/components/schemas/ExceptionResponseModel'
          description: Bad Request
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
        - lang: cURL
          source: >-
            curl https://v1.api.aana.ai/search_clusters \

            --request POST \

            --header 'Content-Type: application/x-www-form-urlencoded' \

            --header 'x-api-key: YOUR_API_KEY_HERE' \

            --data
            'body={"query":"Cat","collection":"my_collection","search_public_collections":false,"search_language":"en"}'
          label: cURL
        - lang: Python
          source: >-
            import json, requests

            import ijson # pip install ijson


            payload = {'collection': 'my_collection',
             'query': 'Cat',
             'search_language': 'en',
             'search_public_collections': False}

            headers = {
              "Content-Type": "application/x-www-form-urlencoded",
              "x-api-key": "YOUR_API_KEY_HERE"
            }


            response = requests.post("https://v1.api.aana.ai/search_clusters",
                headers=headers,
                data={"body": json.dumps(payload)},
                stream=True
            )


            for obj in ijson.items(response.raw, '', multiple_values=True,
            buf_size=32):
                print(obj)
          label: Python
  /collection_suggestions:
    post:
      tags:
        - collections
      summary: Get content exploration prompts
      description: >-
        Provides intelligent question suggestions based on your collection
        content, surfacing information you might not know to look for.
      operationId: collection_suggestions
      parameters:
        - name: defer
          in: query
          required: false
          schema:
            type: boolean
            description: Defer execution of the endpoint to the task queue.
            default: false
            title: Defer
          description: Defer execution of the endpoint to the task queue.
      requestBody:
        required: true
        content:
          application/x-www-form-urlencoded:
            schema:
              $ref: '#/components/schemas/Body_collection_suggestions'
      responses:
        '200':
          description: Successful Response
          content:
            application/json-seq:
              schema:
                $ref: '#/components/schemas/CollectionSuggestionsEndpointResponse'
        '400':
          content:
            application/json-seq:
              schema:
                $ref: '#/components/schemas/ExceptionResponseModel'
          description: Bad Request
        '422':
          description: Validation Error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPValidationError'
      x-codeSamples:
        - lang: cURL
          source: >-
            curl https://v1.api.aana.ai/collection_suggestions \

            --request POST \

            --header 'Content-Type: application/x-www-form-urlencoded' \

            --header 'x-api-key: YOUR_API_KEY_HERE' \

            --data
            'body={"collection":"my_collection","search_public_collections":false,"search_language":"en"}'
          label: cURL
        - lang: Python
          source: >-
            import json, requests

            import ijson # pip install ijson


            payload = {'collection': 'my_collection',
             'search_language': 'en',
             'search_public_collections': False}

            headers = {
              "Content-Type": "application/x-www-form-urlencoded",
              "x-api-key": "YOUR_API_KEY_HERE"
            }


            response =
            requests.post("https://v1.api.aana.ai/collection_suggestions",
                headers=headers,
                data={"body": json.dumps(payload)},
                stream=True
            )


            for obj in ijson.items(response.raw, '', multiple_values=True,
            buf_size=32):
                print(obj)
          label: Python
components:
  schemas:
    AudioShot:
      properties:
        start:
          type: number
          title: Start
        end:
          type: number
          title: End
        summary:
          type: string
          title: Summary
      type: object
      required:
        - start
        - end
        - summary
      title: AudioShot
    Body_collection_suggestions:
      properties:
        body:
          properties:
            collection:
              description: The human-readable ID of the collection.
              example: my_collection
              maxLength: 100
              minLength: 1
              pattern: ^[A-Za-z0-9_-]+$
              title: Collection
              type: string
            search_public_collections:
              default: false
              description: Whether to search public collections.
              title: Search Public Collections
              type: boolean
            search_language:
              $ref: '#/$defs/Language'
              default: en
              description: Language to use for indexing or search.
          required:
            - collection
          title: CollectionSuggestionsEndpointRequest
          type: object
      type: object
      required:
        - body
      title: Body_collection_suggestions
    Body_episodic_grid_search:
      properties:
        body:
          properties:
            query:
              description: Search query.
              example: Cat
              title: Query
              type: string
            collection:
              description: The human-readable ID of the collection.
              example: my_collection
              maxLength: 100
              minLength: 1
              pattern: ^[A-Za-z0-9_-]+$
              title: Collection
              type: string
            search_public_collections:
              default: false
              description: Whether to search public collections.
              title: Search Public Collections
              type: boolean
            search_language:
              $ref: '#/$defs/Language'
              default: en
              description: Language to use for indexing or search.
          required:
            - query
            - collection
          title: EpisodicSearchGridEndpointRequest
          type: object
      type: object
      required:
        - body
      title: Body_episodic_grid_search
    Body_episodic_indexing:
      properties:
        body:
          properties:
            video:
              $ref: '#/$defs/VideoInputWithMetadata'
            collection:
              description: The human-readable ID of the collection.
              example: my_collection
              maxLength: 100
              minLength: 1
              pattern: ^[A-Za-z0-9_-]+$
              title: Collection
              type: string
            index_language:
              $ref: '#/$defs/Language'
              default: en
              description: Language to use for indexing or search.
            reindex_if_exists:
              default: false
              description: >-
                Whether to reindex if the video already exists in the
                collection.
              title: Reindex If Exists
              type: boolean
          required:
            - video
            - collection
          title: EpisodicIndexingEndpointRequest
          type: object
      type: object
      required:
        - body
      title: Body_episodic_indexing
    Body_episodic_search:
      properties:
        body:
          properties:
            query:
              description: Search query.
              example: Cat
              title: Query
              type: string
            collection:
              description: The human-readable ID of the collection.
              example: my_collection
              maxLength: 100
              minLength: 1
              pattern: ^[A-Za-z0-9_-]+$
              title: Collection
              type: string
            search_public_collections:
              default: false
              description: Whether to search public collections.
              title: Search Public Collections
              type: boolean
            retriever_type:
              $ref: '#/$defs/RetrieverType'
              default: hybrid
          required:
            - query
            - collection
          title: EpisodicSearchEndpointRequest
          type: object
      type: object
      required:
        - body
      title: Body_episodic_search
    Body_episodic_search_clusters:
      properties:
        body:
          properties:
            query:
              description: Search query.
              example: Cat
              title: Query
              type: string
            collection:
              description: The human-readable ID of the collection.
              example: my_collection
              maxLength: 100
              minLength: 1
              pattern: ^[A-Za-z0-9_-]+$
              title: Collection
              type: string
            search_public_collections:
              default: false
              description: Whether to search public collections.
              title: Search Public Collections
              type: boolean
            search_language:
              $ref: '#/$defs/Language'
              default: en
              description: Language to use for indexing or search.
          required:
            - query
            - collection
          title: EpisodicSearchClustersEndpointRequest
          type: object
      type: object
      required:
        - body
      title: Body_episodic_search_clusters
    Body_episodic_summary:
      properties:
        body:
          properties:
            video:
              $ref: '#/$defs/VideoInputWithMetadata'
            index_language:
              $ref: '#/$defs/Language'
              default: en
              description: Language to use for indexing or search.
          required:
            - video
          title: EpisodicAnalysisEndpointRequest
          type: object
      type: object
      required:
        - body
      title: Body_episodic_summary
    ClusterResult:
      properties:
        cluster_uid:
          type: integer
          title: Cluster Uid
          description: An unique ID for the cluster. Integer starting from 0.
        video_ids_in_cluster:
          items:
            type: integer
          type: array
          title: Video Ids In Cluster
          description: >-
            A list of 2 to 3 video IDs that are most relevant to the theme of
            the cluster.
        cluster_title:
          type: string
          title: Cluster Title
          description: A headline about the key theme of the cluster.
        cluster_theme:
          type: string
          title: Cluster Theme
          description: >-
            Summary of the cluster's theme, detailing the content of its video
            segments and how they collectively address the query in a
            conversational, chat-like tone
      type: object
      required:
        - cluster_uid
        - video_ids_in_cluster
        - cluster_title
        - cluster_theme
      title: ClusterResult
    CollectionItemsResponse:
      properties:
        items:
          items:
            $ref: '#/components/schemas/MediaItem'
          type: array
          title: Items
          description: The items in the collection
        offset:
          title: Offset
          description: The offset for the next query to get more items
          type: string
          nullable: true
      type: object
      required:
        - items
      title: CollectionItemsResponse
      description: |-
        Response model for a list of items in a collection.

        Attributes:
            items (list[MediaItem]): The items in the collection
            offset (str | None): The offset for the next query to get more items
    CollectionListResponse:
      properties:
        collections:
          items:
            $ref: '#/components/schemas/CollectionResponse'
          type: array
          title: Collections
      type: object
      required:
        - collections
      title: CollectionListResponse
      description: |-
        Response model for a list of collections.

        Attributes:
            collections (list[CollectionResponse]): List of collections
    CollectionRequest:
      properties:
        collection_id:
          type: string
          maxLength: 100
          minLength: 1
          pattern: ^[A-Za-z0-9_-]+$
          title: Collection Id
          description: The human-readable ID of the collection.
          example: my_collection
        name:
          type: string
          maxLength: 100
          minLength: 1
          title: Name
          description: The name of the collection.
        description:
          title: Description
          description: Description of the collection
          type: string
          nullable: true
        is_public:
          type: boolean
          title: Is Public
          description: >-
            Whether the collection should be public. Only admins can create
            public collections.
          default: false
      type: object
      required:
        - collection_id
        - name
      title: CollectionRequest
      description: |-
        Request model for creating a collection.

        Attributes:
            collection_id (CollectionId): Collection ID
            name (str): Name of the collection
            description (str | None): Description of the collection
            is_public (bool): Whether the collection should be public. Only admins can create public collections.
    CollectionResponse:
      properties:
        collection_id:
          type: string
          maxLength: 100
          minLength: 1
          pattern: ^[A-Za-z0-9_-]+$
          title: Collection Id
          description: The human-readable ID of the collection.
          example: my_collection
        name:
          type: string
          maxLength: 100
          minLength: 1
          title: Name
          description: The name of the collection.
        description:
          title: Description
          description: Description of the collection
          type: string
          nullable: true
        is_public:
          type: boolean
          title: Is Public
          description: Whether the collection is public.
        thumbnails:
          title: Thumbnails
          description: Thumbnails for the collection
          items:
            type: string
          type: array
          nullable: true
      type: object
      required:
        - collection_id
        - name
        - description
        - is_public
      title: CollectionResponse
      description: |-
        Response model for a collection.

        Attributes:
            collection_id (CollectionId): Collection ID
            name (str): Name of the collection
            description (str): Description of the collection
            is_public (bool): Whether the collection is public.
            thumbnails (list[str] | None): Thumbnails for the collection
    CollectionSuggestionsEndpointResponse:
      properties:
        completion:
          additionalProperties: true
          type: object
          title: Completion
          description: generation output.
      additionalProperties: false
      type: object
      title: CollectionSuggestionsEndpointResponse
    CollectionUpdateRequest:
      properties:
        name:
          title: Name
          description: The name of the collection.
          type: string
          maxLength: 100
          minLength: 1
          nullable: true
        description:
          title: Description
          description: Description of the collection
          type: string
          nullable: true
        is_public:
          title: Is Public
          description: >-
            Whether the collection should be public. Only admins can create
            public collections.
          type: boolean
          nullable: true
      type: object
      title: CollectionUpdateRequest
      description: |-
        Request model for updating a collection.

        Attributes:
            name (str | None): Name of the collection
            description (str | None): Description of the collection
            is_public (bool | None): Whether the collection should be public. Only admins can make collections public.
    Episode:
      properties:
        start:
          $ref: '#/components/schemas/TimeEntry'
        end:
          $ref: '#/components/schemas/TimeEntry'
        summary:
          type: string
          title: Summary
        audio:
          items:
            $ref: '#/components/schemas/AudioShot'
          type: array
          title: Audio
        visual:
          items:
            $ref: '#/components/schemas/VisualShot'
          type: array
          title: Visual
        faces:
          title: Faces
          items:
            $ref: '#/components/schemas/FacesShot'
          type: array
          nullable: true
        thumbnail:
          title: Thumbnail
          type: string
          nullable: true
      type: object
      required:
        - start
        - end
        - summary
        - audio
        - visual
      title: Episode
    EpisodicSearchClustersEndpointResponse:
      properties:
        answer:
          type: string
          title: Answer
        teaser_id:
          type: integer
          title: Teaser Id
        cluster_results:
          items:
            $ref: '#/components/schemas/ClusterResult'
          type: array
          title: Cluster Results
        additional_info:
          type: string
          title: Additional Info
        related_queries:
          items:
            type: string
          type: array
          title: Related Queries
      additionalProperties: false
      type: object
      title: EpisodicSearchClustersEndpointResponse
    EpisodicSearchEndpointResponse:
      properties:
        results:
          items:
            $ref: '#/components/schemas/SearchResult'
          type: array
          title: Results
      additionalProperties: false
      type: object
      title: EpisodicSearchEndpointResponse
    EpisodicSearchGridEndpointResponse:
      properties:
        search_results:
          items:
            $ref: '#/components/schemas/SearchResult'
          type: array
          title: Search Results
        completion:
          type: string
          title: Completion
      additionalProperties: false
      type: object
      title: EpisodicSearchGridEndpointResponse
    ErrorResponse:
      properties:
        detail:
          type: string
          title: Detail
      type: object
      required:
        - detail
      title: ErrorResponse
      description: Error response.
    ExceptionResponseModel:
      properties:
        error:
          type: string
          title: Error
        message:
          type: string
          title: Message
        data:
          title: Data
          nullable: true
        stacktrace:
          title: Stacktrace
          type: string
          nullable: true
      additionalProperties: false
      type: object
      required:
        - error
        - message
      title: ExceptionResponseModel
      description: |-
        This class is used to represent an exception response for 400 errors.

        Attributes:
            error (str): The error that occurred.
            message (str): The message of the error.
            data (Optional[Any]): The extra data that helps to debug the error.
            stacktrace (Optional[str]): The stacktrace of the error.
    FacesShot:
      properties:
        start:
          type: number
          title: Start
        end:
          type: number
          title: End
        faces:
          type: string
          title: Faces
      type: object
      required:
        - start
        - end
        - faces
      title: FacesShot
    HTTPValidationError:
      properties:
        detail:
          items:
            $ref: '#/components/schemas/ValidationError'
          type: array
          title: Detail
      type: object
      title: HTTPValidationError
    MediaDeleteResponse:
      properties:
        collection_id:
          type: string
          maxLength: 100
          minLength: 1
          pattern: ^[A-Za-z0-9_-]+$
          title: Collection Id
          description: The human-readable ID of the collection.
          example: my_collection
        media_id:
          type: string
          maxLength: 36
          minLength: 1
          pattern: ^[A-Za-z0-9_-]+$
          title: Media Id
          description: Media ID
          example: 123e4567-e89b-12d3-a456-426614174000
      type: object
      required:
        - collection_id
        - media_id
      title: MediaDeleteResponse
      description: |-
        Response model for deleting a media item from a collection.

        Attributes:
            collection_id (CollectionId): Collection ID
            media_id (MediaId): Media ID
    MediaItem:
      properties:
        type:
          $ref: '#/components/schemas/MediaType'
          description: The media type.
        media_id:
          type: string
          maxLength: 36
          minLength: 1
          pattern: ^[A-Za-z0-9_-]+$
          title: Media Id
          description: The media id.
          example: 123e4567-e89b-12d3-a456-426614174000
        thumbnail_url:
          title: Thumbnail Url
          description: The thumbnail URL.
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          nullable: true
        src:
          title: Src
          description: The source URL.
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          nullable: true
        additional_metadata:
          title: Additional Metadata
          description: Additional metadata.
          additionalProperties: true
          type: object
          nullable: true
        title:
          title: Title
          description: The title.
          type: string
          nullable: true
        duration:
          title: Duration
          description: The duration of the media in seconds (for video/audio only).
          type: number
          nullable: true
      type: object
      required:
        - type
        - media_id
      title: MediaItem
      description: MediaItem model class.
    MediaType:
      type: string
      enum:
        - video
        - audio
        - image
      title: MediaType
      description: Media type enumeration class.
    SearchResult:
      properties:
        episode_id:
          anyOf:
            - type: string
            - type: integer
            - type: 'null'
          title: Episode Id
          description: The episode ID
        media_id:
          type: string
          title: Media Id
          description: The media ID
        start_time:
          type: number
          title: Start Time
          description: The start time in seconds
        content:
          type: string
          title: Content
          description: The content of the search result
        full_video_summary:
          type: string
          title: Full Video Summary
          description: The full video summary
        image_url:
          title: Image Url
          description: The image URL
          type: string
          nullable: true
        src:
          title: Src
          description: The source URL
          type: string
          nullable: true
        title:
          title: Title
          description: The title
          type: string
          nullable: true
        publish_date:
          title: Publish Date
          description: The publish date
          type: string
          nullable: true
        score:
          title: Score
          description: The search score
          type: number
          nullable: true
        view_count:
          title: View Count
          description: The view count of the segment
          type: integer
          nullable: true
        like_count:
          title: Like Count
          description: The like count of the segment
          type: integer
          nullable: true
        computer_vision:
          title: Computer Vision
          description: The computer vision of the segment
          items:
            additionalProperties: true
            type: object
          type: array
          nullable: true
        audio:
          title: Audio
          description: The audio of the segment
          items:
            additionalProperties: true
            type: object
          type: array
          nullable: true
        faces:
          title: Faces
          description: The faces of the segment
          items:
            additionalProperties: true
            type: object
          type: array
          nullable: true
      type: object
      required:
        - media_id
        - start_time
        - content
        - full_video_summary
      title: SearchResult
      description: A search result.
      examples:
        - audio: []
          computer_vision:
            - end: 7.574233333333333
              start: 0
              summary: The video features a close-up shot...
          content: The video features a close-up shot...
          episode_id: 0
          image_url: https://aana-thumbnails.s3.amazonaws.com/ud2QnFTRPds/1.jpg
          media_id: ud2QnFTRPds
          score: 0.31464624404907227
          src: https://www.example.com/video/ud2QnFTRPds.mp4
          start_time: 0
    Status:
      type: string
      enum:
        - created
        - assigned
        - completed
        - running
        - failed
        - not_finished
      title: Status
      description: |-
        Enum for task status.

        Attributes:
            CREATED: The task is created.
            ASSIGNED: The task is assigned to a worker.
            COMPLETED: The task is completed.
            RUNNING: The task is running.
            FAILED: The task has failed.
            NOT_FINISHED: The task is not finished.
    TaskCount:
      properties:
        created:
          title: Created
          description: The number of tasks in the CREATED status.
          type: integer
          nullable: true
        assigned:
          title: Assigned
          description: The number of tasks in the ASSIGNED status.
          type: integer
          nullable: true
        completed:
          title: Completed
          description: The number of tasks in the COMPLETED status.
          type: integer
          nullable: true
        running:
          title: Running
          description: The number of tasks in the RUNNING status.
          type: integer
          nullable: true
        failed:
          title: Failed
          description: The number of tasks in the FAILED status.
          type: integer
          nullable: true
        not_finished:
          title: Not Finished
          description: The number of tasks in the NOT_FINISHED status.
          type: integer
          nullable: true
        total:
          type: integer
          title: Total
          description: The total number of tasks.
      type: object
      required:
        - total
      title: TaskCount
      description: Response for a count of tasks by status.
    TaskInfo:
      properties:
        id:
          type: string
          title: Id
          description: The task ID.
          example: 11111111-1111-1111-1111-111111111111
        endpoint:
          type: string
          title: Endpoint
          description: The endpoint to which the task is assigned.
        data:
          title: Data
          description: The task data.
        status:
          $ref: '#/components/schemas/Status'
          description: The task status.
        result:
          title: Result
          description: The task result.
      type: object
      required:
        - id
        - endpoint
        - data
        - status
      title: TaskInfo
      description: |-
        Task information.

        Attributes:
            id (str): The task ID.
            endpoint (str): The endpoint to which the task is assigned.
            data (Any): The task data.
            status (TaskStatus): The task status.
            result (Any): The task result.
      examples:
        - data:
            image:
              media_id: abc123
              url: https://example.com/image.jpg
          endpoint: /index
          id: 11111111-1111-1111-1111-111111111111
          status: running
    TaskList:
      properties:
        tasks:
          items:
            $ref: '#/components/schemas/TaskInfo'
          type: array
          title: Tasks
          description: The list of tasks.
      type: object
      required:
        - tasks
      title: TaskList
      description: Response for a list of tasks.
    TaskResponse:
      properties:
        task_id:
          type: string
          title: Task Id
          description: The task ID.
          example: 11111111-1111-1111-1111-111111111111
      type: object
      required:
        - task_id
      title: TaskResponse
      description: Response for a task.
    TimeEntry:
      properties:
        seconds:
          type: number
          title: Seconds
      type: object
      required:
        - seconds
      title: TimeEntry
    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
    VideoAnalysisResults:
      properties:
        video_summary:
          type: string
          title: Video Summary
          description: Video-level summary
          default: ''
        video_duration:
          type: number
          title: Video Duration
          description: Duration of the video in seconds
          default: 0
        episodes:
          items:
            $ref: '#/components/schemas/Episode'
          type: array
          title: Episodes
          description: List of episodes
      type: object
      title: VideoAnalysisResults
      description: Results of the video analysis.
    VisualShot:
      properties:
        start:
          type: number
          title: Start
        end:
          type: number
          title: End
        summary:
          type: string
          title: Summary
      type: object
      required:
        - start
        - end
        - summary
      title: VisualShot
    WebhookEventType:
      type: string
      enum:
        - task.completed
        - task.failed
        - task.started
      title: WebhookEventType
      description: Enum for webhook event types.
    WebhookListResponse:
      properties:
        webhooks:
          items:
            $ref: '#/components/schemas/WebhookResponse'
          type: array
          title: Webhooks
          description: The list of webhooks.
      type: object
      required:
        - webhooks
      title: WebhookListResponse
      description: Response for a list of webhooks.
    WebhookRegistrationRequest:
      properties:
        url:
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          title: Url
          description: The URL to which the webhook will send requests.
        events:
          items:
            $ref: '#/components/schemas/WebhookEventType'
          type: array
          title: Events
          description: >-
            The events to subscribe to. If None, the webhook is subscribed to
            all events.
      additionalProperties: false
      type: object
      required:
        - url
      title: WebhookRegistrationRequest
      description: Request to register a webhook.
    WebhookResponse:
      properties:
        id:
          type: string
          title: Id
          description: The webhook ID.
          example: 00000000-0000-0000-0000-000000000000
        url:
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          title: Url
          description: The URL to which the webhook will send requests.
        events:
          items:
            $ref: '#/components/schemas/WebhookEventType'
          type: array
          title: Events
          description: The events that the webhook is subscribed to.
      type: object
      required:
        - id
        - url
        - events
      title: WebhookResponse
      description: Response for a webhook registration.
    WebhookUpdateRequest:
      properties:
        url:
          title: Url
          description: New URL for the webhook.
          type: string
          maxLength: 2083
          minLength: 1
          format: uri
          nullable: true
        events:
          title: Events
          description: New list of events to subscribe to.
          items:
            $ref: '#/components/schemas/WebhookEventType'
          type: array
          nullable: true
      additionalProperties: false
      type: object
      title: WebhookUpdateRequest
      description: Request to update a webhook.
  securitySchemes:
    ApiKeyAuth:
      type: apiKey
      in: header
      name: x-api-key
tags:
  - name: analyze
    x-displayName: Analyze
  - name: indexing
    x-displayName: Indexing
  - name: search
    x-displayName: Search
  - name: collections
    x-displayName: Collections
  - name: webhooks
    x-displayName: Webhooks
  - name: tasks
    x-displayName: Tasks
security:
  - ApiKeyAuth: []
$defs:
  Language:
    description: Supported languages for indexing and search.
    enum:
      - en
      - de
    title: Language
    type: string
  VideoInputWithMetadata:
    description: >-
      A video. 

      Exactly one of 'path', 'url', or 'content' must be provided. 

      If 'path' is provided, the video will be loaded from the path. 

      If 'url' is provided, the video will be downloaded from the url. 

      The 'content' will be loaded automatically if files are uploaded to the
      endpoint and 'content' is set to the filename.
    examples:
      - media_id: '12345'
        url: https://example.com/video_12345.mp4
      - media_id: '12345'
        path: /path/to/video_12345.mp4
    properties:
      path:
        default: null
        description: The file path of the video.
        title: Path
        type: string
        nullable: true
      url:
        default: null
        description: The URL of the video (supports YouTube videos).
        title: Url
        format: uri
        minLength: 1
        type: string
        nullable: true
      content:
        default: null
        description: >-
          The name of the file uploaded to the endpoint. The content of the
          video will be loaded automatically.
        title: Content
        type: string
        nullable: true
      media_id:
        description: >-
          The ID of the video. If not provided, it will be generated
          automatically.
        example: 123e4567-e89b-12d3-a456-426614174000
        maxLength: 36
        minLength: 1
        pattern: ^[A-Za-z0-9_-]+$
        title: Media Id
        type: string
      title:
        default: null
        description: Title of the video
        title: Title
        type: string
        nullable: true
      additional_metadata:
        description: Additional metadata for the video
        title: Additional Metadata
        additionalProperties: true
        type: object
        nullable: true
    title: VideoInputWithMetadata
    type: object
  RetrieverType:
    description: Type of retriever to use for search.
    enum:
      - hybrid
      - sparse
      - dense
    title: RetrieverType
    type: string
