Reply to a hand-off
Answer the customer. This is the only endpoint that sends something to one of your customers, so it behaves differently from the rest of the API.
Credential: API token · Role: owner, admin or responder (reply)
The reply leaves the building
It is not “add a message to a thread”. It goes out on the channel the conversation started on — back to WhatsApp, Messenger or Instagram, or by email from the connected mailbox — and is mirrored into the linked Slack thread and appended to the Zendesk or HubSpot ticket. If the customer is in the widget, it signals that a human has arrived.
Warning
Authorship comes from the token, never the body. The message is attributed to the token’s owner, and the name your customer sees is that teammate’s profile name. There is no way to reply as someone else, and the audit trail names who answered.
Note
Text only, and attachments are refused rather than dropped. The body takes 1–10,000 characters. Sending
attachmentsis a400, not a silent omission — attaching a file needs an authenticated upload into your workspace’s own storage, so it stays a dashboard flow.
Side effects worth knowing
Replying also stamps the first-reply time, and auto-assigns the hand-off to you if nobody owns it yet.
It emits handoff.message.created — and, with resolve: true, handoff.status.changed. If you wire both an API reply path and a webhook consumer, you will receive your own reply back as an event. Dedupe on the event id.
Authorizations
An API token (pv_ut_…) as Authorization: Bearer pv_ut_…. X-Peeve-Key is accepted too. Never a query parameter — URLs end up in proxy logs and Referer headers.
The token carries its owner's live workspace role, re-read on every call.