conversations

Merge conversation

Unite two live threads that are the same counterpart reached twice (the usual source is merge_candidate_sids from link_conversation_person). The path sid is the TARGET and survives; source_sid is the one that goes away.

In one transaction the source's messages, timeline events, participants, tasks, plans and runs re-parent to the target, the channel anchors and channels union, the denorms and needs_reply recompute from the merged messages, and the source row is tombstoned with deleted_at and merged_into_sid. Participants with the same identifier fold into the target's existing row.

The agent's work on the source ends with it: its live plan is superseded, what it wrote there and had not sent is withdrawn (a draft_withdrawn event, cause plan_changed), its runs canceled. The target keeps its own plan, unless the source brings the merged thread its newest message as a new turn (the lead's, after the account landed on the sender profile, unanswered by anything of ours): then the target's plan goes too (cause newer_reply), the thread reopens and the agent reads that message as if it had just arrived (nothing is read when the agent is off for the thread).

Not reversible: there is no un-merge in v1, and anything holding the source sid has to re-point (the conversations.merged event carries both). The source must be live, in the same team and differ from the target; a target already merged away answers 409 target_merged_away. The wrong pair is only undone by hand.

Contract:

  • MCP tool merge_conversation, registry package mcp.unibox/conversations, mount unibox.threads.
  • Operation action, response envelope action.
  • Flags: dangerous: the MCP layer gates it behind a preview/commit token, and the effect cannot be undone through this API.
post/api/conversations/{sid}/merge

Request

  • Base URL
    https://beta.getsales.io/unibox/v1
  • Auth
    HTTP bearer and API key in header Team-SID

Path parameters

sidstring required

The TARGET thread, which survives and keeps its active plan.

Request body

source_sidstring required

The SOURCE thread, which is tombstoned. It must be live, in the same team, and different from sid; a target that is itself already merged away answers 409 target_merged_away.

Response

action success envelope.

successtrue required
operation'action' required
actionstring required

kebab-case verb; matches the route segment.

Changes

No recorded changes to this operation across all 1 revision of this API.