Message Types
Messages on the platform share a common type + data structure. The same schemas apply to the Widget API (history, realtime) and the Client API (send message).
Shared top-level structure
In Widget API history / Socket.IO records, a message looks like this:
{
"id": "97b56d6f-41d9-4037-ba2f-4d716ee284e0",
"createdAt": "2026-08-03T14:53:05.874Z",
"type": "TEXT",
"nameOfSender": "Jane Doe",
"isFromSupport": false,
"data": {}
}
| Field | Type | Description |
|---|---|---|
id | string | Message ID |
createdAt | string | ISO 8601 timestamp |
type | string | One of the enum values below |
data | object | Type-specific payload |
nameOfSender | string | Sender display name |
isFromSupport | boolean | true: bot / agent · false: visitor |
In Client API POST /message/send, only type and data are sent (with chatId); the other top-level fields are produced by the server.
Supported types
| Type | Usage | Document | Client API send |
|---|---|---|---|
TEXT | Plain text (optional payload) | Text | Yes |
IMAGE | Image file | Image | Yes |
VIDEO | Video file | Video | Yes |
AUDIO | Audio file | Audio | Yes |
FILE | Generic file attachment | File | Yes |
MULTIPLE_CHOICE | Multiple-choice question (bot) | Multiple Choice | Yes |
MULTIPLE_CHOICE_REPLY | Reply to a selection | Multiple Choice Reply | No |
INTERACTIVE | Text + action button | Interactive | Yes |
CAROUSEL | Card list | Carousel | Yes |
TEMPLATE | Template message | Template | No* |
*For outbound templates use Client API Push Message; type: TEMPLATE is not supported on /message/send.
Rendering tip
- Align the bubble left/right (or incoming/outgoing) using
isFromSupport. - Pick the correct component using
type. - Read the
datafield according to that type's schema; show a safe fallback for unknown types.