List conversation messages
Messages are ordered by time, then by message ID to keep the order stable. Different filters combine with AND, and multiple values in the same filter combine with OR.
A date-range query with no other filter that would span more than 10,000
sessions is rejected with 400, so narrow the range or add sessionIds for
busy projects.
Authorizations
Project-bound API key. Do not send an Authorization header.
Path Parameters
1Query Parameters
Inclusive ISO 8601 timestamp. Required with toDate unless sessionIds is supplied.
Exclusive ISO 8601 timestamp. Required with fromDate unless sessionIds is supplied.
Filter to specific sessions. Pass up to 10,000 session IDs, comma-separated or by repeating the parameter. Can be used instead of a date range.
100001Filter to messages from specific end users, using the identity recorded for them on the channel. Pass up to 100 values, comma-separated or by repeating the parameter.
1001Filter by the channel the conversation took place on. Pass up to 100 values, comma-separated or by repeating the parameter.
Matched exactly as stored, with no alias handling. Unlike the sessions
endpoint, web and web_chat are different values here, and shorthand such
as sms or sdk_http matches nothing — use the exact channel name.
Not restricted to a fixed list, so an unrecognised value returns no results rather than an error.
100http_async, slack, line, msteams, whatsapp, messenger, instagram, twilio_sms, zendesk, telegram, genesys, genesys_open_messaging, ai4w, kore_agent_assist, email, voice_vxml, korevg, audiocodes, genesys_audio_connector, voice_pipeline, voice_realtime, voice, voice_twilio, voice_livekit, ag_ui, a2a, sdk_websocket, web_debug, web_chat, api, http Filter by environment. Pass up to 100 values, comma-separated or by repeating the parameter. Matched exactly as stored.
Not restricted to a fixed list, so an unrecognised value returns no results rather than an error, though in practice only the four values below are stored.
100dev, staging, production, working-copy Filter by a custom dimension recorded against the session. Replace key with
the dimension name — for example traceDimensions[tier]=gold. Repeat with
different keys to require all of them. Values match exactly.
Pass the nextCursor value from the previous response to get the next page.
Do not use together with offset or skip.
1Number of messages to skip before the first one returned. Do not use
together with cursor or skip.
x >= 0An older name for offset, kept for compatibility. Prefer offset. Do not
use together with cursor or offset.
x >= 0How many messages to return. A page may come back with fewer than requested
so the response stays within the 1 MiB size limit — check hasMore rather
than assuming a short page is the last one.
1 <= x <= 10000Sort order by time: asc for oldest first, desc for newest first.
asc, desc Response
Message page returned successfully.
Always true on a successful response.
Total number of messages matching your filters, across all pages.
x >= 0Whether more pages are available after this one.
The offset applied to this response.
x >= 0The page size applied to this response.
1 <= x <= 10000The messages on this page.
Opaque cursor for the next page.