Retrieve a conversation
Returns one conversation of the workspace, active or closed, with the same joined fields as
GET /api/conversations plus messages: the most recent limit messages of the thread
(50 by default), in chronological order (created_at ascending, oldest of the page first).
Paging older messages. meta.messages describes the page. When hasMore is true,
nextBefore is the id of the oldest message returned: send it as before to get the
limit messages immediately older than it, and prepend that page. nextBefore is null
on the first page of the thread. Messages sharing a timestamp are ordered by id, so none
is skipped or repeated between pages. A before that is not a message of this conversation
returns an empty messages array with hasMore: false. The conversation fields are the
same on every page.
Message content is cleaned for display: the delimiter tags wrapped around customer text
before it reaches the model (e.g. <user_message>) are stripped. Each message also carries
attachment, the name, type and size of a file the contact sent, or null. File bytes are
never stored.
Consistency. The newest page at the default limit of 50 is cached for up to 30 seconds;
pages requested with before or another limit are read fresh. An operator reply through
POST /api/conversations/{conversationId}/messages clears the cache immediately. Resolving a
human-help request does not, so needs_human_resolved_at can lag for up to 30 seconds.
Access
- Required scope:
read(orwrite). - Rate limit: General API — 120 requests/min per workspace (Starter), 200 (Growth), 300 (Business), 600 (Enterprise). See Rate limits.
- Plan: Available on every plan.
Authentication
Workspace API key: jl_ followed by 64 lowercase hex characters, created by the workspace owner in the
dashboard (Settings → API Keys) and sent as Authorization: Bearer jl_.... The plaintext is shown once,
at creation; Jelliu stores only a SHA-256 hash. A workspace can hold up to 25 active keys.
Operations restricted to admins or owners reject keys without the full scope with 403, and say so in
their description. No key, whatever its scope, can mint or revoke API keys or rotate a webhook secret —
that requires a signed-in owner session. A revoked key stops authenticating within about 10 seconds.
See Authentication.
Path parameters
Query parameters
Id of a message in this conversation (meta.messages.nextBefore from the previous page). Returns the messages older than it. A value that is not a UUID returns 400.
Response
A text conversation (WhatsApp, email, webchat, Instagram or Messenger) as returned by
GET /api/conversations and GET /api/conversations/{conversationId}. Fields are the
conversations row (snake_case) plus contact, agent and last-message columns joined in,
and a derived qualification. Analysis and telemetry columns are null until the
conversation has been analysed. null means not measured, never zero or neutral.

