Retrieve a conversation

View as Markdown
Returns one conversation of the workspace, active or closed, with the same joined fields as `GET /api/conversations` plus `messages`: the **first 50** messages of the thread in chronological order (`created_at` ascending). Longer threads are truncated at 50. 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.** Cached for up to 30 seconds. 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` (or `write`). - **Rate limit:** General API — 120 requests/min per workspace (Starter), 200 (Growth), 300 (Business), 600 (Enterprise). See [Rate limits](/rate-limits). - **Plan:** Available on every plan.

Authentication

AuthorizationBearer
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. | Scope | GET / HEAD | POST / PUT / PATCH / DELETE | Admin-only routes | | --- | --- | --- | --- | | `read` | Yes | No | No | | `write` | Yes | Yes | No | | `full` | Yes | Yes | Yes | 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](/authentication).

Path parameters

conversationIdstringRequiredformat: "uuid"
Id of the conversation. A value that is not a UUID returns 400.

Response

The conversation and its first 50 messages.
dataobject

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.

Errors

400
Bad Request Error
401
Unauthorized Error
403
Forbidden Error
404
Not Found Error
429
Too Many Requests Error