דלג לתוכן הראשי
Messages come in two variants:
  • Regular messages - the actual conversation: incoming and outgoing texts, media, buttons, lists, and template sends.
  • System messages (systemMessage: true) - routing records describing assignment and status changes. They carry only the fields in the System messages section and have no direction, status, content or reactions.
All message timestamps are epoch milliseconds.
Example message object
{
  "_id": "69062b15962e17ab3033f886",
  "chatChannelInfo": {
    "name": "whatsapp",
    "id": "972521234567",
    "accountId": "972586640430"
  },
  "channelInfo": {
    "id": "wamid.HBgMOTcyNTI3NzYwOTg5FQIAERgS..."
  },
  "parent_chat": "67d29e10d0c2473c648f3c9e",
  "type": "text",
  "text": "איך אפשר עוד לעזור?",
  "direction": "outgoing",
  "agent": "Bot",
  "status": 3,
  "statusHistory": [
    {
      "status": 0,
      "timestamp": 1761574714328
    },
    {
      "status": 1,
      "timestamp": 1761574715000
    },
    {
      "status": 2,
      "timestamp": 1761574715500
    },
    {
      "status": 3,
      "timestamp": 1761574716050
    }
  ],
  "timestamp": 1761574722000,
  "updatedAt": "2025-10-27T14:18:39.153Z",
  "botSessionId": "34c7c30a56278d74dc08d68194722ccc...",
  "metadata": {
    "botMsgInfo": {
      "identifier": "smart-resolve",
      "version": 210,
      "nodeName": "priority",
      "hideSummary": false
    }
  }
}

Identity & routing

FieldTypeDescription
_idstringUnique message ID in Texter
parent_chatstringThe chat this message belongs to
chatChannelInfoobjectWhich channel account / contact this message belongs to: {name, id, accountId}
channelInfo.idstringProvider-side message ID (e.g. WhatsApp wamid...). Use to correlate with provider logs and as context when replying. On system messages this is an internal placeholder with no provider meaning
timestampnumberWhen the message was created (epoch ms)
updatedAtstringLast update (ISO date-time) - changes e.g. when delivery status advances

Content

type selects which content fields are present.
FieldTypeDescription
typestringtext, media, contacts, location, buttons, list, postback, special
textstringBody text. Present on most text, buttons, list and special messages
mediaobject[]Media items - see Media items below. Only when type: "media"
buttonsobject[]Reply buttons sent to the contact: {title, payload}. Only when type: "buttons"
listobjectList picker sent to the contact: {button, sections: [{title, rows: [{title, payload, description?}]}]}. Only when type: "list"
postbackobjectWhich button/list row the contact chose: {payload, title?, description?}. Incoming, only when type: "postback"
contactsobject[]Shared vCard contact cards: name {formatted_name...}, phones[], emails[], urls[], addresses[], org, birthday. Only when type: "contacts"
locationobjectShared location: {latitude, longitude, name?, address?, url?}. Only when type: "location"
specialobjectChannel-specific/structured content (e.g. template sends). Known flags: redacted: true (sensitive contents redacted), deleted: {previousType, timestamp} (contents removed by retention - explains “empty” messages), isEchoMessage: true (sent from another client, not Texter), isHistoryMessage, isStatusMessage, unsupportedByProvider
contextobjectThe message this one replies to. In API responses it is populated into a full Message object; in raw webhook payloads it may be only the provider reference {id}
forwardedbooleanWhether WhatsApp marked the message as forwarded
sensitivebooleanWhether the content is marked sensitive and should be redacted in some views
tmpSendId`stringnumber`Client-generated ID to match a send request to the stored message

Media items

Each entry of the media[] array:
FieldTypeDescription
mediaTypestringimage, video, document, audio, sticker
fileIdstringInternal file ID in Texter storage. Download via Generate Public Media URL
previewIdstringInternal preview/thumbnail file ID
filenamestringOriginal filename from the sender device
contentTypestringMIME type Example: application/pdf
captionstringCaption text. Relevant for image and video
scannedbooleanWhether the file has been scanned for threats
metadataobjectChannel / provider metadata Example: {"frequentlyForwarded":false}
deletedobject{timestamp} - present when the file was removed by scheduled deletion; the fileId no longer resolves
urlstringDeprecated - Use the fileId download flow instead

