Help
DevelopersReference

Conversations

Sessions between visitors and the agent, with their messages.

Base URL https://api.showpilot.com/v1. Every call needs Authorization: Bearer <api key>; see Authentication.

List conversations, newest first

GET /conversations

Scope: conversations:read. Operation id: listConversations.

Sessions the team started from the dashboard are excluded.

Parameters

NameInTypeMeaning
limitqueryintegerPage size, 1 to 200. Default 50.
cursorquerystringThe nextCursor from the previous page. Opaque; never build one.
visitorIdquerystring (uuid)
agentIdquerystring (uuid)

Example request

curl "https://api.showpilot.com/v1/conversations?limit=50" \
  -H "Authorization: Bearer $SHOWPILOT_API_KEY"
Runs against your sandbox with a test key.

Response

One page of conversations.

FieldTypeAlwaysMeaning
itemsarray of Conversationyes
nextCursorNextCursoryes

Conversation

FieldTypeAlwaysMeaning
idstring (uuid)yes
agentIdstring (uuid)yes
visitorIdstring or null (uuid)yes
channelchat · voiceyes
pageUrlstring or null (uri)yes
referrerstring or nullyes
startedAtstring (date-time)yes
lastMessageAtstring or null (date-time)yes
endedAtstring or null (date-time)yes

NextCursor

Pass as cursor for the next page; null on the last page.

Errors

StatusWhen
400A parameter is malformed, such as a cursor this API did not issue, a limit under 1, or an unknown status. Code invalid-request.
401No key, or an unknown or revoked key. Code unauthorized.
403A valid key without the operation's scope (code insufficient-scope), or a plan without API access (code plan-api-off).
429The key's bucket is empty. Code rate-limited; wait the Retry-After seconds.

One conversation with its messages

GET /conversations/{id}

Scope: conversations:read. Operation id: getConversation.

What the visitor asked and what the agent answered. With conversations:read the content comes back with the PEOPLE MASKED — email addresses, phone numbers, card and account numbers, and the visitor's own name are replaced by [email], [phone] and the like, wherever they appear. What was said is left alone. The redaction field then says how many of each were masked. Add the separate conversations:transcripts scope to a key to read them verbatim; it is never granted implicitly, including to an organization admin's connected client.

Parameters

NameInTypeMeaning
idpathstring (uuid)

Example request

curl "https://api.showpilot.com/v1/conversations/c0000001-0000-4000-8000-000000000000" \
  -H "Authorization: Bearer $SHOWPILOT_API_KEY"
Runs against your sandbox with a test key.

Response

The conversation and its messages.

Every field of Conversation, plus:

FieldTypeAlwaysMeaning
messagesarray of MessageyesIn order, up to 500.
redactionobjectyesNull when nothing was masked, or when the key holds conversations:transcripts.

Conversation

FieldTypeAlwaysMeaning
idstring (uuid)yes
agentIdstring (uuid)yes
visitorIdstring or null (uuid)yes
channelchat · voiceyes
pageUrlstring or null (uri)yes
referrerstring or nullyes
startedAtstring (date-time)yes
lastMessageAtstring or null (date-time)yes
endedAtstring or null (date-time)yes

Message

FieldTypeAlwaysMeaning
idstringyes
roleuser · assistant · tool · systemyes
authorKindstringyesvisitor, agent, rep or widget.
contentstringyesWhat was said. Identities are masked unless the key holds conversations:transcripts.
redactedbooleannoTrue when something in this message was masked. Absent on a verbatim read.
createdAtstring (date-time)yes

Errors

StatusWhen
401No key, or an unknown or revoked key. Code unauthorized.
403A valid key without the operation's scope (code insufficient-scope), or a plan without API access (code plan-api-off).
404No object with that id in this workspace. Code not-found.
429The key's bucket is empty. Code rate-limited; wait the Retry-After seconds.

On this page