Retrieve a session transcript

View as Markdown
Returns the last 50 messages of the session's conversation, visitor and agent alike, oldest first. Call it after `POST /widget/init` returns `resumed: true` so the panel shows the earlier conversation instead of greeting again. Older messages are not reachable from the widget API. For live updates use `GET /widget/poll`. Credentials, origin check and limits are the same as `POST /widget/init`. The session must belong to the widget named by the credential. **Idempotency.** Read-only; safe to retry. **Access** - **Required scope:** None; `jl_` API keys are not used. The widget credential plus a matching `x-widget-parent-origin` authorise the call. - **Rate limit:** Widget public — 60 requests/min per IP, plus the widget's `rate_limit_rpm` per credential and 300 requests/min per workspace; the general limiter also counts 120 requests/min per IP. See [Rate limits](/rate-limits). - **Plan:** Available on every plan.

Headers

x-widget-api-keystringOptionalformat: "^[0-9a-f]{64}$"

Secret widget API key (plaintext_api_key from POST /api/widgets). Takes precedence over x-widget-id and wid. Send one of the three. Never expose it in a browser.

x-widget-idstringOptionalformat: "uuid"

Public widget id, the credential the embed script uses. Used when x-widget-api-key is absent.

x-widget-parent-originstringRequiredformat: "uri"

Origin of the page embedding the widget. Must match one of the widget’s allowed_origins; see POST /widget/init.

Query parameters

widstringOptionalformat: "uuid"
Public widget id as a query parameter. Used when neither header is present.
session_idstringRequiredformat: "uuid"

Session id from POST /widget/init. Not a UUID returns 400 Invalid query.

Response

Transcript. Empty when the visitor has not sent a message yet.
dataobject

Errors

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