MelioraAPI EN
Ранний доступ. Ключи выдаются по запросу. Как получить ключ

Сохраненные сообщения переписки аккаунта с лидом: исходящие шаги цепочки, ручные сообщения и ответы.

#Объект Message

Сообщение из сохраненной переписки с лидом. Архив может быть неполным: см. meta.completeness.

Поля

  • objectstring
    Тип объекта, всегда message.
  • idstring
    Непрозрачный устойчивый идентификатор сообщения. Не разбирайте его формат.
  • directionstring
    outbound: от аккаунта к лиду; inbound: от лида. Значения: outbound inbound
  • authorstring
    campaign: шаг цепочки; manager: ручное сообщение; lead: ответ лида; unknown: не определено. Значения: campaign manager lead unknown
  • sent_atstring (date-time) или null
    Когда сообщение отправлено или получено. null, если неизвестно.
  • statestring
    sent: отправка подтверждена; received: входящее сохранено; unknown: исход не подтвержден. Значения: sent received unknown
  • Вид вложения. Файлы и ссылки на них не выдаются. Значения: none photo video voice audio document sticker animation video_note contact location poll other unknown
  • textstring или null
    Сохраненный текст, до 4000 знаков. null, если текст недоступен. До 4000 знаков.
  • text_truncatedboolean или null
    true: текст сокращен; false: текст полный; null: полнота неизвестна.
  • true, если текст не выдается. Причина в text_unavailable_reason.
  • text_unavailable_reasonstring или null
    not_saved: текст не сохранен; ownership_unproven: принадлежность переписке не доказана; source_conflict: источники расходятся; purged: текст удален по сроку хранения. Значения: not_saved ownership_unproven source_conflict purged
Message
{
  "object": "message",
  "id": "m_6b2e9f403a7c4d158e921c5a7f3b9d08",
  "direction": "outbound",
  "author": "campaign",
  "sent_at": "2026-10-26T07:30:00.000Z",
  "state": "sent",
  "media_kind": "none",
  "text": "Добрый день, Анна! Пишу из Примера: подскажите, кто у вас отвечает за аутрич?",
  "text_truncated": false,
  "text_unavailable": false,
  "text_unavailable_reason": null
}

#Переписка с лидом

GET/v1/leads/{id}/messages

Сохраненные сообщения переписки с лидом, от ранних к поздним. Нужны право messages:read и включенный у ключа «Текст сообщений». Архив может быть неполным: смотрите meta.completeness.

Право
messages:read и «Текст сообщений» у ключа
Вес запроса
3

Параметры

  • idstring (uuid), в путиобязательный
    Идентификатор лида.
  • limitinteger, в строке запросанеобязательный
    Сколько объектов вернуть на странице. От 1 до 100. По умолчанию 50.
  • cursorstring, в строке запросанеобязательный
    Значение next_cursor из предыдущего ответа. Остальные фильтры должны совпадать с первым запросом.

Ответ

Список: object, data (массив объектов Message), has_more, next_cursor, meta. Подробнее в руководстве Пагинация.

Поле meta

  • Насколько полон сохраненный архив переписки с лидом. Сейчас полнота не вычисляется: overall и inbound приходят как partial, outbound как unknown.
    Вложенные поля
    • overallstring
      Общая полнота: complete, partial или unknown. Значения: complete partial unknown
    • inboundstring
      Полнота входящих сообщений. Значения: complete partial unknown
    • outboundstring
      Полнота исходящих сообщений. Значения: complete partial unknown
    • available_fromstring (date-time) или null
      Начало периода, за который есть данные. null, если неизвестно.
    • available_tostring (date-time) или null
      Конец периода, за который есть данные. null, если неизвестно.
    • observed_atstring (date-time)
      Время чтения данных сервером.

Особые ошибки

  • cursor_mismatch: Курсор поврежден, выдан для другого маршрута или фильтров, либо права и охват ключа изменились.
  • scope_required: Ключ не имеет права на это чтение. Для текстов нужен также включенный «Текст сообщений».
  • not_found: Объект не найден или находится вне охвата ключа. Неизвестный путь тоже дает 404.
  • cursor_expired: Срок курсора истек: 15 минут для списков, 30 суток для ленты событий.

Общие ошибки описаны в руководстве Ошибки.

Запрос
curl https://api.melioralab.io/v1/leads/5a7c3e92-1f4b-4d68-9c2e-7b0a6d4f8e31/messages \
  -H "Authorization: Bearer $MELIORA_API_KEY"
Ответ
{
  "object": "list",
  "data": [
    {
      "object": "message",
      "id": "m_6b2e9f403a7c4d158e921c5a7f3b9d08",
      "direction": "outbound",
      "author": "campaign",
      "sent_at": "2026-10-26T07:30:00.000Z",
      "state": "sent",
      "media_kind": "none",
      "text": "Добрый день, Анна! Пишу из Примера: подскажите, кто у вас отвечает за аутрич?",
      "text_truncated": false,
      "text_unavailable": false,
      "text_unavailable_reason": null
    },
    {
      "object": "message",
      "id": "m_c7a1d3e59b2f4a68b4d05e8f2a6c1b97",
      "direction": "inbound",
      "author": "lead",
      "sent_at": "2026-10-26T09:12:00.000Z",
      "state": "received",
      "media_kind": "none",
      "text": "Здравствуйте! Это я, давайте созвонимся завтра.",
      "text_truncated": null,
      "text_unavailable": false,
      "text_unavailable_reason": null
    },
    {
      "object": "message",
      "id": "m_a3f8c6e27d1b4e949c058b2d4f7a6e13",
      "direction": "inbound",
      "author": "lead",
      "sent_at": "2026-10-26T09:13:30.000Z",
      "state": "received",
      "media_kind": "photo",
      "text": null,
      "text_truncated": null,
      "text_unavailable": true,
      "text_unavailable_reason": "not_saved"
    }
  ],
  "has_more": false,
  "next_cursor": null,
  "meta": {
    "completeness": {
      "overall": "partial",
      "inbound": "partial",
      "outbound": "unknown",
      "available_from": "2026-10-26T07:30:00.000Z",
      "available_to": "2026-10-27T09:15:42.000Z",
      "observed_at": "2026-10-27T09:15:42.000Z"
    }
  }
}