---
title: "Search documentation and FAQ"
method: GET
path: "/search"
tags: ["Documentation"]
---

# Search documentation and FAQ

`GET /search`

## Request

- Base URL: `https://yappy.biz/api/v1`
- URL: `https://yappy.biz/api/v1/search`
- Auth: one of:
  - none
  - HTTP bearer
  - OAuth 2 (authorization code, authorization URL `https://yappy.biz/oauth/authorize`, token URL `https://yappy.biz/oauth/token`; client credentials, token URL `https://yappy.biz/oauth/token`, scopes: `read:docs`)

Full-text search across every documentation page and FAQ entry. Results carry a relevance score, the matching excerpt, and both HTML and markdown URLs, so you can quote the excerpt and cite the page in one step. Cursor-paginated.

## Query parameters

- `q` string, required
- `limit` integer
- `cursor` string
- `type` 'doc' | 'faq'

## Response `200`

Ranked search results

- SearchResults: Ranked search results with the query echoed back.
  - `object` 'list', required: Type discriminator.
  - `query` string, required: The query that produced these results.
  - `total` integer: How many results matched in total.
  - `data` SearchResult[], required: This page of results.
    - `object` 'search_result', required: Type discriminator.
    - `type` 'doc' | 'faq', required: What kind of thing matched.
    - `id` string: Slug or FAQ id.
    - `title` string, required: Title of the matching page or question.
    - `url` string, uri, required: HTML page.
    - `markdown_url` string, uri: Markdown twin.
    - `excerpt` string, required: The matching passage.
    - `score` number, required: Relevance, higher is better.
  - `pagination` Pagination, required: Cursor pagination. When has_more is false, next_cursor is null.
    - `limit` integer, required: How many items this page holds at most.
    - `has_more` boolean, required: Whether another page exists.
    - `next_cursor` string, nullable, required: Opaque cursor for the next page, or null.
    - `next_url` string, uri, nullable: Fully-formed URL for the next page, or null.

## Other responses

- `400`: The request was malformed
- `401`: The supplied credential is missing, expired, or invalid
- `403`: The credential is valid but lacks the required scope
- `429`: Too many requests
- `500`: Unexpected server error
- `503`: A dependency was unavailable

---

[API](https://skmtc.dev/yappy/apis/yappy-web-api.md) · [All operations](https://skmtc.dev/yappy/apis/yappy-web-api/llms.txt) · [OpenAPI document](https://skmtc.dev/yappy/apis/yappy-web-api/revisions/02b27cd526a7?raw)
