---
title: "Search a managed index"
method: POST
path: "/v1/rag/managed_indexes/{index_name}/search"
tags: ["beta.rag.managed_indexes"]
---

# Search a managed index

`POST /v1/rag/managed_indexes/{index_name}/search`

Runs an approximate-nearest-neighbor vector search over the index and returns matching chunks, closest-first.

## Path parameters

- `index_name` string, required

## Request body

- SearchRequest
  - `retriever` union, required
    - KeywordRetriever — Retrieve document chunks with similar keywords to the given query.
      - `top_k` integer
      - `type` 'keyword'
      - `query` string, required
      - `filter` union
        - And — Conjunction: rows must match every sub-filter.
          - `type` 'and'
          - `matches` union[], required
            - union
              - …
        - Or — Disjunction: rows must match at least one sub-filter.
          - `type` 'or'
          - `matches` union[], required
            - union
              - …
        - Not — Negate a filter: rows must not match.
          - `type` 'not'
          - `match` union, required
            - And — Conjunction: rows must match every sub-filter.
              - …
            - Or — Disjunction: rows must match at least one sub-filter.
              - …
            - Not — recursive
            - Equal — Field equals a scalar value.
              - …
            - Range — Check that the given field falls in a range. Requires at least one operator.
              - …
            - In — Field is one of a set of values.
              - …
        - Equal — Field equals a scalar value.
          - `type` 'equal'
          - `field` string, required
          - `value` union, required
            - integer
            - number
            - string, date-time
            - string
        - Range — Check that the given field falls in a range. Requires at least one operator.
          - `type` 'range'
          - `field` string, required
          - `gt` union
            - integer
            - number
            - string, date-time
          - `gte` union
            - integer
            - number
            - string, date-time
          - `lt` union
            - integer
            - number
            - string, date-time
          - `lte` union
            - integer
            - number
            - string, date-time
        - In — Field is one of a set of values.
          - `type` 'in'
          - `field` string, required
          - `values` union[], required
            - union
              - …
      - `field` string, nullable
    - NearestNeighbourRetriever — Retrieve document chunks whose embeddings are closest to the query's.
      - `top_k` integer
      - `type` 'nearest_neighbour'
      - `query` string, nullable
      - `query_embedding` number[], nullable
      - `field` string, nullable
      - `filter` union
        - And — Conjunction: rows must match every sub-filter.
          - `type` 'and'
          - `matches` union[], required
            - union
              - …
        - Or — Disjunction: rows must match at least one sub-filter.
          - `type` 'or'
          - `matches` union[], required
            - union
              - …
        - Not — Negate a filter: rows must not match.
          - `type` 'not'
          - `match` union, required
            - And — Conjunction: rows must match every sub-filter.
              - …
            - Or — Disjunction: rows must match at least one sub-filter.
              - …
            - Not — recursive
            - Equal — Field equals a scalar value.
              - …
            - Range — Check that the given field falls in a range. Requires at least one operator.
              - …
            - In — Field is one of a set of values.
              - …
        - Equal — Field equals a scalar value.
          - `type` 'equal'
          - `field` string, required
          - `value` union, required
            - integer
            - number
            - string, date-time
            - string
        - Range — Check that the given field falls in a range. Requires at least one operator.
          - `type` 'range'
          - `field` string, required
          - `gt` union
            - integer
            - number
            - string, date-time
          - `gte` union
            - integer
            - number
            - string, date-time
          - `lt` union
            - integer
            - number
            - string, date-time
          - `lte` union
            - integer
            - number
            - string, date-time
        - In — Field is one of a set of values.
          - `type` 'in'
          - `field` string, required
          - `values` union[], required
            - union
              - …
    - RRFRetriever — Fuse child retriever rankings via reciprocal rank fusion.
      - `top_k` integer
      - `type` 'rrf'
      - `retrievers` union[], required
        - union
          - KeywordRetriever — Retrieve document chunks with similar keywords to the given query.
            - `top_k` integer
            - `type` 'keyword'
            - `query` string, required
            - `filter` union
              - …
            - `field` string, nullable
          - NearestNeighbourRetriever — Retrieve document chunks whose embeddings are closest to the query's.
            - `top_k` integer
            - `type` 'nearest_neighbour'
            - `query` string, nullable
            - `query_embedding` number[], nullable
            - `field` string, nullable
            - `filter` union
              - …
      - `weights` number[], nullable
      - `rank_constant` integer
      - `filter` union
        - And — Conjunction: rows must match every sub-filter.
          - `type` 'and'
          - `matches` union[], required
            - union
              - …
        - Or — Disjunction: rows must match at least one sub-filter.
          - `type` 'or'
          - `matches` union[], required
            - union
              - …
        - Not — Negate a filter: rows must not match.
          - `type` 'not'
          - `match` union, required
            - And — Conjunction: rows must match every sub-filter.
              - …
            - Or — Disjunction: rows must match at least one sub-filter.
              - …
            - Not — recursive
            - Equal — Field equals a scalar value.
              - …
            - Range — Check that the given field falls in a range. Requires at least one operator.
              - …
            - In — Field is one of a set of values.
              - …
        - Equal — Field equals a scalar value.
          - `type` 'equal'
          - `field` string, required
          - `value` union, required
            - integer
            - number
            - string, date-time
            - string
        - Range — Check that the given field falls in a range. Requires at least one operator.
          - `type` 'range'
          - `field` string, required
          - `gt` union
            - integer
            - number
            - string, date-time
          - `gte` union
            - integer
            - number
            - string, date-time
          - `lt` union
            - integer
            - number
            - string, date-time
          - `lte` union
            - integer
            - number
            - string, date-time
        - In — Field is one of a set of values.
          - `type` 'in'
          - `field` string, required
          - `values` union[], required
            - union
              - …

## Response `200`

Successful Response

- SearchResponse
  - `hits` SearchHitResponse[], required
    - `chunk` SearchChunkResponse, required — Wire chunk: atom fields plus any custom fields (via ``extra``).
      - `id` string, required
      - `source_id` string, required
      - `locator` string, required
      - `start_offset` integer, nullable, required
      - `end_offset` integer, nullable, required
      - `chunk_type` string, required
      - `parent_ref` string, nullable
      - `content` string, required
      - `metadata` object
    - `score` number, required
    - `distance` number, nullable
    - `index_name` string, required

## Other responses

- `400` — Invalid search query
- `404` — Index not found
- `409` — Index is not ready for search
- `422` — Validation Error
- `500` — Search execution failed

## Changes

- **2026-09-23** `fa73befe1c61` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/mistral/apis/mistral-ai-api/changes/v1/rag/managed_indexes/:index_name/search/post.md)

---

[API](https://skmtc.dev/mistral/apis/mistral-ai-api.md) · [All operations](https://skmtc.dev/mistral/apis/mistral-ai-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mistral/apis/mistral-ai-api/revisions/fa73befe1c61?raw)
