Перейти к содержанию

GetChatHistory#

Test Postman Apidog

Метод возвращает историю сообщений чата.

Метод возвращает только те сообщения, которые системе отдает MAX.
Глубина выгрузки чатов - до 5000 сообщений за 3 месяца.

Сообщения, полученные или отправленные раньше, чем 3 месяца назад, не будут отображены.
Сообщения, полученные или отправленные раньше, чем 5000 сообщений назад, не будут отображены.

Для метода используются ограничения на частоту запросов в секунду.

Запрос#

Для получения истории сообщений требуется выполнить запрос по адресу:

POST
{{apiUrl}}/waInstance{{idInstance}}/getChatHistory/{{apiTokenInstance}}

Префикс v3 стал необязательным параметром запроса

Для вашего удобства унифицировали формат запросов методов API для всех мессенджеров.
Подробнее о правилах вызова методов читайте в статье Выполнение запросов.

Для получения параметров запроса apiUrl, idInstance и apiTokenInstance обратитесь к разделу Перед началом работы.

Параметры запроса#

Параметр Тип Обязательный Описание
chatId string Да Идентификатор личного или группового чата историю сообщений которого требуется получить
count integer Нет Количество сообщений для получения. Значение по умолчанию 100

Пример тела запроса#

Запрос последних 10 сообщений:

{
    "chatId": "10000000",
    "count": 10
}

Ответ#

Ответ содержит список всех полученных и отправленных сообщений в чате. Сортировка по убыванию даты отправки сообщения.

Поля ответа#

Массив объектов с полями:

Поле Тип Описание
type string Вид сообщения: outgoing - исходящее сообщение; incoming - входящее сообщение
idMessage string Идентификатор входящего сообщения
timestamp integer Время принятия сообщения в UNIX-формате
statusMessage string Статус исходящего сообщения. Присутствует только для type = outgoing. Возможные значения:
sent - отправлено
delivered - доставлено
read - прочитано/просмотрено/прослушано
sendByApi boolean Флаг указывает отправлено сообщение из API или нет. Присутствует только для type = outgoing
typeMessage string Тип сообщения, возможные значения:
textMessage - текстовое сообщение
imageMessage - сообщение с изображением
videoMessage - видео сообщение
documentMessage - сообщение с файлом документа
audioMessage - аудио сообщение
stickerMessage - сообщение со стикером
reactionMessage - сообщение с реакцией
chatId string Идентификатор чата, в котором получено сообщение.
senderName string Имя отправителя сообщения. Присутствует только для type = incoming
senderContactName string Имя отправителя из списка контактов телефонной книги. Присутствует только для type = incoming
isForwarded boolean Флаг указывает является ли сообщение пересланным
forwardingScore integer Количество пересылок сообщения
textMessage string Текст сообщения, если typeMessage=textMessage/extendedTextMessage
downloadUrl string Ссылка на скачивание файла, если typeMessage = imageMessage /videoMessage/documentMessage/audioMessage/stickerMessage
caption string Описание файла, если typeMessage = imageMessage/videoMessage /documentMessage/ audioMessage /stickerMessage
fileName string Название файла, если typeMessage = imageMessage/videoMessage /documentMessage / audioMessage/stickerMessage. Поле заполняется корректно только для typeMessage = documentMessage, в остальных случаях название файла генерируется автоматически
jpegThumbnail string Превью изображения в base64 кодировке, если typeMessage = imageMessage/videoMessage/documentMessage / audioMessage / stickerMessage
mimeType string Тип файла, согласно класификации Media Types, если typeMessage = imageMessage/videoMessage/documentMessage/ audioMessage/stickerMessage
isAnimated boolean Флаг указывает анимирован ли файл, если typeMessage = imageMessage/videoMessage/documentMessage/audioMessage/stickerMessage
extendedTextMessage object Объект с текстовым сообщением (расширенный), если typeMessage = extendedTextMessage
extendedTextMessageData object Объект с реакцией, если typeMessage = reactionMessage
quotedMessage object Объект данных о цитируемом сообщении, если typeMessage = quotedMessage/reactionMessage
deletedMessageId string Идентификатор сообщения которое удалили. Присутствует если сообщение было удалено
editedMessageId string Идентификатор сообщения которое отредактировали. Присутствует если сообщение было отредактировано
isEdited boolean Флаг указывает редактировали ли сообщение
isDeleted boolean Флаг указывает удалили ли сообщение

Поля объекта extendedTextMessage:

Поле Тип Описание
text string Текст ссылки
description string Описание ссылки
title string Заголовок ссылки
jpegThumbnail string Превью изображения в base64 кодировке
isForwarded boolean Флаг указывает является ли сообщение пересланным
forwardingScore integer Количество пересылок сообщения

Поля объекта extendedTextMessageData:

Поле Тип Описание
text string Реакция (эмоджи) на сообщение

Поля объекта quotedMessage:

Поле Тип Описание
stanzaId string ID цитируемого сообщения
participant string ID чата получателя
typeMessage string Тип цитириуемого сообщения

Остальные поля объекта quotedMessage заполняются в зависимости от типа цитируемого сообщения и идентичны полям описанных выше

Пример тела ответа#

