Change who answers a conversation (handover)
Changed onChanges who answers a conversation: Meta Business Agent handover on WhatsApp, Meta's conversation routing on Facebook and Instagram. On Instagram, Conversation Routing replaced the Handover Protocol in October 2025 and kept the thread-control calls below.
WhatsApp, on numbers with Meta Business Agent enabled:
- release: hand the conversation back to the agent so it resumes answering. You must currently hold control (sending any message takes it implicitly).
- take: take control before sending anything, so the agent stops replying while an operator reads the thread. Meta accepts this only from the business configured as the number's escalation partner; other apps take control by sending a message.
- pass: transfer control to the number's configured escalation partner, or to the agent with target: ai_agent. Meta's Cloud API currently rejects it ("Pass action is not supported", verified 2026-09-08); use release to hand a thread back to the agent.
Facebook and Instagram (conversation routing between the apps on the account, such as Page Inbox or the Instagram Inbox):
- pass with targetAppId: give the thread to another app (pass_thread_control). Page Inbox is 263902037430900, the Instagram Inbox is 1217981644879628.
- take: take the thread back (take_thread_control), only on accounts connected through a Facebook Page. Instagram Login answers 400 platform_not_supported.
- take preconditions: a default app set in the account's conversation routing settings, and Zernio allowed to take control of conversations (Page settings > Page setup > Advanced messaging). Otherwise Meta answers code 27 (400 platform_api_error).
- request: ask the current owner to pass the thread (request_thread_control); nothing changes until it does. Not available on Instagram Login connections (400 platform_not_supported).
- release: make the thread idle (release_thread_control); the account's default app answers next.
A send refused with not_thread_owner on a Facebook Login connection already tries take once and resends.
While another app owns the thread
While another app owns a Facebook or Instagram thread, inbound messages arrive with metadata.standby: true and a send answers 409 not_thread_owner.
The conversation's threadControl follows the result. This call does not fire conversation.control_changed; that event fires only when Meta tells Zernio another app passed a thread to it or took one from it.
Request
- Base URLhttps://zernio.com/api
- AuthHTTP bearer
- TypeScriptA function with typed inputs. Its response is checked against the schema.
Path parameters
The conversation ID
Request body
Response
Control transferred (or, for request, asked for)
Changes
- info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status - info
added the optional property
to the response with the status
- info
- info
added the new optional request property
- info
added the new
requestenum value to the request property - info
added the optional property
/to the response with the status
- info