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

# Image to Keyframes Search

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

Find video keyframes that look similar to a reference image. Provide the reference as a public_url or upload_id.Returns a ranked list of matching frames with their parent video.

## Headers

- `Authorization` string, required

## Request body

- SearchImageToKeyframeSearchRequest — Image to keyframe 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)
  - `coactive_image_id` string, uuid, nullable
  - `public_url` string, nullable
  - `upload_id` string, nullable
  - `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

## Changes

- **2026-08-22** `1223758be9ba` — 4 warning
  - the `limit` request property's max was set to `1000.00`
  - the `offset` request property's max was set to `9223372036854775808.00`
  - the `limit` request property's min was set to `1.00`
  - the `offset` request property's min was set to `0.00`

[Change history](https://skmtc.dev/coactive/apis/api-reference/changes/api/v1/search/image-to-keyframes/post.md)

---

[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)
