Skip to content

Full-text search

GET
/notes/search
curl --request GET \
--url 'http://127.0.0.1:7677/notes/search?q=example&limit=20&offset=0' \
--header 'Authorization: Bearer <token>'

FTS5 search over title, tags, and content. When embeddings are configured, results are merged with vector similarity via Reciprocal Rank Fusion. The scoring field on the response indicates which ranking mode was used.

q
required
string

Search query

limit
integer
default: 20 >= 1

Max results (default 20 for search/grep, 100 for list)

offset
integer
0

Skip first N results

tag
Array<string>

Filter by tag. Repeat the parameter for AND logic across multiple tags. Glob patterns are supported.

type
string

Filter by note type (comma-separated, glob patterns)

repo
string

Filter by repository (glob pattern)

ext
string

Filter by file extension in title

Scored, ranked search results

Media type application/json
object
data
required
Array<object>
object
memory
required
object
id
required
string format: uuid
title
required
string
description
string
tags
required
Array<string>
type
required
string
Allowed values: user feedback project reference knowledge snippet file
repository
string
created
required
string format: date-time
updated
required
string format: date-time
content
required

Markdown body

string
filePath
required

Absolute path on the server’s filesystem

string
score
required
number format: double
<= 1
matchType
required
string
Allowed values: uuid filename fts vector
total
required
integer
offset
required
integer
limit
required
integer
scoring
required

hybrid when embeddings are configured and contributed to the ranking, fts otherwise.

string
Allowed values: fts hybrid
Example
{
"data": [
{
"memory": {
"type": "user"
},
"matchType": "uuid"
}
],
"scoring": "fts"
}

Malformed request

Media type application/json
object
error
required
string
Example generated
{
"error": "example"
}