xaxumessageAPI
Справочник

Справочник объектов

Поля объектов, которые возвращает API и которые приходят в событиях.

Номер (Account)

ПолеТипОписание
iduuidid номера
tenantIduuidid клиента
channel"whatsapp" | "telegram" | "max"мессенджер
labelstringназвание для себя
idInstancenumberномер инстанса у провайдера (для обращений в поддержку)
widstring | nullадрес самого аккаунта в мессенджере после привязки
statestringсостояние: authorized, notAuthorized, pendingPassword…
stateChangedAt, lastStateCheckAtдатакогда сменилось состояние и когда последний раз проверялось
ingestMode"webhook" | "poll"как шлюз забирает входящие у провайдера
sendIntervalMsintпауза между исходящими, мс
groupsEnabledbooleanприём и отправка в группы и каналы
billingStatus"active" | "grace" | "suspended"статус оплаты
paidUntilдата | nullоплачено до; null — без ограничения (только номера оператора)
graceDaysintдней отсрочки после paidUntil
provisionedVia"partner" | "manual"заказан через API / подключён оператором вручную
settingsSyncedAtдата | nullкогда настройки последний раз переданы провайдеру
createdAtдатакогда создан
capabilitiesobjectчто умеет мессенджер: {feature: "yes" | "unverified" | "no"} (таблица)
Пример
{
  "id": "5b1e9c3a-8f2d-4c71-9a0e-2d6f1b7c4e10",
  "tenantId": "c3d4e5f6-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
  "channel": "whatsapp",
  "label": "Отдел продаж",
  "idInstance": 7103123456,
  "wid": "79991234567@c.us",
  "state": "authorized",
  "stateChangedAt": "2026-10-01T08:12:40.000Z",
  "lastStateCheckAt": "2026-10-10T09:30:00.000Z",
  "ingestMode": "webhook",
  "sendIntervalMs": 1500,
  "groupsEnabled": false,
  "billingStatus": "active",
  "paidUntil": "2026-11-09T23:59:59.999Z",
  "graceDays": 3,
  "provisionedVia": "partner",
  "settingsSyncedAt": "2026-10-01T08:10:02.000Z",
  "createdAt": "2026-10-01T08:09:55.000Z",
  "capabilities": {
    "text": "yes",
    "file_upload": "yes",
    "poll": "yes",
    "forward": "yes",
    "stories": "yes",
    "…": "…"
  }
}

Чат (Chat)

ПолеТипОписание
iduuidid чата
accountIduuidномер, к которому относится чат
externalIdstringадрес чата в мессенджере — его передают в to.chatId
kind"direct" | "group" | "channel" | "unknown"личный чат, группа или канал
titlestring | nullназвание (имя собеседника или группы)
contactNamestring | nullимя контакта из адресной книги
phonestring | nullтелефон собеседника в личном чате (цифры без +); null, если неизвестен или скрыт
avatarUrlstring | nullаватар
lastMessageAtдата | nullвремя последнего сообщения
unreadCountintнепрочитанных входящих
archivedbooleanв архиве
Пример
{
  "id": "9e2f7a1c-3b4d-4e5f-8a6b-7c8d9e0f1a2b",
  "accountId": "5b1e9c3a-8f2d-4c71-9a0e-2d6f1b7c4e10",
  "externalId": "79181234567@c.us",
  "kind": "direct",
  "title": "Анна",
  "contactName": "Анна",
  "phone": "79181234567",
  "avatarUrl": null,
  "lastMessageAt": "2026-10-10T09:28:11.000Z",
  "unreadCount": 2,
  "archived": false
}

Сообщение (Message)

ПолеТипОписание
iduuidid сообщения
accountId, chatIduuidномер и чат
externalIdstring | nullid в мессенджере; у исходящего появляется после отправки
clientIdstring | nullваш ключ операции, если передавали
direction"in" | "out"входящее / исходящее
origin"contact" | "api" | "phone"кто создал: собеседник, ваш API или владелец номера с телефона
kindstringtext, image, video, audio, document, sticker, location, contact, contacts, poll, poll_vote, reaction, buttons, list, template, group_invite, unknown
textstring | nullтекст или подпись
dataobjectданные своего типа: координаты, контакт, варианты и итоги опроса…
quotedExternalIdstring | nullна какое сообщение это ответ (id мессенджера)
sender{id, name, phone}отправитель; phone — только у входящих личных чатов, никогда не номер вашего аккаунта и не номер участника группы
statusstringстатус (ниже)
statusDetailstring | nullпояснение, например причина failed
sentAtдата | nullвремя отправки
editedAt, deletedAtдата | nullкогда отредактировано / удалено
attachmentsAttachment[]файлы сообщения
reactions{actor, emoji}[]реакции
Пример
{
  "id": "0b8e4d2a-6c1f-4a3e-9b7d-5e2f1c0a9d8b",
  "accountId": "5b1e9c3a-8f2d-4c71-9a0e-2d6f1b7c4e10",
  "chatId": "9e2f7a1c-3b4d-4e5f-8a6b-7c8d9e0f1a2b",
  "externalId": "BAE5F4C1D2A3B4C5",
  "clientId": null,
  "direction": "in",
  "origin": "contact",
  "kind": "text",
  "text": "Здравствуйте! Есть свободные номера на выходные?",
  "data": {},
  "quotedExternalId": null,
  "sender": {
    "id": "79181234567@c.us",
    "name": "Анна",
    "phone": "79181234567"
  },
  "status": "received",
  "statusDetail": null,
  "sentAt": "2026-10-10T09:28:11.000Z",
  "editedAt": null,
  "deletedAt": null,
  "attachments": [],
  "reactions": []
}

