Query Documents

Beta
Query a collection: filter on top-level scalar fields with `where`, order on one with `order_by`, page with `limit` + `cursor`. Values compare with JSON semantics (numbers as numbers, strings lexically, so ISO-8601 timestamps order as dates). A read carrying a body, hence a POST on a literal sub-path; `query` and `batch` are reserved document ids. Dark launch: requires the `hosted_apis_access` entitlement (402 `hosted_apis_not_in_plan` otherwise).

Authentication

AuthorizationBearer

Enter your API key with the Bearer prefix, e.g. ‘Bearer sk_…’.

Path parameters

store_idstringRequired

Store id (prefixed external id, store_...).

collectionstringRequired

Collection name (lowercase letters, digits, _, -).

Headers

Speechify-VersionstringOptional

Request

This endpoint expects an object.
wherelist of objectsOptional

Filters, ANDed. Only top-level string / number / boolean / null fields are queryable.

order_byobjectOptional
limitintegerOptional1-100
Page size, 50 when omitted.
cursorstringOptional

The next_cursor of the previous page; must belong to the same ordering.

include_databooleanOptional

Set false to return index rows only; bodies are included when omitted.

Response headers

Speechify-Request-IdstringOptional
Unique identifier for this request, present on every response (2xx and non-2xx alike). If the caller sends a `Speechify-Request-Id` request header the server echoes it back (sanitized and length-capped) so one logical request can be traced end-to-end; otherwise the server generates a fresh value. Log it on every response and quote it in support requests - it is the stable handle that ties your observation to Speechify's server-side logs, and it matches the `request_id` field in the error envelope. The legacy alias `X-Request-ID` carries the same value and is still accepted on requests, until 2027-07-24. Prefer the un-prefixed name (RFC 6648).

Response

OK
next_cursorstring or null

Opaque keyset cursor for the next page. Pass back as the cursor request parameter. null when the caller has reached the end of the list (has_more is also false in that case).

has_moreboolean
True when more rows exist beyond this page.
documentslist of objects

Errors

400
Bad Request Error
401
Unauthorized Error
402
Payment Required Error
404
Not Found Error