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

# Search by text query

> Semantic visual search — finds moments in analyzed media that match
a natural-language description. Analysis data must be loaded into memory first.
Results are ordered best-first, but Jumper does not return similarity scores.




## OpenAPI

````yaml /api-reference/openapi-v1.yaml post /search/text
openapi: 3.0.3
info:
  title: Jumper Public API
  version: '1.0'
  description: >
    REST API for third-party integrations with Jumper's media analysis engine.


    Jumper analyzes video, image, and audio files — enabling semantic visual
    search,

    speech transcription, and face detection with clustering.

    This API exposes those capabilities for use by MAM systems, automation
    pipelines,

    and custom tooling.


    ## Authentication


    All endpoints except `/health` require a **Jumper Pro** license key.

    The OpenAPI contract models the supported `X-License-Key` header flow.


    Jumper also accepts a `license_key` field in many JSON POST bodies as a

    convenience, but that is a Jumper-specific request-body convention rather

    than an OpenAPI security scheme.


    Invalid or missing keys return `401`. Non-Pro keys return `403`.


    ## Key Concepts


    - **`cache_dir`** — The folder where Jumper stores analysis data (visual
    analysis, transcriptions, face clusters). You choose this path.

    - **`media_paths`** — Absolute filesystem paths to media files. Jumper needs
    direct access to these files.

    - **`hash_str`** — A CRC32-based hash that uniquely identifies a media file.
    Returned by the metadata endpoint.

    - **`model_key`** — Internal identifier for a visual or speech analysis
    model variant (e.g. `v2-medium-256`).
  contact:
    name: Jumper
    url: https://getjumper.io
servers:
  - url: http://localhost:6699/api/v1
    description: Local Jumper backend
security:
  - HeaderAuth: []
paths:
  /search/text:
    post:
      tags:
        - Search
      summary: Search by text query
      description: >
        Semantic visual search — finds moments in analyzed media that match

        a natural-language description. Analysis data must be loaded into memory
        first.

        Results are ordered best-first, but Jumper does not return similarity
        scores.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              type: object
              required:
                - query
                - cache_dir
              properties:
                query:
                  type: string
                  description: Natural-language search query
                  example: man pointing a finger
                cache_dir:
                  type: string
                media_paths:
                  type: array
                  items:
                    type: string
                  description: >-
                    Restrict search to these files (ignored if search_all is
                    true)
                max_results:
                  type: integer
                  default: 50
                text_weight:
                  type: number
                  default: 1
                  description: Weight of text similarity (advanced)
                exclude:
                  type: array
                  items:
                    type: string
                  description: Softly push down results that match these visual concepts.
                search_all:
                  type: boolean
                  default: false
                  description: Search across all loaded media instead of just media_paths
                people_filter:
                  type: array
                  items:
                    type: object
                    properties:
                      cluster_job_name:
                        type: string
                        description: Name of the face clustering job
                      person_name:
                        type: string
                        description: >-
                          Person name (resolved to cluster IDs via the job's
                          name mapping)
                      cluster_id:
                        type: string
                        description: Direct cluster ID (alternative to person_name)
                    required:
                      - cluster_job_name
                  description: >-
                    Only return matches containing these people. Each item needs
                    cluster_job_name plus either person_name or cluster_id.
                people_filter_mode:
                  type: string
                  enum:
                    - or
                    - and
                  default: and
                  description: >-
                    Match mode for multiple people. "and" requires every
                    selected person in the same frame; "or" matches frames
                    containing any selected person.
      responses:
        '200':
          description: Search results ordered by relevance
          content:
            application/json:
              schema:
                type: object
                properties:
                  matches:
                    type: array
                    items:
                      $ref: '#/components/schemas/SearchMatch'
components:
  schemas:
    SearchMatch:
      type: object
      properties:
        frame_idx:
          type: string
          description: >-
            Frame number within the media file (1 FPS basis), returned as a
            string
        timestamp:
          type: string
          description: Timestamp as HH:MM:SS
        image:
          type: string
          format: byte
          description: Base64-encoded JPEG preview for the matched frame
        scene_start_timestamp:
          type: string
          description: Start of the matched scene as HH:MM:SS
        scene_end_timestamp:
          type: string
          description: End of the matched scene as HH:MM:SS
        original_index:
          type: integer
          description: Position in the underlying ranking before per-video grouping
        hash_str:
          type: string
          description: Hash of the media file this match belongs to
        video_path:
          type: string
          description: Absolute path to the media file
      required:
        - frame_idx
        - timestamp
        - image
        - scene_start_timestamp
        - scene_end_timestamp
        - original_index
        - hash_str
        - video_path
  securitySchemes:
    HeaderAuth:
      type: apiKey
      in: header
      name: X-License-Key
      description: Jumper Pro license key passed via header

````