Delivery & status

FieldTypeDescription
directionstringincoming or outgoing. Regular messages only
statusnumber0 Sent, 1 Accepted, 2 Delivered, 3 Seen, 4 Failed, 5 Channel Failed, 6 Deleted
statusHistoryobject[]Timeline of {status, timestamp} delivery/read states
errorReasonstringWhy the send failed (provider error, throttling, 24h window…). Only present if delivery failed Example: reengagement window closed
reactionsstring[]Current emoji reactions on the message
reactionsHistoryobject[]Reaction timeline: {timestamp, reaction?, removed?}

Bot & automation

FieldTypeDescription
agentstringWho sent the message: "Bot" or an agent UID
botSessionIdstringBot session this message belongs to - filter messages by it in Get Messages of a Chat
metadata.botMsgInfoobjectWhich bot node generated this outgoing message: {identifier, version, nodeName, hideSummary}
metadata.triggeredBotbooleanWhether this incoming message triggered automation/bot logic
hideSummarybooleanWhether this message should be hidden from summaries

Templates & campaigns

FieldTypeDescription
metadata.whatsappTemplateobjectStructured template send data for outgoing template messages: {name, localization, contents}
metadata.bulkSendIdstringBulk / campaign batch ID for this message

Retention & deletion

FieldTypeDescription
scheduledDeletionobjectPlanned deletion by retention rules: `timestamp (ms), type: “full""contents""media”, setManuallyByUid?`
special.deletedobject{previousType, timestamp} - set after contents were removed (the message shell remains)

System messages

Present only when systemMessage: true. System messages additionally carry _id, chatChannelInfo, parent_chat, timestamp, botSessionId and a placeholder channelInfo. They appear in Get Messages of a Chat history, but do not trigger message webhook events.
FieldTypeDescription
systemMessagebooleantrue marks a routing/status record instead of a chat bubble
newChatStatusnumberNew chat status after this routing event (same values as chat status)
agentstringWho performed the action - "Bot" or an agent UID
assignedToAgentstringWhich agent the chat was assigned to at this moment
assignedToDepartmentstringWhich department the chat was assigned to

Deprecated fields

These may still appear in responses but should not be used in new code.
FieldTypeDescription
incomingbooleanDeprecated - Use direction instead
outgoingbooleanDeprecated - Use direction instead
receivednumberDeprecated - Epoch ms. Use timestamp instead
botMsgInfoobjectDeprecated - Top-level copy. Use metadata.botMsgInfo instead
bulkSendIdstringDeprecated - Top-level copy. Use metadata.bulkSendId instead
providerMessageIdstringDeprecated - Use channelInfo.id instead
messageIdstringDeprecated - Use _id instead
templateIdstringDeprecated - Use metadata.whatsappTemplate instead
templateMessagebooleanDeprecated - Use metadata.whatsappTemplate instead
templateMessageDataobjectDeprecated - Use metadata.whatsappTemplate instead
parameters / templateParametersstring[]Deprecated - Flat parameter arrays. Use metadata.whatsappTemplate instead

Message status values

Used by status, statusHistory[].status and the messageStatus webhook field.
ValueMeaning
0Sent - sent from the platform
1Accepted - accepted by the provider (e.g. Meta received it)
2Delivered - delivered to the recipient’s device
3Seen - read/opened by the recipient (blue ticks)
4Failed - failed to deliver (e.g. invalid number)
5Channel Failed - system/channel level failure
6Deleted - message was deleted

Content type values

TypeDirectionContent field
textbothtext
mediabothmedia[] (types: image, video, document, audio, sticker)
contactsbothcontacts[]
locationbothlocation
buttonsoutgoingtext + buttons[]
listoutgoingtext + list
postbackincomingpostback
specialbothspecial
More enums and the ID cheat sheet: Enums & Common Fields.