List Messages
List the workspace’s messages, newest first, as a cursor-paginated page. Filter by
id, aggregate status (repeat the parameter for several), recipient and
created_at; filters are combined with AND and are fingerprinted into the cursor, so
keep the query identical while walking a list.
Authentication
A workspace key (rray_live_…, bound to one workspace) or the account’s platform key. Platform keys name the target workspace with RRay-Workspace-Id. See Credentials.
Headers
The workspace to act on. Required with a platform key; rejected with a workspace key, which already carries its workspace — a matching value is rejected too, rather than silently ignored. An id that is not yours returns 404 workspace.not_found.
Query parameters
Return the message with this exact id (the id returned by POST /v1/messages).
Only return messages whose aggregate status is one of these. Repeat the param for several (status=queued&status=delivered).
Only return messages addressed to this exact address on any channel (to, cc, or bcc).
Filter by creation time (RFC 3339). Pass 1 or 2 values:
- Two values → an inclusive range; order does not matter (
created_at=2026-07-01T00:00:00Z&created_at=2026-07-31T23:59:59Z). - One full timestamp → exact match (
created_at=2026-07-12T09:30:00Z). - One date, no time → that whole calendar day (
created_at=2026-07-12).
Include a timezone offset for local-time filtering (2026-07-12T00:00:00+07:00); a value without an offset is interpreted as UTC. To show a user’s day in their timezone, send the two local-day boundaries with their offset.
Rows per page (1–100, default 20).
Opaque pagination token. Omit for the first page (newest rows first). To page, copy pagination.next_cursor (older rows) or pagination.prev_cursor (newer rows) from the previous response into this parameter — do not build it yourself: the walk direction and the active filter set are encoded in the token, and reusing a cursor with a different filter set is rejected (validation.cursor_filters_mismatch).
Response
Always list.