Help
DevelopersReference

Visitors

Who the agent has met, with account and CRM context and each visitor's journey.

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

List visitors, most recently seen first

GET /visitors

Scope: visitors:read. Operation id: listVisitors.

Parameters

NameInTypeMeaning
limitqueryintegerPage size, 1 to 200. Default 50.
cursorquerystringThe nextCursor from the previous page. Opaque; never build one.
identifiedquerybooleantrue keeps only visitors with an email or a CRM contact.
emailquerystring (email)Exact match, case-insensitive.

Example request

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

Response

One page of visitors.

FieldTypeAlwaysMeaning
itemsarray of Visitoryes
nextCursorNextCursoryes

Visitor

FieldTypeAlwaysMeaning
idstring (uuid)yes
emailstring or nullyes
displayNamestring or nullyes
statusstringyesThe agent's read of where the visitor is.
intentScoreintegeryes0 to 100.
visitCountintegeryes
firstSeenAtstring (date-time)yes
lastSeenAtstring (date-time)yes
accountobject or nullyesThe company the visitor appears to belong to, when known.
crmobject or nullyesThe CRM contact this visitor is linked to, when one is.
labelsobjectyesThe latest labels the agent assigned, by name.

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 visitor with their journey

GET /visitors/{id}

Scope: visitors:read. Operation id: getVisitor.

The visitor plus the last 20 conversations, the last 20 tour sittings, the lead record if one exists, and open follow-ups.

Parameters

NameInTypeMeaning
idpathstring (uuid)The visitor's UUID.

Example request

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

Response

The visitor and their journey.

Every field of Visitor, plus:

FieldTypeAlwaysMeaning
journeyVisitorJourneyyes

Visitor

FieldTypeAlwaysMeaning
idstring (uuid)yes
emailstring or nullyes
displayNamestring or nullyes
statusstringyesThe agent's read of where the visitor is.
intentScoreintegeryes0 to 100.
visitCountintegeryes
firstSeenAtstring (date-time)yes
lastSeenAtstring (date-time)yes
accountobject or nullyesThe company the visitor appears to belong to, when known.
crmobject or nullyesThe CRM contact this visitor is linked to, when one is.
labelsobjectyesThe latest labels the agent assigned, by name.

VisitorJourney

FieldTypeAlwaysMeaning
conversationsarray of Conversationyes
sittingsarray of Sittingyes
leadobjectyes
openFollowUpsarray of FollowUpyes

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

Sitting

One play of a tour by one viewer.

FieldTypeAlwaysMeaning
idstringyesThe view session id.
tourIdstring (uuid)yes
visitorIdstring or nullyes
emailstring or nullyes
sourcestring or nullyesWhere it played: preview, lightbox, embed, share, chat or legacy.
startedAtstring (date-time)yes
endedAtstring (date-time)yes
secondsintegeryes
stepViewsintegeryesStep views including revisits.
stepsSeenarray of integeryesDistinct step indexes
maxStepintegeryesFurthest step index reached; -1 when none.
completedbooleanyes
ctaClicksintegeryes

FollowUp

FieldTypeAlwaysMeaning
idstring (uuid)yes
agentIdstring or null (uuid)yes
conversationIdstring or null (uuid)yes
visitorIdstring or null (uuid)yes
questionstringyesThe visitor's question
reasonstring or nullyes
statusopen · answered · dismissedyes
answerstring or nullyes
answeredAtstring or null (date-time)yes
deliveredAtstring or null (date-time)yesWhen the agent delivered the answer to the visitor.
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.

Find visitors by what they asked

POST /visitors/search

Scope: visitors:read. Operation id: searchVisitors.

Free text over what each visitor asked and said — their chat turns, the questions the agent escalated, its own summaries, qualifying answers — plus the structured facts. The same match a saved segment runs, returning the people rather than a count, and saving nothing. asked takes web-search syntax: security OR SOC2, "single sign-on", pricing -enterprise.

Example request

curl "https://api.showpilot.com/v1/visitors/search" \
  -H "Authorization: Bearer $SHOWPILOT_API_KEY"
Runs against your sandbox with a test key.

Response

The matching visitors, most recently seen first.

FieldTypeAlwaysMeaning
countintegeryesHow many matched in total
truncatedbooleanyesTrue when more matched than were returned.
filterSegmentFilteryes
itemsarray of Visitoryes

SegmentFilter

Conditions AND together. At least one is required.

FieldTypeAlwaysMeaning
askedstringnoWeb-search syntax over what the visitor asked and said: security OR SOC2, "single sign-on", pricing -enterprise.
toursWatchedarray of string (uuid)noAny of these tours was watched.
identifiedbooleannoHas an email or a CRM contact.
hasCrmbooleanno
minIntentintegerno
lastSeenWithinDaysintegerno
qualifiedobjectnoQualifying answers that must equal these values.
labelsobjectno
accountobjectno

Visitor

FieldTypeAlwaysMeaning
idstring (uuid)yes
emailstring or nullyes
displayNamestring or nullyes
statusstringyesThe agent's read of where the visitor is.
intentScoreintegeryes0 to 100.
visitCountintegeryes
firstSeenAtstring (date-time)yes
lastSeenAtstring (date-time)yes
accountobject or nullyesThe company the visitor appears to belong to, when known.
crmobject or nullyesThe CRM contact this visitor is linked to, when one is.
labelsobjectyesThe latest labels the agent assigned, by name.

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 company, the people, and what they asked

GET /accounts/{domain}

Scope: visitors:read. Operation id: getAccountBrief.

The company card — CRM stage, owner, open deals, tier — with the people from it, strongest intent first, and the questions they left unanswered. Matched on the ENRICHED domain, so a brief works for a company whose visitors have never filled in a form. The questions are the visitor's own words, so they are masked unless the key holds conversations:transcripts.

Parameters

NameInTypeMeaning
domainpathstringA hostname. A scheme, www. and a path are all stripped.

Example request

curl "https://api.showpilot.com/v1/accounts/acme.com" \
  -H "Authorization: Bearer $SHOWPILOT_API_KEY"
Runs against your sandbox with a test key.

Response

The brief. account is null when nothing from this company has been seen.

AccountBrief

FieldTypeAlwaysMeaning
domainstringyes
accountobjectyes
peopleCountintegeryesPeople from this company in total
topIntentintegeryes
lastSeenAtstring or null (date-time)yes
peoplearray of Visitoryes
openQuestionsarray of objectyesWhat they asked that the agent could not answer — the opening line for a call.
redactionobjectyes

Visitor

FieldTypeAlwaysMeaning
idstring (uuid)yes
emailstring or nullyes
displayNamestring or nullyes
statusstringyesThe agent's read of where the visitor is.
intentScoreintegeryes0 to 100.
visitCountintegeryes
firstSeenAtstring (date-time)yes
lastSeenAtstring (date-time)yes
accountobject or nullyesThe company the visitor appears to belong to, when known.
crmobject or nullyesThe CRM contact this visitor is linked to, when one is.
labelsobjectyesThe latest labels the agent assigned, by name.

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).
429The key's bucket is empty. Code rate-limited; wait the Retry-After seconds.

On this page