Search

Search with a grounded answer

Runs a retrieval over your compiled knowledge base and returns the matched chunks together with an AI-generated answer grounded on them. The answer also reads up to five chunks either side of each match, so passages are not cut mid-thought; results lists only the matched chunks. Every chunk carries the kb_node_id of its source document, so a cited passage can be opened in full with GET /org/kb/nodes/{kb_node_id}. Each call consumes search credits.

post/org/search

Request

  • Base URL
    https://apiv2.senso.ai/api/v1
  • Auth
    API key in header X-API-Key

Headers

X-Senso-Signalsstring

Send off to keep this search out of your organization's gap report. The search still runs, consumes credits and is recorded in search history; it is only never counted towards a gap. false, 0, no, skip and none mean the same, case-insensitively. Any other value, or no header, leaves the search eligible. Use it on automated, synthetic or test traffic. Only POST /org/search, /org/search/full and /org/search/stream ever file gaps; /org/search/context and /org/search/content accept the header and never file one either way.

Request body

querystring required

The search query. Required and non-empty; there is a maximum length.

max_resultsinteger

Maximum results to return. Defaults to 5; values ≤ 0 fall back to 5 and values above 20 are capped at 20.

content_idsstring[]

Restrict the search to these content items.

require_scoped_idsboolean

When true, content_ids must be non-empty — the request is rejected with 400 otherwise. Use it to guarantee a scoped search never silently widens.

search_typestring

Retrieval pipeline to use. One of hybrid (default), lexical, or vector. Matching is case-insensitive; an empty or omitted value selects hybrid. Any other value is rejected with 400.

neighbor_radiusinteger

/org/search/context only. Adds up to this many chunks either side of each matched chunk to results, marked inclusion_reason: "neighbor", so each match can be read as a passage. Defaults to 0 (matched chunks only); values outside 0–5 are rejected with 400. Total returned text is capped at about 60,000 characters, trimming the farthest neighbours first. Ignored by the other search endpoints, whose answers already include neighbouring chunks.

Response

The matched chunks and the grounded answer.

querystring required
search_type'hybrid' | 'lexical' | 'vector' required

The retrieval pipeline that produced this response — the scale each result's score is on.

answerstring required

The AI-generated answer grounded on the matched content.

total_resultsinteger required
max_resultsinteger required
processing_time_msinteger required

Changes

No recorded changes to this operation across all 1 revision of this API.