Lean hybrid search
Lean pgvector + BM25 RRF search over the org’s memory chunks.
scope: user
filters to the effective subject (owner by default, or a provisioned subject
selected via X-Exo-Subject / the subject body field), org
searches the whole organization. Org routing and authz stay on the principal.
A missing embedder or pool degrades to 503 service_degraded, never 500.
Authorization
This route requires theread scope.
A missing or invalid credential returns 401 authentication_error. A valid credential without the scope returns 403 permission_denied, and the problem body names the exact scope required.
Headers
These are request conventions the contract does not declare as parameters, so they do not appear in the schema tables below.Success responses
Errors
application/problem+json body carrying a stable code, a requestId, and a suggestedAction where Exo has one. See Errors.
Notes
- This is the cheap primitive, not a smaller retrieve. There is no cognition block, no brain inference and no contradiction detection. If you want reasoning, call
POST /v1/retrieve. scopeis a body field here, not a header.userfilters to the effective subject,orgsearches the whole organization.- Search has its own rate-limit family. It embeds the query, so it does not draw on the generous
readsbucket. See Rate limits.
Authorizations
An Exo API key (exo_...) sent as the X-Exo-API-Key header.
Body
POST /v1/search request body.
topK is coerced into [1, 50] (default 10), never rejected. scope
selects the data scope: user (default) filters to the effective subject,
org searches org-wide. The reserved subject selector is handled by
the shared seam and is intentionally absent here.
The search text.
1 - 10000Data scope: 'user' (default) filters to the effective subject; 'org' searches across the whole organization.
user, org Maximum number of results; coerced into [1, 50] (default 10).
Response
Successful Response
POST /v1/search response: the ranked results plus a usage object.
Additive per-call usage counters for search (spec D13).
readUnits: number of results returned (the billable read unit).embedTokens: DOCUMENTED ESTIMATE of Voyage embed tokens for the query (~3.5 chars/token, the same tokenizer-free proxy retrieve reports), not the metered figure.