Feedback Records

Semantic search over feedback records

Changed on

Embeds the search query and returns feedback record IDs with similarity scores (cosine, 0..1). Only available when embeddings are configured (EMBEDDING_PROVIDER and EMBEDDING_MODEL set). Supported providers: openai, google (Gemini Developer API / Google AI Studio), google-gemini (Gemini Enterprise Agent Platform API). When embeddings are disabled, this endpoint returns 503 Service Unavailable. Request body must include query and tenant_id (required for tenant isolation).

post/v1/feedback-records/search/semantic

Request

  • Base URL
    http://localhost:8080
  • URL
    http://localhost:8080/v1/feedback-records/search/semantic
  • Auth
    HTTP bearer

Query parameters

limitinteger

Number of results to return (default 10, max 100). Consistent with list endpoints.

cursorstring
Example:eyJkIjowLjEsImkiOiIwMThlMTIzNC01Njc4LTlhYmMtZGVmMC0xMTExMTExMTExMTEifQ==

Omit for the first page. For the next page, use the exact value from the previous response's next_cursor. Opaque (base64-encoded); keyset pagination.

min_scorenumber float

Minimum similarity score (0..1); only results with score >= min_score are returned. Default 0.7 to reduce noise.

Request body

querystring required

Search query text (embedded and compared via cosine similarity)

tenant_idstring required

Tenant ID (required for isolation; must match feedback record tenant_id). U+FFFD is not allowed (it stands in for invalid UTF-8 or an unpaired surrogate).

Example request

{
  "query": "What do users think about login speed?",
  "tenant_id": "org-123"
}

Response

OK

limitinteger required

Limit used in query (echoed for consistency with list endpoints)

next_cursorstring

Opaque cursor for the next page (keyset paging). Present only when there may be more results (full page returned). Omit when no next page. Use this exact value as the cursor query param for the next page.

Example response

{
  "next_cursor": "eyJkIjowLjEsImkiOiIwMThlMTIzNC01Njc4LTlhYmMtZGVmMC0xMTExMTExMTExMTEifQ=="
}

Changes

    • warning

      the request property's maxLength was set to 4096

    • warning

      the request property's maxLength was set to 255

    • breaking

      added the pattern ^[^\uFFFD]*$ to the request property

    • info

      added the non-success response with the status