Skip to main content
POST
Error

Authorizations

Authorization
string
header
required

A contact session token, uk_ct_…. Belongs to one of the developer's own users, and reads only that user's data.

Body

application/json
channel
enum<string>
required
Available options:
chat
body_text
string
required

The first message, as the contact wrote it.

Maximum string length: 20000
subject
string
Maximum string length: 500

Response

The conversation, as the contact sees it — no assignee, no team-side metadata.

A conversation as the contact sees it: theirs by construction, so no contact id, no assignee, no team-side metadata — who is handling a ticket is the team's business, not the widget's.

id
string<uuid>
channel
enum<string>
Available options:
email,
chat
subject
string
status
enum<string>
Available options:
open,
pending,
snoozed,
resolved
created_at
string<date-time>
last_message_at
string<date-time> | null
last_read_at
string<date-time> | null

How far this contact has read — the unread badge is last_message_at newer than this. Moved by the /read endpoint.

last_message_preview
string

The last public line of the thread, truncated to 240 characters — what a closed widget renders beside the badge, since a sentence is a reason to answer where a number is only a reason to look. An internal note is never it, whatever its timing. Present on the LIST read only, and absent when the conversation has no public message or the preview read failed: the previews are an accessory, and a list that failed over one would take a whole screen down for a line nobody asked to open.

last_message_author_kind
enum<string>

Who wrote the line in last_message_preview. Travels with it because a preview of the contact's own message is not news to the contact.

Available options:
contact,
agent,
ai,
system