Pagination
Date filters
Supply start_time and end_time as Unix epoch seconds. The start is inclusive and the end is exclusive; the range must be nonempty and no longer than 31 days. time_field is optional and defaults to the timestamp listed below for the requested resource. The same values apply inside filters when creating an export; export timestamps must be JSON integers.
Use the timestamp listed for each resource. created_at, updated_at, and analysis_completed_at are not supported filter values.
Earlier timestamp filters such as conversation_time[gte] / conversation_time[lt] remain accepted for compatibility, as do their corresponding export JSON objects. Do not combine those filters with time_field, start_time, or end_time in one request.
Stable order
The four resource list GETs accept sort_order=asc|desc. The default is desc (newest first); asc returns oldest first. The timestamp used for ordering is also the timestamp used by the date-range filter.
Records with equal timestamps are ordered by ID in the same direction. For example, ascending order uses (timestamp ASC, id ASC).
Continue with the same sort_order, date range, and other filters. Switching direction with an existing cursor returns 400 INVALID_CURSOR; omit the cursor to start a new query. Omitting sort_order is equivalent to sending desc.
Single-record GETs do not accept sorting. Field definitions always sort by field key ascending. Exports retain descending timestamp and ID order.
Treat a cursor as an opaque continuation value, not a page number or permanent synchronization checkpoint. It remains subject to authorization. A cursor from one query cannot be used with another query. Cursors expire after 15 minutes and are bound to the key, permissions, endpoint, filters, and sort order. An invalid or expired cursor returns 400 with INVALID_CURSOR; restart that bounded query.
Changing data
Pagination is not a historical snapshot. New analysis and updated customer profiles can affect results while you read them. Persist records by ID, tolerate repeated records, and use bounded overlapping reads for reconciliation. These endpoints do not provide a complete update feed.