Статусы сообщения

statusЧто значит
queuedв очереди номера в шлюзе
sendingпередано провайдеру
sentушло в мессенджер (одна галочка)
deliveredдоставлено на телефон получателя (две галочки)
readпрочитано
failedне отправлено; причина — в statusDetail
receivedвходящее сообщение (становится read после «прочитано»)

Статус только растёт: queued → sending → sent → delivered → read. Опоздавшая отметка «доставлено» после «прочитано» статус назад не вернёт; failed может заменить только queued, sending или sent.

Файл (Attachment)

ПолеТипОписание
iduuidid файла
messageIduuid | nullсообщение (у загруженного, но ещё не отправленного — null)
direction"in" | "out"входящий / загруженный вами
kindstringimage, video, audio, document, sticker
fileName, mimeTypestringимя и тип
sizeBytesint | nullразмер
sha256string | nullконтрольная сумма
captionstring | nullподпись
status"pending" | "stored" | "failed" | "expired"скачивается / готов / ошибка / ссылка у провайдера истекла
errorstring | nullпричина ошибки
createdAt, storedAtдатакогда создан и сохранён
contentUrlstring | nullадрес байтов: GET с вашим ключом (когда stored)
Пример
{
  "id": "f1a2b3c4-d5e6-4f70-8a9b-0c1d2e3f4a5b",
  "messageId": "0b8e4d2a-6c1f-4a3e-9b7d-5e2f1c0a9d8b",
  "direction": "in",
  "kind": "image",
  "fileName": "photo.jpg",
  "mimeType": "image/jpeg",
  "sizeBytes": 184213,
  "sha256": "9f86d081884c7d659a2feaa0c55ad015a3bf4f1b2b0b822cd15d6c15b0f00a08",
  "caption": "Вот так выглядит номер",
  "status": "stored",
  "error": null,
  "createdAt": "2026-10-10T09:28:11.000Z",
  "storedAt": "2026-10-10T09:28:12.000Z",
  "contentUrl": "/v1/attachments/f1a2b3c4-d5e6-4f70-8a9b-0c1d2e3f4a5b/content"
}

Сторис (Story)

ПолеТипОписание
iduuidid сторис
accountIduuidномер
externalIdstring | nullid у провайдера
direction"in" | "out"чужая / своя
kind"text" | "media" | "voice"вид
text, caption, backgroundColor, fontstring | nullсодержимое и оформление
attachmentIduuid | nullфайл
sender{id, name}автор входящей сторис
participantsstring[] | nullкому показывается
status, statusDetailstringстатус отправки
postedAt, deletedAtдата | nullкогда опубликована / удалена
views{viewer, status, viewedAt}[]кто посмотрел (после refresh-views)
Пример
{
  "id": "7d6c5b4a-3e2f-4a1b-9c8d-7e6f5a4b3c2d",
  "accountId": "5b1e9c3a-8f2d-4c71-9a0e-2d6f1b7c4e10",
  "externalId": null,
  "direction": "out",
  "kind": "text",
  "text": "Скидки сегодня!",
  "caption": null,
  "backgroundColor": "#228B22",
  "font": "SERIF",
  "attachmentId": null,
  "sender": {
    "id": null,
    "name": null
  },
  "participants": null,
  "status": "queued",
  "statusDetail": null,
  "postedAt": null,
  "deletedAt": null,
  "views": []
}

Счёт (Payment)

ПолеТипОписание
iduuidid счёта
invoiceNumberintномер счёта (для поддержки и листания)
tenantId, accountIduuidклиент и номер
status"pending" | "paid"ждёт оплаты / оплачен
amountMinor, currencyint, stringсумма в копейках и валюта
periods, daysintсколько периодов и дней продления
isTestbooleanтестовый счёт — номер не продлевает
emailstring | nullадрес для чека
descriptionstringназначение платежа
createdAt, paidAtдатасоздан / оплачен
creditedbooleanномер продлён по этому счёту
payUrlstring | nullссылка на оплату (пока счёт не оплачен)
Пример
{
  "id": "2a3b4c5d-6e7f-4a8b-9c0d-1e2f3a4b5c6d",
  "invoiceNumber": 1042,
  "tenantId": "c3d4e5f6-1a2b-4c3d-8e9f-0a1b2c3d4e5f",
  "accountId": "5b1e9c3a-8f2d-4c71-9a0e-2d6f1b7c4e10",
  "status": "pending",
  "amountMinor": 299000,
  "currency": "RUB",
  "periods": 1,
  "days": 30,
  "isTest": false,
  "email": "buh@example.ru",
  "description": "Номер WhatsApp «Отдел продаж», 30 дней",
  "createdAt": "2026-10-10T09:40:00.000Z",
  "paidAt": null,
  "credited": false,
  "note": null,
  "payUrl": "https://auth.robokassa.ru/Merchant/Index.aspx?…"
}

Событие (Event)

ПолеТипОписание
idintномер события, растёт монотонно
typestringтип события
createdAtдатакогда произошло
tenantIduuidклиент (в вебхуке)
accountIduuid | nullномер
dataobjectсодержимое своего типа