Skip to main content
A hand-off is the AI chatter deciding that a person should take a conversation: a fan in distress, a refund demand, a request to meet, something it must not handle. When it hands off, the conversation’s status becomes handoff, the AI stops replying in that chat, and a hand-off record explains why. The fan waits until your team acts, so hand-offs are the most time-sensitive items in the inbox. Scopes: inbox:read to list and read; inbox:write to resolve; messages:send to reply.

Why the AI hands off

Every hand-off has a reason and a human-readable label: Which situations hand off is configured per creator with handoffKinds in the AI persona. Self-harm language and anything involving someone under 18 always hand off.

List open hand-offs

GET /v1/handoffs returns the open hand-offs across every creator the key can see, oldest first (the fan who has waited longest comes first). Add creatorId for one creator; a creator the key cannot see is 404 CREATOR_NOT_FOUND. Page with limit (1 to 100, default 25) and cursor.
Response 200
You can also find these chats with GET /v1/conversations?status=handoff, and GET /v1/conversations/{conversationId} includes the open hand-off in its handoff field.

Work a hand-off

1

Read the conversation

Fetch the conversation and its latest messages (GET /v1/conversations/{conversationId}/messages). Read the note, then the fan’s own words.
2

Take over, if you need time

The AI is already silent in a handoff chat. If you want to keep it silent after you resolve, take the chat over first (POST /v1/conversations/{conversationId}/takeover), or simply reply: a reply from your team moves the chat to team for 12 hours.
3

Reply to the fan

Send your answer with POST /v1/conversations/{conversationId}/messages (with an Idempotency-Key). See Read and send messages. For welfare hand-offs, answer as a caring person, not as a salesperson.
4

Resolve the hand-off

POST /v1/conversations/{conversationId}/handoff/resolve closes it and returns the resolved hand-off (its note is your resolution note when you send one). Add an optional note (up to 300 characters) saying what you did; the body itself is optional. A conversation with no open hand-off answers 404 NOT_FOUND, so resolving twice is harmless. While sending through the API is switched off, resolving is refused with 503 SENDING_DISABLED, because it can hand the chat back to the AI.
If the chat is still in handoff when you resolve it (nobody replied or took it over), it goes back to the AI immediately, and the AI may answer the fan’s waiting message within seconds. If your team already replied, the chat stays with your team until its hold ends, and resolving only closes the record.
Response 200

Example: alert your team about new hand-offs

Poll every minute and post new hand-offs to your team chat. The most urgent reasons go first.
Python

From your AI assistant

With the MCP server connected, ask: “Are there any open hand-offs? Summarize each and suggest a reply.” The assistant uses list_handoffs and list_messages, drafts replies, and only sends or resolves (send_message, resolve_handoff) after you confirm, because both can reach the fan.