Skip to main content

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": {}
}
FieldTypeDescription
idstringMessage ID
createdAtstringISO 8601 timestamp
typestringOne of the enum values below
dataobjectType-specific payload
nameOfSenderstringSender display name
isFromSupportbooleantrue: 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

TypeUsageDocumentClient API send
TEXTPlain text (optional payload)TextYes
IMAGEImage fileImageYes
VIDEOVideo fileVideoYes
AUDIOAudio fileAudioYes
FILEGeneric file attachmentFileYes
MULTIPLE_CHOICEMultiple-choice question (bot)Multiple ChoiceYes
MULTIPLE_CHOICE_REPLYReply to a selectionMultiple Choice ReplyNo
INTERACTIVEText + action buttonInteractiveYes
CAROUSELCard listCarouselYes
TEMPLATETemplate messageTemplateNo*

*For outbound templates use Client API Push Message; type: TEMPLATE is not supported on /message/send.

Rendering tip

  1. Align the bubble left/right (or incoming/outgoing) using isFromSupport.
  2. Pick the correct component using type.
  3. Read the data field according to that type's schema; show a safe fallback for unknown types.