Event Reference
Every event Orqestra can send, what triggers it, and what is in its data. The envelope
around data is described in the overview. This is
payload version 2026-09-01.
An event is sent only when something actually changed. Saving a record without changing it, or a provider re-sending the same notification, doesn't produce another event. Payloads are curated snapshots: provider-native fields, credentials, custom contact fields, AI prompts and model output are never included.
All events
Channel events
Sent for the channel instances the endpoint selects, with channel set.
message.received— A customer sent a message.message.sent— An agent, Journey or AI Agent reply was accepted by the channel.message.delivery_updated— An outbound message was delivered, read or failed.message.deleted— An agent deleted a message. Content is not included.message.ad_referral— A customer messaged from a Click-to-WhatsApp ad. Also sent as message.received.chat.created— A new conversation thread opened on a channel.chat.assigned— The assigned agent or team changed, including unassignment.chat.status_changed— Open, pending, resolved or snoozed.chat.escalated— A conversation was flagged for a human.session.started— An agent, Journey or AI Agent session began.session.ended— A session ended for any reason.automation.started— A Journey or AI Agent run began.automation.completed— A Journey or AI Agent run finished.automation.failed— A Journey or AI Agent run stopped on an error.broadcast.queued— A broadcast was queued to send now.broadcast.scheduled— A broadcast was scheduled for later.broadcast.completed— Every recipient was processed.broadcast.cancelled— A broadcast was cancelled before finishing.order.received— A customer placed a catalog order in chat.
Organization events
Not tied to a channel; channel is null.
contact.created— A new contact was added.contact.updated— A contact’s name or identifiers changed.contact.deleted— A contact was deleted. Only the ID is included.contact.merged— Duplicate contacts were merged into one.ticket.created— A ticket was opened.ticket.updated— Status, priority, owner or links changed.ticket.deleted— A ticket was deleted. Only IDs are included.ticket.note_created— A note was added to a ticket.
Plus webhook.test, which you trigger yourself.
Messages
Messages on every channel — WhatsApp, Instagram, Web Chat, Telegram, TikTok Shop and Email — use the same events and the same message object.
message.received
A customer sent a message. Sent for each new inbound message. Messages imported as history are not sent.
Scope: channel.
data: message.
{
"data": {
"message": {
"caption": null,
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:07.000Z",
"deletedAt": null,
"direction": "INBOUND",
"externalId": "wamid.HBgNNjI4MTIzNDU2Nzg5MBUCABIYFDNBQjE2QzY0MUE0NzJGOTg4QkQ5AA==",
"id": "cmf2c7m3s0017msg7docs0009",
"media": null,
"referral": null,
"replyToMessageId": null,
"sessionId": "cmf2c6k1r0015ses7docs0005",
"status": "RECEIVED",
"subject": null,
"text": "Halo, pesanan saya #1042 sudah dikirim belum?",
"type": "text",
"updatedAt": "2026-09-24T02:15:07.000Z"
}
}
}
message.sent
An agent, Journey or AI Agent reply was accepted by the channel. Sent once the channel accepts an outbound message, whoever wrote it — an agent, a Journey, an AI Agent or the API.
Scope: channel.
data: message.
{
"data": {
"message": {
"caption": null,
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:09.000Z",
"deletedAt": null,
"direction": "OUTBOUND",
"externalId": "wamid.HBgNNjI4MTIzNDU2Nzg5MBUCABEYEjRGNkE4QzJBN0UxQjNEOTA1QwA=",
"id": "cmf2c8p4u0019msg7docs0010",
"media": null,
"referral": null,
"replyToMessageId": "cmf2c7m3s0017msg7docs0009",
"sessionId": "cmf2c6k1r0015ses7docs0005",
"status": "SENT",
"subject": null,
"text": "Sudah, kak. Resi JX0099881 — estimasi tiba besok.",
"type": "text",
"updatedAt": "2026-09-24T02:15:09.000Z"
}
}
}
message.delivery_updated
An outbound message was delivered, read or failed. Sent each time an outbound message’s status actually changes; a repeated receipt for the same status is not sent twice. Channels that report receipts: WhatsApp (SENT, DELIVERED, READ, FAILED) and Instagram (READ).
Scope: channel.
data: message; changes — { "previous", "current" } for each changed field among status.
{
"data": {
"changes": {
"status": {
"current": "READ",
"previous": "DELIVERED"
}
},
"message": {
"caption": null,
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:09.000Z",
"deletedAt": null,
"direction": "OUTBOUND",
"externalId": "wamid.HBgNNjI4MTIzNDU2Nzg5MBUCABEYEjRGNkE4QzJBN0UxQjNEOTA1QwA=",
"id": "cmf2c8p4u0019msg7docs0010",
"media": null,
"referral": null,
"replyToMessageId": "cmf2c7m3s0017msg7docs0009",
"sessionId": "cmf2c6k1r0015ses7docs0005",
"status": "READ",
"subject": null,
"text": "Sudah, kak. Resi JX0099881 — estimasi tiba besok.",
"type": "text",
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
message.deleted
An agent deleted a message. Content is not included. Only IDs and the deletion time — the deleted content is not repeated.
Scope: channel.
data: message — id, chatId, contactId, deletedAt.
{
"data": {
"message": {
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"deletedAt": "2026-09-24T02:41:30.000Z",
"id": "cmf2c8p4u0019msg7docs0010"
}
}
}
message.ad_referral
A customer messaged from a Click-to-WhatsApp ad. Also sent as message.received. Sent in addition to message.received for the same message, with referral always filled in. Subscribe to this one alone if you only want ad leads.
Scope: channel.
data: message.
{
"data": {
"message": {
"caption": null,
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:07.000Z",
"deletedAt": null,
"direction": "INBOUND",
"externalId": "wamid.HBgNNjI4MTIzNDU2Nzg5MBUCABIYFDNBQjE2QzY0MUE0NzJGOTg4QkQ5AA==",
"id": "cmf2c7m3s0017msg7docs0009",
"media": null,
"referral": {
"body": "Chat kami untuk cek ongkir ke kotamu.",
"ctwaClid": "ARAkLkA8rmlFeiCktEJQ-QTwRiyYHAFDLMNDBH0CD3qpjd0HR4irJ6LEkR7JwFF4XvnO",
"headline": "Promo ongkir gratis",
"imageUrl": "https://scontent.xx.fbcdn.net/v/t45.1600-4/example.jpg",
"mediaType": "image",
"receivedAt": "2026-09-24T02:15:07.000Z",
"sourceId": "120210000000000001",
"sourceType": "ad",
"sourceUrl": "https://fb.me/3AbCdEfGh",
"thumbnailUrl": null,
"videoUrl": null,
"welcomeMessage": "Halo! Ada yang bisa kami bantu?"
},
"replyToMessageId": null,
"sessionId": "cmf2c6k1r0015ses7docs0005",
"status": "RECEIVED",
"subject": null,
"text": "Halo, pesanan saya #1042 sudah dikirim belum?",
"type": "text",
"updatedAt": "2026-09-24T02:15:07.000Z"
}
}
}
Chats
Changes to a conversation thread. All carry the full chat as it is after the change.
chat.created
A new conversation thread opened on a channel. Sent when a contact’s first conversation on a channel instance is created.
Scope: channel.
data: chat.
{
"data": {
"chat": {
"assigneeId": null,
"channelId": "cmf0q9b2d0003chn7docs0002",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:07.000Z",
"id": "cmf2c5h8p0013cht7docs0004",
"needsEscalation": false,
"status": "OPEN",
"teamId": null,
"updatedAt": "2026-09-24T02:15:07.000Z"
}
}
}
chat.assigned
The assigned agent or team changed, including unassignment. changes lists only what changed — assigneeId, teamId or both. current: null means unassigned.
Scope: channel.
data: chat; changes — { "previous", "current" } for each changed field among assigneeId, teamId.
{
"data": {
"changes": {
"assigneeId": {
"current": "cmf1u2s3r0007usr7docs0006",
"previous": null
},
"teamId": {
"current": "cmf1t4m5a0009tea7docs0007",
"previous": null
}
},
"chat": {
"assigneeId": "cmf1u2s3r0007usr7docs0006",
"channelId": "cmf0q9b2d0003chn7docs0002",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:07.000Z",
"id": "cmf2c5h8p0013cht7docs0004",
"needsEscalation": false,
"status": "OPEN",
"teamId": "cmf1t4m5a0009tea7docs0007",
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
chat.status_changed
Open, pending, resolved or snoozed. Status values: OPEN, PENDING, RESOLVED, SNOOZED.
Scope: channel.
data: chat; changes — { "previous", "current" } for each changed field among status.
{
"data": {
"changes": {
"status": {
"current": "RESOLVED",
"previous": "OPEN"
}
},
"chat": {
"assigneeId": "cmf1u2s3r0007usr7docs0006",
"channelId": "cmf0q9b2d0003chn7docs0002",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:07.000Z",
"id": "cmf2c5h8p0013cht7docs0004",
"needsEscalation": false,
"status": "RESOLVED",
"teamId": "cmf1t4m5a0009tea7docs0007",
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
chat.escalated
A conversation was flagged for a human. Sent when needsEscalation turns true — an AI Agent or Journey handed over, or the customer asked for a person.
Scope: channel.
data: chat.
{
"data": {
"chat": {
"assigneeId": null,
"channelId": "cmf0q9b2d0003chn7docs0002",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:07.000Z",
"id": "cmf2c5h8p0013cht7docs0004",
"needsEscalation": true,
"status": "OPEN",
"teamId": null,
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
Sessions
A session records who or what is handling a conversation. Every agent, Journey and AI Agent session produces a start and an end.
session.started
An agent, Journey or AI Agent session began.
Scope: channel.
data: session.
{
"data": {
"session": {
"agentId": null,
"chatId": "cmf2c5h8p0013cht7docs0004",
"endReason": null,
"endedAt": null,
"id": "cmf2c6k1r0015ses7docs0005",
"sessionType": "ai_bot_v2",
"startedAt": "2026-09-24T02:15:07.000Z"
}
}
}
session.ended
A session ended for any reason. Carries endedAt and endReason.
Scope: channel.
data: session.
{
"data": {
"session": {
"agentId": null,
"chatId": "cmf2c5h8p0013cht7docs0004",
"endReason": "ESCALATED",
"endedAt": "2026-09-24T02:41:30.000Z",
"id": "cmf2c6k1r0015ses7docs0005",
"sessionType": "ai_bot_v2",
"startedAt": "2026-09-24T02:15:07.000Z"
}
}
}
Automation
One event per Journey or AI Agent run, alongside the session events. Every run belongs to a conversation, so these arrive as channel events — tick them under Channel events.
automation.started
A Journey or AI Agent run began.
Scope: channel or organization.
data: automation; automationRun.
{
"data": {
"automation": {
"id": "cmf0p1l2n0005pip7docs0012",
"name": "Order status assistant",
"type": "AI_AGENT"
},
"automationRun": {
"chatId": "cmf2c5h8p0013cht7docs0004",
"completedAt": null,
"contactId": null,
"errorCode": null,
"id": "cmf2c6k1r0015ses7docs0005",
"startedAt": "2026-09-24T02:15:07.000Z",
"status": "STARTED"
}
}
}
automation.completed
A Journey or AI Agent run finished.
Scope: channel or organization.
data: automation; automationRun.
{
"data": {
"automation": {
"id": "cmf0p1l2n0005pip7docs0012",
"name": "Order status assistant",
"type": "AI_AGENT"
},
"automationRun": {
"chatId": "cmf2c5h8p0013cht7docs0004",
"completedAt": "2026-09-24T02:41:30.000Z",
"contactId": null,
"errorCode": null,
"id": "cmf2c6k1r0015ses7docs0005",
"startedAt": "2026-09-24T02:15:07.000Z",
"status": "COMPLETED"
}
}
}
automation.failed
A Journey or AI Agent run stopped on an error. automationRun.errorCode says why. Error messages and prompts are never included.
Scope: channel or organization.
data: automation; automationRun.
{
"data": {
"automation": {
"id": "cmf0p1l2n0005pip7docs0012",
"name": "Order status assistant",
"type": "AI_AGENT"
},
"automationRun": {
"chatId": "cmf2c5h8p0013cht7docs0004",
"completedAt": "2026-09-24T02:41:30.000Z",
"contactId": null,
"errorCode": "LLM_TIMEOUT",
"id": "cmf2c6k1r0015ses7docs0005",
"startedAt": "2026-09-24T02:15:07.000Z",
"status": "FAILED"
}
}
}
Broadcasts
The lifecycle of a broadcast. Individual recipient messages are not sent as events.
broadcast.queued
A broadcast was queued to send now.
Scope: channel.
data: broadcast.
{
"data": {
"broadcast": {
"channelId": "cmf0q9b2d0003chn7docs0002",
"createdAt": "2026-09-24T02:15:07.000Z",
"failureCount": 0,
"id": "cmf4b1r2c0031bct7docs0011",
"name": "Flash sale 25.9",
"sendAt": null,
"status": "QUEUED",
"successCount": 0,
"totalRecipients": 1250,
"updatedAt": "2026-09-24T02:15:07.000Z"
}
}
}
broadcast.scheduled
A broadcast was scheduled for later.
Scope: channel.
data: broadcast.
{
"data": {
"broadcast": {
"channelId": "cmf0q9b2d0003chn7docs0002",
"createdAt": "2026-09-24T02:15:07.000Z",
"failureCount": 0,
"id": "cmf4b1r2c0031bct7docs0011",
"name": "Flash sale 25.9",
"sendAt": "2026-09-25T01:00:00.000Z",
"status": "SCHEDULED",
"successCount": 0,
"totalRecipients": 1250,
"updatedAt": "2026-09-24T02:15:07.000Z"
}
}
}
broadcast.completed
Every recipient was processed. Final counts are in successCount and failureCount.
Scope: channel.
data: broadcast.
{
"data": {
"broadcast": {
"channelId": "cmf0q9b2d0003chn7docs0002",
"createdAt": "2026-09-24T02:15:07.000Z",
"failureCount": 12,
"id": "cmf4b1r2c0031bct7docs0011",
"name": "Flash sale 25.9",
"sendAt": null,
"status": "COMPLETED",
"successCount": 1238,
"totalRecipients": 1250,
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
broadcast.cancelled
A broadcast was cancelled before finishing.
Scope: channel.
data: broadcast.
{
"data": {
"broadcast": {
"channelId": "cmf0q9b2d0003chn7docs0002",
"createdAt": "2026-09-24T02:15:07.000Z",
"failureCount": 0,
"id": "cmf4b1r2c0031bct7docs0011",
"name": "Flash sale 25.9",
"sendAt": null,
"status": "CANCELLED",
"successCount": 0,
"totalRecipients": 1250,
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
Orders
Catalog orders placed inside a chat.
order.received
A customer placed a catalog order in chat.
Scope: channel.
data: order.
{
"data": {
"order": {
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:15:07.000Z",
"currency": "IDR",
"id": "cmf5o2r3d0035ord7docs0015",
"itemCount": 2,
"status": "PENDING",
"total": "349000"
}
}
}
Contacts
Organization events. They arrive with channel: null and ignore the endpoint’s channel selection.
contact.created
A new contact was added.
Scope: organization.
data: contact.
{
"data": {
"contact": {
"createdAt": "2026-09-24T02:15:07.000Z",
"displayName": "Budi Santoso",
"id": "cmf2c4t7n0011cnt7docs0003",
"identifiers": [
{
"type": "WHATSAPP",
"value": "6281234567890"
}
],
"updatedAt": "2026-09-24T02:15:07.000Z"
}
}
}
contact.updated
A contact’s name or identifiers changed. Sent when the display name or identifiers change. changes lists only what changed.
Scope: organization.
data: contact; changes — { "previous", "current" } for each changed field among displayName, identifiers.
{
"data": {
"changes": {
"displayName": {
"current": "Budi S. (Jakarta)",
"previous": "Budi Santoso"
}
},
"contact": {
"createdAt": "2026-09-24T02:15:07.000Z",
"displayName": "Budi S. (Jakarta)",
"id": "cmf2c4t7n0011cnt7docs0003",
"identifiers": [
{
"type": "WHATSAPP",
"value": "6281234567890"
}
],
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
contact.deleted
A contact was deleted. Only the ID is included. A tombstone: the ID and the deletion time.
Scope: organization.
data: contact — id, deletedAt.
{
"data": {
"contact": {
"deletedAt": "2026-09-24T02:41:30.000Z",
"id": "cmf2c4t7n0011cnt7docs0003"
}
}
}
contact.merged
Duplicate contacts were merged into one. sourceContactIds were merged into contact and no longer exist. Repoint anything you stored under those IDs.
Scope: organization.
data: sourceContactIds — array of contact IDs; contact.
{
"data": {
"contact": {
"createdAt": "2026-09-24T02:15:07.000Z",
"displayName": "Budi Santoso",
"id": "cmf2c4t7n0011cnt7docs0003",
"identifiers": [
{
"type": "WHATSAPP",
"value": "6281234567890"
},
{
"type": "INSTAGRAM",
"value": "17841400000000001"
}
],
"updatedAt": "2026-09-24T02:41:30.000Z"
},
"sourceContactIds": [
"cmf2c9q5v0023cnt7docs0013"
]
}
}
Tickets
Organization events. They arrive with channel: null and ignore the endpoint’s channel selection.
ticket.created
A ticket was opened.
Scope: organization.
data: ticket.
{
"data": {
"ticket": {
"assigneeId": "cmf1u2s3r0007usr7docs0006",
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:41:30.000Z",
"id": "cmf3t6k9t0021tkt7docs0008",
"priority": "HIGH",
"resolvedAt": null,
"status": "OPEN",
"teamId": "cmf1t4m5a0009tea7docs0007",
"ticketNumber": 1042,
"title": "Paket #1042 belum sampai",
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
ticket.updated
Status, priority, owner or links changed. Sent when the title, status, priority, assignee, team, linked contact or chat, or resolution time changes. changes lists only what changed.
Scope: organization.
data: ticket; changes — { "previous", "current" } for each changed field among title, status, priority, assigneeId, teamId, contactId, chatId, resolvedAt.
{
"data": {
"changes": {
"resolvedAt": {
"current": "2026-09-24T02:41:30.000Z",
"previous": null
},
"status": {
"current": "RESOLVED",
"previous": "OPEN"
}
},
"ticket": {
"assigneeId": "cmf1u2s3r0007usr7docs0006",
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"createdAt": "2026-09-24T02:41:30.000Z",
"id": "cmf3t6k9t0021tkt7docs0008",
"priority": "HIGH",
"resolvedAt": "2026-09-24T02:41:30.000Z",
"status": "RESOLVED",
"teamId": "cmf1t4m5a0009tea7docs0007",
"ticketNumber": 1042,
"title": "Paket #1042 belum sampai",
"updatedAt": "2026-09-24T02:41:30.000Z"
}
}
}
ticket.deleted
A ticket was deleted. Only IDs are included. A tombstone: IDs and the deletion time.
Scope: organization.
data: ticket — id, ticketNumber, contactId, chatId, deletedAt.
{
"data": {
"ticket": {
"chatId": "cmf2c5h8p0013cht7docs0004",
"contactId": "cmf2c4t7n0011cnt7docs0003",
"deletedAt": "2026-09-24T02:41:30.000Z",
"id": "cmf3t6k9t0021tkt7docs0008",
"ticketNumber": 1042
}
}
}
ticket.note_created
A note was added to a ticket.
Scope: organization.
data: ticketNote.
{
"data": {
"ticketNote": {
"authorId": "cmf1u2s3r0007usr7docs0006",
"body": "Kurir konfirmasi paket tertahan di hub Cakung.",
"createdAt": "2026-09-24T02:41:30.000Z",
"id": "cmf3n7t1e0025nte7docs0014",
"ticketId": "cmf3t6k9t0021tkt7docs0008"
}
}
}
webhook.test
Sent only when you click Send test. It doesn't describe a real change, and you can't
subscribe to it. It uses the same headers, signature and envelope as every other event. Its
channel is the first channel the endpoint selects, or null if none. Answer it
2xx like any other event. Don't act on it.
{
"data": {
"test": true
}
}
Objects
The resources inside data. A field whose type ends in | null is sent as
null when there is no value. Timestamps are UTC, in ISO 8601 format.
message
One message in a conversation, inbound or outbound, on any channel.
idstring
Orqestra message ID.externalIdstring | null
The channel’s own ID for this message — the WhatsAppwamid, Instagrammid, and so on. Use it to correlate with provider logs.chatIdstring
The conversation this message belongs to.contactIdstring
The customer.sessionIdstring | null
The agent, Journey or AI Agent session that was active when the message was stored.replyToMessageIdstring | null
The Orqestra message this one quotes or replies to.directionstringINBOUND(from the customer) orOUTBOUND(from you).typestring
Content type as the channel reports it, e.g.text,image,document,interactive.textstring | null
Message text.captionstring | null
Caption on a media message.subjectstring | null
Email subject. Email channel only.statusstring
Latest delivery state:RECEIVEDfor inbound;SENT,DELIVERED,READorFAILEDfor outbound.mediaobject | null
Attachment metadata —id,mimeType,sizeBytes,fileName. The file itself is not included; fetch it through the API.referralobject | null
The Click-to-WhatsApp ad the customer came from, ornull. See referral.createdAttimestamp
When the message was stored.updatedAttimestamp
Last change, such as a delivery status update.deletedAttimestamp | null
When an agent deleted it.
message.referral
Present on the first message a customer sends from a Click-to-WhatsApp ad. Meta’s raw referral object is never forwarded — only these fields.
sourceTypestring | nulladorpost.sourceIdstring | null
Meta ad or post ID.sourceUrlstring | null
Link to the ad or post.headlinestring | null
Ad headline.bodystring | null
Ad body text.mediaTypestring | nullimageorvideo.imageUrlstring | null
Ad image URL (hosted by Meta; may expire).videoUrlstring | null
Ad video URL (hosted by Meta; may expire).thumbnailUrlstring | null
Video thumbnail URL.ctwaClidstring | null
Click ID for the Conversions API. Absent for ads shown in WhatsApp Status — test forreferral, not for this field, to decide whether a lead came from an ad.welcomeMessagestring | null
The ad’s pre-filled welcome message.receivedAttimestamp
When the referral arrived.
chat
A conversation thread with one contact on one channel instance.
idstring
Chat ID.contactIdstring
The customer.channelIdstring
The channel instance (a specific WhatsApp number, Instagram account, …).statusstringOPEN,PENDING,RESOLVEDorSNOOZED.assigneeIdstring | null
Assigned agent (user ID), ornull.teamIdstring | null
Owning team, ornull.needsEscalationbooleantruewhile the chat is waiting for a human.createdAttimestamp
When the chat was created.updatedAttimestamp
When the chat last changed.
contact
A customer. Custom contact fields are not included in this API version — read them through the API.
idstring
Contact ID.displayNamestring | null
The name your team set, or else the profile name from the channel.identifiersarray
How the contact is reached, as{ "type", "value" }pairs.typeis one ofWHATSAPP,INSTAGRAM,WEBCHAT,TELEGRAM,TIKTOK,EMAIL;valueis the phone number, account ID or email address.createdAttimestamp
When the contact was created.updatedAttimestamp
When the contact last changed.
ticket
A ticket: an issue tracked beyond a single conversation.
idstring
Ticket ID.ticketNumbernumber
The human-readable ticket number shown in the dashboard.titlestring
Ticket title.statusstringOPEN,IN_PROGRESS,RESOLVEDorCLOSED.prioritystringLOW,MEDIUM,HIGHorURGENT.contactIdstring | null
Linked contact.chatIdstring | null
Linked conversation.assigneeIdstring | null
Assigned agent.teamIdstring | null
Owning team.resolvedAttimestamp | null
When the ticket was resolved.createdAttimestamp
When the ticket was created.updatedAttimestamp
When the ticket last changed.
ticketNote
An internal note on a ticket. Notes are never shown to the customer.
idstring
Note ID.ticketIdstring
The ticket.authorIdstring | null
The user who wrote it.bodystring
Note text.createdAttimestamp
When the note was added.
session
Who or what is handling a conversation: a human agent, a Journey or an AI Agent. A chat has many sessions over its life.
idstring
Session ID.chatIdstring
The conversation.sessionTypestringagent(human),flow(Journey),ai_bot_v2(AI Agent) orcoexistence(replies sent from the WhatsApp Business app).agentIdstring | null
The agent, foragentsessions.startedAttimestamp
When the session started.endedAttimestamp | null
When it ended;nullwhile active.endReasonstring | null
Why it ended, e.g.MANUAL,TIMEOUT,REASSIGNED,ESCALATED,FLOW_COMPLETE.
broadcast
A template message sent to many contacts.
idstring
Broadcast ID.channelIdstring
The channel instance it sends from.namestring
Broadcast name.statusstringSCHEDULED,QUEUED,PROCESSING,COMPLETED,PARTIAL,FAILEDorCANCELLED.totalRecipientsnumber
Recipients targeted.successCountnumber
Sent successfully so far.failureCountnumber
Failed so far.sendAttimestamp | null
Scheduled send time, for scheduled broadcasts.createdAttimestamp
When the broadcast was created.updatedAttimestamp
When it last changed.
order
An order a customer placed from your catalog inside a chat.
idstring
Order ID.chatIdstring
The conversation it was placed in.contactIdstring
The customer.currencystring
ISO 4217 currency code, e.g.IDR.totalstring
Order total as a decimal string, to avoid floating-point rounding.itemCountnumber
Total quantity across line items.statusstring
Orqestra’s processing state for the order, e.g.PENDING.createdAttimestamp
When the order arrived.
automation
The Journey or AI Agent that ran.
idstring
Journey or AI Agent ID.typestringJOURNEYorAI_AGENT.namestring
Its name in the builder.
automationRun
One execution of that automation. Prompts, model output and runtime variables are never included.
idstring
Run ID — the same value as thesession.idit runs in.chatIdstring | null
The conversation.contactIdstring | null
The customer, when known. Currentlynull; usechatId.statusstringSTARTED,COMPLETEDorFAILED.startedAttimestamp
When the run started.completedAttimestamp | null
When it finished.errorCodestring | null
A short machine-readable reason onautomation.failed.
Versioning
Each endpoint is pinned to a payload version, shown in every event as apiVersion.
Within a version, Orqestra only adds: new fields, new event types (which you must opt into),
and new values for fields that list examples. Removing, renaming or retyping a field, or changing what
one means, only happens under a new version date.