Search Workspace Notes (Deep)
Deep keyword search scoped to one workspace, named in the path by
workspaceGuid. Returns notes hydrated with their primary documents
(one-pager, custom) so an MCP/LLM client can read content alongside
metadata in a single call. This is the workspace-scoped successor to the
deprecated POST /v1/external/notes/search.
When to use this vs GET /v1/external/workspaces/{workspaceGuid}/notes?keyword=...
GET …/notes?keyword=…— lightweight: returns matched note metadata only. Cheaper.POST …/notes/search(this) — heavy: also returns the matched notes’ documents. Use when you need to understand the context behind a topic, not just see which notes match.
Which API keys work
Unlike the deprecated POST /v1/external/notes/search (user-scoped keys
only), this endpoint accepts user, workspace-system, and legacy team API
keys. A key bound to a workspace must match the workspaceGuid in the
path, otherwise the call returns 403. A user-scoped key must belong to
a member of the workspace, otherwise the call returns 403.
Behavior
- Results stay inside the path workspace. Both note matching and document hydration are workspace-bounded, so cross-workspace notes never leak.
- When the search index is unavailable or fails, the response sets
degraded=trueanddegradedReasonto one ofsearch_index_unavailable/search_index_degradedand returns an emptynotesarray — clients should surface this to the user/LLM. - Document content is structured (
sections); each document carries atruncatedflag when the combined section text exceeded the 5,000 char search budget. nextCursoris reserved for future use and is currently alwaysnull.
인증
API key in format {id}.{secret}
경로 매개변수
Workspace GUID. Obtain it from GET /v1/external/workspaces.
본문
응답
Matched notes with their documents.
Matched notes, ordered by full-text relevance with createdAt desc as tiebreaker.
true when the response was produced via a fallback path (e.g.,
search index unavailable). When degraded, notes may be empty and
quality is reduced.
Machine-readable reason when degraded=true. null otherwise.
search_index_unavailable, search_index_degraded, null