Skip to main content
POST
Search feedback records semantically

Authorizations

x-api-key
string
header
required

Management API key; must include workspaceId as an allowed workspace with read, write, or manage permission.

Query Parameters

limit
integer
default:10

Page size, at most 100. Unlike the limit on GET /api/v3/feedbackRecords, this one is never rejected: the search endpoints clamp instead of answering 400. A value above 100 is reduced to 100, and 0, a negative number or a non-numeric value falls back to the default of 10. Read the limit in the response to see what was actually applied.

cursor
string

Opaque keyset cursor returned as next_cursor by the previous page. Omit on the first request. A malformed cursor answers 400.

min_score
number<float>
default:0.7

Only matches with score >= min_score are returned. Like limit, this value is clamped rather than rejected: above 1 it becomes 1, below 0 it becomes 0, and a non-numeric value falls back to the default of 0.7. That default is conservative — on the embedding model we measured, query→record similarities for genuinely relevant text often landed around 0.55–0.7 — so if a good query returns nothing, lower it (e.g. 0.5) and filter on the returned value_text. Score distributions differ per model, so treat those numbers as an observation rather than a guarantee.

Body

application/json
query
string
required

Natural-language search text. It is embedded and compared to record embeddings by cosine similarity.

Minimum string length: 1
tenant_id
string<cuid2>
required

The feedback dataset to search (the dataset id). Results never cross datasets.

Response

Matches retrieved

data
object[]
required

Matches ordered by descending score.

Maximum array length: 100
limit
integer
required

The page size that was applied.

next_cursor
string

Opaque keyset cursor for the next page. Present only when a full page was returned and there may be more results. Pass it back unchanged as cursor.