[
    {
        "type": "outgoing",
        "idMessage": "1763115112345",
        "timestamp": 1754999812,
        "typeMessage": "extendedTextMessage",
        "chatId": "10000000",
        "textMessage": "Я использую GREEN-API для отправки этого сообщения!",
        "extendedTextMessage": {
            "text": "Я использую GREEN-API для отправки этого сообщения!",
            "description": "",
            "title": "",
            "jpegThumbnail": "",
            "forwardingScore": 0,
            "isForwarded": false
        },
        "statusMessage": "",
        "sendByApi": true,

    },
    {
        "type": "outgoing",
        "idMessage": "1763115112345",
        "timestamp": 1754987080,
        "typeMessage": "extendedTextMessage",
        "chatId": "-69876543210123",
        "textMessage": "Я использую GREEN-API для отправки этого сообщения!",
        "extendedTextMessage": {
            "text": "Я использую GREEN-API для отправки этого сообщения!",
            "description": "",
            "title": "",
            "jpegThumbnail": "",
            "forwardingScore": 0,
            "isForwarded": false
        },
        "statusMessage": "",
        "sendByApi": true,

    },
    {
        "type": "incoming",
        "idMessage": "1763115112345",
        "timestamp": 1754986980,
        "typeMessage": "textMessage",
        "chatId": "10000000",
        "textMessage": "Я использую GREEN-API для отправки этого сообщения!",
        "senderId": "10000000",
        "senderName": "Ходабрыш Пробешёлов",
        "senderContactName": "Ходабрыш Пробешёлов"
    },
    {
        "type": "incoming",
        "idMessage": "1763115112345",
        "timestamp": 1754986980,
        "typeMessage": "textMessage",
        "chatId": "-69876543210123",
        "textMessage": "Я использую GREEN-API для отправки этого сообщения!",
        "senderId": "10000000",
        "senderName": "Ходабрыш Пробешёлов",
        "senderContactName": "Ходабрыш Пробешёлов"
    },
    {
        "type": "incoming",
        "idMessage": "1763115112345",
        "timestamp": 1754986980,
        "typeMessage": "stickerMessage",
        "chatId": "-69876543210123",
        "downloadUrl": "https://media-3100.storage.yandexcloud.net/3100000000/07dde0a-01dc-4dd9-8afb-707cbf610943.png",
        "caption": "",
        "fileName": "07dde0a-01dc-4dd9-8afb-707cbf610943.png",
        "jpegThumbnail": "",
        "isAnimated": true,
        "mimeType": "image/png",
        "forwardingScore": 0,
        "isForwarded": false,
        "senderId": "10000000",
        "senderName": "Ходабрыш Пробешёлов",
        "senderContactName": "Ходабрыш Пробешёлов"
    }
]

Ошибки GetChatHistory#

Перечень общих для всех методов ошибок смотрите в разделе Стандартные ошибки

Код HTTP Идентификатор ошибки Описание
400 Bad Request
Validation failed
Ошибка валидации
400 Bad Request
Validation failed.
Details: 'count' must be a number
Некорректный тип данных для поля count

либо значение поля превышает максимальное безопасное целочисленное значение

Примеры кода#

import requests

url = "{{apiUrl}}/waInstance{{idInstance}}/getChatHistory/{{apiTokenInstance}}"

payload = "{\r\n\t\"chatId\": \"10000000\",\r\n\t\"count\": 100\r\n}"
headers = {
  'Content-Type': 'application/json'
}

response = requests.post(url, json=payload)

print(response.text.encode('utf8'))
curl --location '{{apiUrl}}/waInstance{{idInstance}}/getChatHistory/{{apiTokenInstance}}' \
--header 'Content-Type: application/json' \
--data-raw '{
    "chatId": "10000000",
    "count": 10
}'
var restTemplate = new RestTemplate();
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/getChatHistory/")
    .append({{apiTokenInstance}});

var headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

var jsonBody = "{\"chatId\": \"10000000\",\"count\": 10}";

var requestEntity = new HttpEntity<>(jsonBody, headers);

var response = restTemplate.exchange(requestUrl.toString(), HttpMethod.POST, requestEntity, String.class);
System.out.println(response);
var requestUrl = new StringBuilder();
requestUrl
    .append({{apiUrl}})
    .append("/waInstance").append({{idInstance}})
    .append("/getChatHistory/")
    .append({{apiTokenInstance}});

var response = Unirest.post(requestUrl.toString())
    .header("Content-Type", "application/json")
    .body("{\"chatId\": \"10000000\",\"count\": 10}")
    .asString();

System.out.println(response);
Sub GetChatHistory()
    Dim url As String
    Dim RequestBody As String
    Dim http As Object
    Dim response As String

    ' The apiUrl, idInstance and apiTokenInstance values are available in console, double brackets must be removed
    url = "{{apiUrl}}/waInstance{{idInstance}}/getChatHistory/{{apiTokenInstance}}"

    ' chatId - personal or group chat identifier whose message history you want to receive, count - number of messages to receive, default value 100
    RequestBody = "{""chatId"":""10000000"",""count"":10}"

    Set http = CreateObject("MSXML2.XMLHTTP")

    With http
        .Open "POST", url, False
        .setRequestHeader "Content-Type", "application/json"
        .send RequestBody
    End With

    response = http.responseText

    Debug.Print response

    ' Outputting the answer to the desired cell
    Range("A1").Value = response

    Set http = Nothing
End Sub