Structured catalogue query (counts + listings)
/catalogue/queryAnswers literal catalogue questions — counts and metadata listings —
without a chat. This is the direct-REST door for the AI chat's
catalog_query tool and reuses it verbatim, so results carry EXACT
server-side totals (totalRecords, and distinctTitles for unique
titles counted once across formats/editions).
Use it for who/where/when and how-many questions: "how many books by
Agatha Christie", "list our Avon titles", "what did we publish in
2023". For topic/theme intent ("books about vampires") use
POST /resources/search with mode: vector instead.
The primary interface is filters — a list of {field, op, value}
conditions, ANDed together. A bare query string is a convenience: with
no filters it maps to a single title contains condition. Call
GET /resources/fields to discover the fields available on this tenant.
All results are filtered by the linked user's usergroup — the same access walls the in-app search applies.
Authorization
apiKey Issued to you when your integration is provisioned. Determines which catalogue resources are visible and which AI tools are available.
In: header
Request Body
application/json
TypeScript Definitions
Use the request body type in TypeScript.
A structured catalogue query. Provide filters (preferred) or a bare
query; at least one is required.
Response Body
application/json
application/json
application/json
application/json
curl -X POST "https://example.com/catalogue/query" \ -H "Content-Type: application/json" \ -d '{ "filters": [ { "field": "authors", "op": "~", "value": "Agatha Christie" } ] }'{ "data": { "totalRecords": 0, "distinctTitles": 0, "books": [ { "resourceId": 0, "title": "string", "author": "string", "imprint": "string", "publisher": "string", "isbn": "string", "date": "string", "snippet": "string" } ], "filters": [ { "field": "string", "op": "~", "value": null } ] }}{ "success": false, "status": "fail", "message": "string", "error": { "message": "API key is required", "code": "NO_API_KEY" }}{ "success": false, "status": "fail", "message": "API key is required", "error": { "code": "NO_API_KEY", "message": "API key is required" }}{ "success": false, "status": "fail", "message": "Hourly rate limit exceeded.", "error": { "code": "RATE_LIMITED", "message": "Hourly rate limit exceeded." }}List resource types visible to this api-key GET
Previous Page
Search resources (advanced) POST
Full-shape search. The body lets you combine free text with per-field, per-node, and date-range filters; pick a sort order; and paginate. `fieldFilters` and `dateFilters` are keyed by **field name** as returned by `GET /resources/fields`, and the available field names are **instance-specific** (they differ per publisher/deployment) — call `GET /resources/fields` first to learn what you can filter on for the tenant you are connected to. See `GET /resources/fields/{id}/options` for tree options.