Cross-object search — GET /v1/search
For each object the search looks at its textual fields — name-like fields first
(
name, first_name, last_name, title, email, phone, …), at most six —
and runs the same contains filter GET /v1/objects/{object}/records accepts, OR-ed
across those fields. That means everything the records read already enforces
applies unchanged: your workspace only, your record-level reach, no deleted
records, live or test dataset by credential, and the object’s own <module>:view
scope. An object your credential cannot view is simply absent from the
answer, not an error. Objects with no textual field (pure numbers/dates) are
skipped.
Response: groups[] per object with hits[] (id, a human label, the
matched_field, and the record as the records read returns it), plus
objects (what was searched) and total_hits. No scope of its own: every
authenticated credential may call it and sees what its scopes allow.
Not offered: id-fragment search (the GUI’s search bar matches short id
suffixes); use GET /v1/objects/{object}/records/{id} when you hold an id.
Reports — /v1/reports
All three take reports:view.
POST /v1/reports/query
The report runs over the rows the records read would return to you (same
scopes, reach, soft-delete and test-mode rules), up to 5,000 rows. When the
window holds more,
truncated: true says so and the figures cover the first
5,000 by the records read’s order — narrow the window or the filter. Groups
come sorted by key; rows with an empty group key are reported under key: null,
last.
This is the same arithmetic the GUI’s report builder does client-side, so a
saved report’s config (object, groupBy, aggregation, aggregationField,
filters) maps onto one aggregate call.
GET /v1/reports/pipeline?object=leads|deals
The status breakdown (total, by_status, and for leads converted) — the
same numbers the AI assistant’s pipeline_summary tool reports.
GET /v1/reports/saved
The workspace’s saved report definitions from the report builder (name,
object_id, config, is_shared). Read-only here; run one through
aggregate.