Update a conversation
Updates a conversation's properties. Supports partial updates - only provided fields will be updated.
Path Parameters
id- The conversation ID (short ID)
Request Body
All fields are optional. Only provided fields will be updated.
| Field | Type | Description |
|---|---|---|
actingAdminId | string | Admin ID performing the action (for attribution). If not provided, uses bot service user. Must be a member of the organization. |
state | string | Conversation state: "open", "closed", or "snoozed" |
snoozedUntil | string | ISO datetime when to unsnooze (required when state is "snoozed") |
adminAssigneeId | string/null | Admin ID to assign, or null to unassign |
teamAssigneeId | string/null | Team ID to assign, or null to unassign |
title | string | Conversation title |
customAttributes | object | Custom attributes to set on the conversation, keyed by conversation custom attribute ID |
markAsRead | object | Mark conversation as read for specific users |
markAsRead Object
| Field | Type | Description |
|---|---|---|
allAdmins | boolean | If true, marks all admins with existing readReceipts as read |
adminIds | string[] | Array of specific admin IDs to mark as read |
allContacts | boolean | If true, marks all contacts with existing readReceipts as read |
contactIds | string[] | Array of specific contact IDs to mark as read |
Note: Only users with existing read receipts will be updated. Use allAdmins/allContacts OR adminIds/contactIds - the "all" flags take precedence.
Response
Returns the updated conversation object.
Example: Close a Conversation (with attribution)
{
"actingAdminId": "507f1f77bcf86cd799439011",
"state": "closed"
}Example: Close a Conversation (bot user)
{
"state": "closed"
}Example: Snooze a Conversation
{
"state": "snoozed",
"snoozedUntil": "2025-01-20T10:00:00.000Z"
}Example: Assign to an Admin
{
"adminAssigneeId": "507f1f77bcf86cd799439011"
}Example: Update Title and Custom Attributes
{
"title": "Billing Issue - Priority",
"customAttributes": {
"507f1f77bcf86cd799439011": 10,
"507f1f77bcf86cd799439012": true
}
}Example: Mark as Read (All Admins)
{
"markAsRead": {
"allAdmins": true
}
}Example: Mark as Read (All Contacts)
{
"markAsRead": {
"allContacts": true
}
}Example: Mark as Read (Specific IDs)
{
"markAsRead": {
"adminIds": ["507f1f77bcf86cd799439011"],
"contactIds": ["676f0f6765bdaa7d7d760f88"]
}
}Version Availability
This endpoint is only available in API version 2026-01-01.nova and newer.
Body
The admin ID performing this action. Changes will be attributed to this admin. If not provided, changes are attributed to the system bot user. The admin must be a member of the organization.
507f1f77bcf86cd799439011The admin ID to assign the conversation to, or null to unassign.
507f1f77bcf86cd799439011Custom attributes to set on the conversation, keyed by conversation custom attribute ID. Use the custom attribute definitions for your organization to map IDs to display names.
Skip admin notifications (push, activity email and in-app notification) for an assignment change in this request (default: false). Useful for bulk imports.
falseISO datetime when the conversation should be unsnoozed. Required when state is "snoozed". Must be a future date.
2025-01-20T10:00:00.000ZThe state of the conversation. Use "snoozed" with snoozedUntil to snooze.
open, closed, snoozedopenThe team ID to assign the conversation to, or null to unassign.
507f1f77bcf86cd799439012Response
Success
State of AI agent handling for this conversation
active, handed_off_to_human, resolvedactiveISO timestamp when bot state last changed
2025-01-15T10:30:00.000ZID of the brand associated with this conversation
507f1f77bcf86cd799439011Array of conversation parts (messages). Only included when fetching a single conversation by ID.
Custom conversation attribute values expanded with definition metadata. Returned only when include=customAttributeDefinitions is provided.
Custom conversation attributes keyed by custom attribute ID. Only org-defined, non-archived conversation attributes are returned; internal workflow metadata is omitted.
Whether an admin has manually overridden the language for this conversation. When true, automatic language detection is disabled.
falseObject type identifier
conversationconversationISO timestamp when priority was set
2025-01-15T10:30:00.000ZRead receipts indicating how far each participant has read in the conversation. Each receipt maps a user to their last-read conversation part. The tracked position reflects the system read state and may reference parts the user cannot directly view (e.g., a contact's read position may point to an internal admin note). Use these receipts to render read indicators and typing awareness, not to infer content access.
ISO timestamp until which conversation is snoozed
2025-01-16T09:00:00.000ZCurrent state of the conversation
open, closed, snoozedopenISO timestamp when conversation was last updated
2025-01-15T12:30:00.000Z