---
title: "Search Notes"
method: POST
path: "/v2/notes/search"
tags: ["external", "external-v2"]
---

# Search Notes

`POST /v2/notes/search`

Search notes using a required free-text query and structured filters.
When multiple `filter_by_contains_*` fields are true, a note may match any of them.
Returns note results from a bounded search snapshot with deterministic offset pagination.
Query-based searches are relevance-ranked within the bounded search snapshot window.
Reuse the returned `snapshot_id` when requesting later pages.
The returned `total` reflects the bounded search snapshot, capped by the 100-result search window.
For deterministic chronological pagination across all accessible notes, use `GET /v2/notes`.

## Query parameters

- `limit` integer, nullable — Maximum number of notes in this search page. Use smaller values for lower latency. Default is 20; valid range is 1 to 50.
- `offset` integer — Number of matching notes to skip before returning results. This value is zero-based.
- `snapshot_id` string, uuid, nullable — Opaque search snapshot identifier returned by a previous search page. Required when requesting later pages with `offset > 0`.

## Request body

- NoteSearchRequestSchema
  - `config` NoteResultsConfigSchema
    - `include_note_content` boolean — When true, include full markdown content for each returned note. Keep false for lightweight metadata/snippet responses.
  - `filter_by_collection_ids` string[], nullable — Optional collection UUID filters. When provided, results are limited to notes in any listed collection.
  - `filter_by_contains_files` boolean — When true, include notes that contain file-like attachments (including file and PDF kinds).
  - `filter_by_contains_images` boolean — When true, include notes that contain image media (including image and GIF kinds).
  - `filter_by_contains_open_tasks` boolean — When true, include notes that contain at least one open task item.
  - `filter_by_contains_tasks` boolean — When true, include notes that contain at least one task item (open or closed).
  - `filter_by_created_after` string, date-time, nullable — Optional inclusive lower bound for note creation time (ISO 8601). The timestamp must include a timezone offset such as `Z` or `+01:00`.
  - `filter_by_created_before` string, date-time, nullable — Optional inclusive upper bound for note creation time (ISO 8601). The timestamp must include a timezone offset such as `Z` or `+01:00`.
  - `filter_by_updated_after` string, date-time, nullable — Optional inclusive lower bound for note update time (ISO 8601). The timestamp must include a timezone offset such as `Z` or `+01:00`.
  - `filter_by_updated_before` string, date-time, nullable — Optional inclusive upper bound for note update time (ISO 8601). The timestamp must include a timezone offset such as `Z` or `+01:00`.
  - `query` string, required — Required text query for relevance matching. The query must contain at least one non-whitespace character. This endpoint does not provide exhaustive chronological pagination; for that, use `GET /v2/notes`.

## Response `200`

OK

- NoteSearchResponseSchema
  - `has_next_page` boolean, required — Whether another request within the 100-result search window can return more matching notes.
  - `limit` integer, required — Limit applied to this search page.
  - `offset` integer, required — Zero-based offset applied before returning results.
  - `request_id` string, required — Identifier for this API request. Useful for tracing and support.
  - `results` NoteSearchItemResponseSchema[], required — Relevance-ranked note results matching the search request.
    - `audio_recording_ids` string[], required — Audio Recording UUIDs currently associated with the note.
    - `collection_ids` string[], required — Collection UUIDs currently associated with the note.
    - `content` string, nullable — Full markdown content for the note. Included only when `config.include_note_content=true` is requested.
    - `created_at` string, date-time, required — Creation timestamp for the note in ISO 8601 format.
    - `id` string, uuid, required — UUID of the note.
    - `snippet` string, nullable — Optional derived preview text for quick display and ranking context. It may be truncated and is not guaranteed to contain full note context.
    - `title` string, required — Current title of the note.
    - `updated_at` string, date-time, required — Last modification timestamp for the note in ISO 8601 format.
  - `snapshot_id` string, uuid, required — Opaque snapshot identifier to reuse for deterministic later pages.
  - `total` integer, required — Number of matching notes captured in the bounded search snapshot, capped by the 100-result search window.

---

[API](https://skmtc.net/mem/apis/mem-api.md) · [All operations](https://skmtc.net/mem/apis/mem-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/mem/mem-api/revisions/4023cb07f31f/schema)
