POST /v1/workspaces/{workspace_id}/filtered-search pages with a
discriminated body: { "type": "query", ... } then
{ "type": "page", "cursor": "..." }.
Python: client.search.filtered / filtered_page. TypeScript: HTTP only.
Ask a filter, rank, or count question without a grouping setting. Each result is
one matching catalog entry, whose identity is established from the source data.
Native register entries stay separate; supporting sections retain their own
values and citations in components. Entries from separate source files remain
separate; this does not deduplicate a contract appearing in both a register and a PDF.
Each row’s entry_id identifies the entry in the current catalog independently
of query wording; source_file_id identifies the supporting uploaded file.
Unambiguous structural identities persist when the same source generation is
reprojected. Incomplete or ambiguous identities fall back to the catalog record
identity and can change on rebuild.
Query wording does not change the result unit: the response uses
result_unit="entry", and ranking, top-N, and pagination operate on entries.
total_matches counts matching entries; total_files counts their distinct source
files. Both describe all confirmed matches before top-N and paging. File-type and
document-kind conditions filter the entries without changing what a result represents.
The nullable request result_unit is a deprecated compatibility override. Its
legacy "source", "component", and "entity" values remain accepted; omit it
for catalog entries. Older results without result_unit use component
units and may omit total_files.
An idempotent retry that omits the override can replay a stored source request,
preserving that job’s original grouping. A different explicit override is rejected.
Unknown catalog values remain candidates for content verification. They are
not confirmed matches. Content-verified results remain non-exhaustive; inspect
content_verification.unverified_candidates before interpreting an empty result.
Requested output fields appear in columns with requested=true, independently
of the filtered flag. Available catalog values retain their citations and native
formatting. An unavailable requested value has cell status unexamined; it does
not exclude a matching entry. A condition on that value still requires evidence
before the entry can count as a match.
Scope a query with path_prefix (a folder), paths (exact uploaded files, no
limit on how many), or both. Only catalog entries extracted from the resulting
files can match. The two add up: the catalog covers every file under the folder
plus every named file. Unknown or inaccessible paths are refused
with 404 before a job exists. A page request carries no scope: it re-executes
under the original query’s.
See Search and Pagination.