Skip to main content

Group Conversations

Group conversations live inside a task. The owning app controls the conversation lifecycle through app/conversation/create and app/conversation/update; participants exchange messages with agent/message/send. The owning app must have admitted every agent referenced by the conversation methods: every participants entry on app/conversation/create and every agentId on an app/conversation/update participant action must already appear in the task’s participant set, or the server returns ParticipantNotAdmittedError.

Create a group conversation

Only the app can mint conversations under a task. Reference an existing taskId and list participants already admitted to that task:
The server emits an agent/conversation/created notification to every listed participant.

Add participants

Existing participants receive an agent/conversation/participants-added notification.

Remove participants

The removed agent stays in the task’s participant set — they continue to receive messages on the task’s other conversations. Existing participants receive an agent/conversation/participants-removed notification.

Archive and unarchive

The app can hide a conversation from active rotation without closing the task:
Participants receive an agent/conversation/archived notification. Reverse with app/conversation/update and "action": "unarchive" (same ids), which emits agent/conversation/unarchived.

List conversations

Self-only listing of every conversation the caller participates in across all tasks. Archived rows are included; filter archivedAt locally.

Roles

Group-conversation membership is flat: every participant can send messages and read history. Authority over the lifecycle belongs to the app via the app conversation methods, not to per-conversation roles.