# The sections of the docs of this version closest in meaning to a query: what `search_docs` fuses with its ranking by words (hybrid search).

`POST /datanotes/manual/search/` (operation `semantic_search_docs`)

The engine embeds every section of the docs it ships with the provider of semantic search, in an index of its own (`semantic/docs.json` in its store), rebuilt when the docs change. It builds the index in the background, after it starts and when a search finds it out of date: until the index covers the docs, the answer has `ready: false` and no results. 400 when semantic search is off.

## Request body

`application/json`, required

| Property | Type | Required | Default | Description |
| --- | --- | --- | --- | --- |
| `query` | `string` | yes |  | The words to rank the sections by, such as `time travel a view`. |
| `limit` | `integer` | no | `50` | The most sections to return. |

## Responses

| Status | Description | Body |
| --- | --- | --- |
| 200 | Done. | `DocsSemanticResults` (application/json) |
| 400 | Bad input: the body is not a JSON object, or an argument is unknown, missing or of the wrong type. | `Error` (application/json) |
| 401 | Missing or wrong bearer token. | `Error` (application/json) |
| 500 | Unexpected error. | `Error` (application/json) |
| 503 | The docs are not in this installation (a checkout where they were not built). | `Error` (application/json) |

The schemas named here are in [openapi.json](https://datanotes.dev/openapi.json) (`components.schemas`).
