conversations

Update conversation

The user-owned surface of a thread: close or reopen it (state), snooze it (snoozed_until), set the per-lead autonomy (agent_mode_override), mark it read or unread (unread_count 0 | 1, replied threads only). Everything else on the row is pipeline-owned: the scenario, the automation ref, the active plan and the agent counter are rejected, and a pipeline state such as agent or waiting is 422 invalid_transition. No changeable field is 422 nothing_to_update.

Contract:

  • MCP tool update_conversation, registry package mcp.unibox/conversations, mount unibox.inbox.
  • Operation update, response envelope update.
  • Flags: none.
patch/api/conversations/{sid}

Request

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

Path parameters

sidstring required

Conversation sid (ub_cv_...).

Request body

state'done' | 'needs_you'

The user pair only: done closes the thread, needs_you reopens it. Every other state is pipeline-owned and answers 422 invalid_transition.

snoozed_untilstring nullable

ISO 8601 UTC. Setting the clock parks the thread in state=later; null clears it and wakes the thread to needs_you. Any inbound message cancels the snooze on its own.

agent_mode_override'autopilot_ok' | 'copilot_only' | 'off' nullable

Per-lead autonomy. null clears the override and falls back to the automation, then the agent default. Fanned out to EVERY live thread of the same primary person. copilot_only takes over: pending autopilot steps are re-parked as awaiting_approval.

Response

update success envelope.

successtrue required
operation'update' required
updated_fieldsstring[] required
previous_valuesobject required
kept_fieldsstring[]

The fields this write did not change because the person's own value stands on them (stamped person); read the item for what landed.

Changes

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