Skip to main content

Front Desk API

Every conversation a customer had with the shop's AI, on whatever channel it arrived on, and what the AI did about it.

A conversation is one exchange with one customer: a chat on the booking page, or a phone call. The row carries who they were, what they wanted, what the AI did, and the booking it led to if there was one.

Channelsโ€‹

ChannelWhat it is
chatThe AI chat on the shop's booking page
phoneA call the AI answered

Outcomesโ€‹

outcome is the value to branch on. outcome_label is the same thing in the words the shop reads on its own screen, so a dashboard built on this API says what the portal says.

OutcomeMeaning
openStill going, or nothing was concluded
answeredA question was answered
bookedIt led to a booking
movedAn existing booking was moved
canceledAn existing booking was canceled
link_sentThe customer was texted a link to finish it themselves
messageA message was taken for the shop
passed_to_ownerIt needs a person
didnt_knowThe AI could not answer, and the shop has been asked

Waiting on the shopโ€‹

needs_owner is true from the moment the AI hands a conversation over, and it stays true. waiting_on_you is the one to branch on: it is true only while the AI has handed it over AND nobody has marked it handled yet, which is what every count, filter and pill in the product reads. A client that watches needs_owner alone goes on nagging about something that was dealt with last week.

status_label is the single line to show for a row: "Needs you" while it is waiting, and what the AI did once it is not.

On a message, urgency says how it sounded: normal, urgent or emergency.

Archived conversations are put away rather than deleted. They are out of every list and are the only thing archived=true returns.

Scopesโ€‹

ScopeGrants
frontdesk:readList conversations, read one with its transcript, read the summary
frontdesk:writeMark a conversation handled, re-open it, archive it, put it back

frontdesk:write covers the state of the conversation. Changing a booking still goes through the Bookings API with bookings:write, so there is one write path for a booking however the request arrived.

Endpointsโ€‹

MethodPathWhat it does
GET/v1/front-deskList conversations
GET/v1/front-desk/summaryConversations, bookings, conversion and revenue, per channel
GET/v1/front-desk/{id}One conversation, with what was said
POST/v1/front-desk/{id}/handledA person dealt with it
POST/v1/front-desk/{id}/unhandledPut it back in front of whoever is on
POST/v1/front-desk/{id}/archivePut it away, without deleting it
POST/v1/front-desk/{id}/unarchivePut it back on the list