---
title: "Text to Keyframes Search"
method: POST
path: "/api/v1/search/text-to-keyframes"
tags: ["search > search"]
---

# Text to Keyframes Search

`POST /api/v1/search/text-to-keyframes`

Search across all video frames in a dataset using a natural-language query. Returns the keyframes that best match the description.Use this when you want all the keyframe-level results from your videos rather than one-result-per-video.

## Headers

- `Authorization` string, required

## Request body

- SearchTextSearchRequest — Text search request
  - `dataset_id` string, uuid, required — The unique identifier for the dataset
  - `offset` integer — Starting index to return
  - `limit` integer — Max number of items to return
  - `metadata_filters` SearchMetadataFilters
    - `filters` SearchMetadataFiltersFiltersItems[], required
      - union
        - SearchBooleanEqualsClause
          - `key` string, required
          - `operator` '==', required
          - `value` boolean, required
        - SearchEqualsClause
          - `key` string, required
          - `operator` '==', required
          - `value` string, required
        - SearchNotEqualsClause
          - `key` string, required
          - `operator` '!=', required
          - `value` string, required
        - SearchDateTimeRangeInclusiveClause
          - `key` string, required
          - `start_utc_epoch` number, double, nullable
          - `end_utc_epoch` number, double, nullable
          - `operator` 'DateTimeRangeInclusive', required
  - `moderation_score_type` 'probability' | 'level' — Score type returned by the moderation service. - PROBABILITY: Scores in range 0-1 (uses BGE Reranker model) - LEVEL: Scores in range 0-5 (uses OpenAI model)
  - `text_query` string, required — The text query to search for
  - `negative_text` string, nullable — Optional text describing what to exclude from search results. Steers the query embedding away from this direction.
  - `asset_type` 'image' | 'video'
  - `skip_moderation` boolean — Skip content moderation if enabled

## Response `200`

Successful Response

- SearchNileSearchKeyframeResponse — A keyframe asset response from Nile for text to keyframe search
  - `data` SearchNileKeyframe[], required
    - `keyframe_id` string, uuid, required
    - `score` number, double, required
    - `asset_type` string, required
    - `dataset_id` string, uuid, required
    - `video_id` string, uuid, required
    - `composite_slice_id` string, uuid, nullable
    - `moderation_score` number, double, nullable

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/coactive/apis/api-reference.md) · [All operations](https://skmtc.dev/coactive/apis/api-reference/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/coactive/api-reference/revisions/1223758be9ba/schema)
