Conversations
Conversations represent the interactions between your agents and your customers. Every conversation holds the complete history of messages exchanged. They include threads from every channel: WhatsApp, Instagram, Facebook, and chats created by the Chat API .
Available endpoints
| Method | Endpoint | Description |
|---|---|---|
POST | /v1/search/conversations | Search conversations by text, meaning, and advanced filters |
GET | /v1/conversations/{id} | Get a specific conversation |
GET | /v1/conversations | List every conversation |
PATCH | /v1/conversations/{id} | Update the owners and status of a conversation |
How IDs work
Every conversation exposes three identifiers with distinct roles:
| Field | What it identifies |
|---|---|
id | Unique, canonical document ID of the conversation. Use it in GET /v1/conversations/{id} and PATCH /v1/conversations/{id} to operate on a specific thread. |
conversationId | Chat thread ID. In the Chat API, each new conversation gets a distinct chat_<uuid>. It does not identify the client. |
clientId | ID of the attributed client. The same client can have several conversationId values and conversations across channels or agents. |
To get every conversation of a client across all their channels, use GET /v1/clients/{clientId}/conversations .
Statuses and closing conversations
The status field describes the operational stage (initiated, active, finished, spam, or expired).
Expiring a conversation is a form of closing (isFinished): the final status can end up as finished or expired depending on whether the customer ever replied. On external channels (WhatsApp, Instagram, and Messenger/Facebook) expired is terminal; internal Platica chats can be reopened, either with a PATCH to status: "active" or automatically when they receive a new message through the Chat API .
canSendDirectMessage can only be false on WhatsApp, Instagram, and Messenger/Facebook. It is
calculated from the latest user message according to the channel window. It is always true for
internal Platica chats.