Skip to main content
PATCH
/
api
/
conversations
/
{id}
Update a conversation
curl --request PATCH \
  --url https://app.puffle.ai/api/conversations/{id} \
  --header 'Authorization: Bearer <token>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "status": "active",
  "unread_count": 4503599627370495
}
'
{
  "conversation": {
    "id": "f11e8a2c-1234-4567-89ab-cdef01234567",
    "user_id": "11111111-1111-1111-1111-111111111111",
    "account_id": "aaaa1111-1111-1111-1111-111111111111",
    "channel": "linkedin",
    "status": "archived",
    "external_id": "unipile_chat_abc123",
    "participant_name": "Jane Doe",
    "participant_email": null,
    "participant_linkedin_url": "https://linkedin.com/in/jane",
    "last_message_at": "2026-04-22T09:12:00Z",
    "unread_count": 0,
    "created_at": "2026-04-20T15:00:00Z",
    "updated_at": "2026-04-22T10:00:00Z"
  }
}

Overview

Archive/un-archive a thread or override its unread counter. Ownership is enforced — updating a conversation that isn’t owned by the caller returns 404 (same as a missing id).
This operation shares the URL path /api/conversations/{id} with other verbs. See the sibling page for related operations on the same resource.

Authorizations

Authorization
string
header
required

Bearer authentication header of the form Bearer <token>, where <token> is your auth token.

Path Parameters

id
string<uuid>
required

Conversation UUID. Must be owned by the authenticated user — other callers get 404.

Pattern: ^([0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[1-8][0-9a-fA-F]{3}-[89abAB][0-9a-fA-F]{3}-[0-9a-fA-F]{12}|00000000-0000-0000-0000-000000000000|ffffffff-ffff-ffff-ffff-ffffffffffff)$

Body

application/json

At least one valid field (status or unread_count) must be present. An empty or all-invalid body returns 400.

status
enum<string>

Archive or un-archive the thread. Only active and archived are accepted; other values are silently dropped.

Available options:
active,
archived
unread_count
integer

Override the unread counter directly. Most callers don't need this — opening the conversation via getConversation already resets it to 0.

Required range: 0 <= x <= 9007199254740991

Response

Conversation updated.

conversation
object
required

A single inbox thread — a conversation between one sender account and one prospect on one channel. Conversations are created by inbound webhooks (Unipile message_received, AgentMail message.received) or when the user sends a reply via sendConversationMessage.