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 areason 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.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 useslist_handoffs and list_messages, drafts replies, and only sends or resolves (send_message, resolve_handoff) after you confirm, because both can reach the fan.
Related
- Hugo, the AI chatter: every hand-off reason.
- AI persona: choose which situations hand off.
- Conversations: what happens to a chat after a hand-off.