Асинхронный экспорт статистики сообщений
exportMessagesStatistics экспортирует историю сообщений и статистику в CSV-файл на сервере. Используйте его для больших выгрузок или выгрузок по всему аккаунту, с которыми не справляется messages:list.
Когда использовать экспорт вместо messages:list
Anchor link toИспользуйте messages:list для оперативных запросов с постраничной разбивкой за ограниченный период. Используйте exportMessagesStatistics, когда результат может превысить лимит глубокой пагинации messages:list (page × per_page > 100000), или когда целью является получение единого загружаемого файла, а не постраничного JSON. Экспорт не имеет ограничений на date_range или количество строк, поскольку он потоково записывает результат в файл на диске, а не хранит его в одном ответе.
Как работает процесс экспорта
Anchor link to- Вызовите
exportс теми же фильтрами, что и дляmessages:list. Ответ немедленно вернет идентификатор задачиuid, еще до того, как файл будет сгенерирован. - Опрашивайте
statusс этимuid, пока он не вернетSTATUS_SUCCESS(илиSTATUS_FAILED). - Вызовите
resultс тем жеuid, чтобы получить имя сгенерированного файла. - Загрузите файл по имени.
Используйте lastTasks для поиска недавних задач экспорта для приложения и delete для отмены задачи или досрочного удаления ее файла.
Методы
Anchor link toЖизненный цикл экспорта состоит из пяти методов, а также простого эндпоинта для загрузки:
| Метод | Описание |
|---|---|
exportMessagesStatistics/export | Ставит экспорт в очередь и возвращает uid задачи. |
exportMessagesStatistics/status | Проверяет ход выполнения задачи. |
exportMessagesStatistics/result | Возвращает имя сгенерированного файла после завершения задачи. |
exportMessagesStatistics/lastTasks | Выводит список последних задач экспорта для приложения. |
exportMessagesStatistics/delete | Отменяет задачу или удаляет ее файл до истечения срока хранения. |
| Загрузка | Загружает сгенерированный CSV-файл по имени. |
export
Anchor link toСтавит в очередь экспорт истории сообщений и немедленно возвращает идентификатор задачи.
POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/export
Заголовки
Anchor link toДля запроса требуется токен Server API:
| Имя | Обязательный | Описание |
|---|---|---|
Authorization | Да | Токен Server API. Должен быть предоставлен в следующем формате: Authorization: Api <Server Key>. |
Параметры тела запроса
Anchor link toТело запроса принимает следующие поля:
| Имя | Обязательный | Тип | Описание |
|---|---|---|---|
type | Да | String | Должно быть “TASK_TYPE_EXPORT. |
export_messages | Да | Object | Параметры экспорта, описанные ниже. |
export_messages | См. примечание | String | Код приложения Pushwoosh. Обязателен, если app_group_code не установлен. |
export_messages | См. примечание | String | Код группы приложений, экспорт по всем приложениям в группе. Обязателен, если application_code не установлен. |
export_messages | Нет | String | Полнотекстовый поиск по заголовку и содержимому сообщения. |
export_messages | Нет | Object | Фильтры сообщений, описанные ниже. Опустите, чтобы экспортировать всю историю аккаунта. |
export_messages | Нет | Array | Столбцы для включения в CSV, описанные ниже. |
export_messages_v2.filters принимает:
| Имя | Тип | Описание - |
|---|---|---|
statuses | Array | Статусы сообщений для включения. Возможные значения
|
platforms | Array | Коды платформ (числовые, например, 1 для iOS), а не строковые имена платформ, используемые в messages:list. |
sent_date | Object | Отчетный период, отфильтрованный по дате отправки: {"date_from": "YYYY-MM-DD", "date_to": "YYYY-MM-DD"}. |
created_date | Object | Отчетный период, отфильтрованный по дате создания сообщения, в том же формате, что и sent_date. |
created_via | Array | Источник сообщения. Возможные значения
|
segments | Array | Коды фильтров, на которые было отправлено сообщение. |
campaigns | Array | Коды кампаний. В отличие от messages:list, здесь принимается список, а не один код. |
message_id | String (uint64) | Один числовой ID сообщения, в кавычках. В отличие от messages:list, экспорт принимает один ID, а не массив. |
message_code | String | Один код сообщения. |
export_messages_v2.properties выбирает, какие столбцы будет содержать CSV.
Возможные значения
"EXPORT_MESSAGE_PROPERTY_ID""EXPORT_MESSAGE_PROPERTY_TIMESTAMP""EXPORT_MESSAGE_PROPERTY_CONTENT""EXPORT_MESSAGE_PROPERTY_TITLE""EXPORT_MESSAGE_PROPERTY_APPLICATIONS""EXPORT_MESSAGE_PROPERTY_STATUS""EXPORT_MESSAGE_PROPERTY_PLATFORMS""EXPORT_MESSAGE_PROPERTY_SOURCE""EXPORT_MESSAGE_PROPERTY_FILTER""EXPORT_MESSAGE_PROPERTY_SUBSCRIPTION_SEGMENTS""EXPORT_MESSAGE_PROPERTY_SENT""EXPORT_MESSAGE_PROPERTY_OPENED""EXPORT_MESSAGE_PROPERTY_ERRORS""EXPORT_MESSAGE_PROPERTY_RECIPIENTS""EXPORT_MESSAGE_PROPERTY_DELIVERED""EXPORT_MESSAGE_PROPERTY_TOTAL_DELIVERED""EXPORT_MESSAGE_PROPERTY_TOTAL_OPENED""EXPORT_MESSAGE_PROPERTY_TOTAL_CLICKS""EXPORT_MESSAGE_PROPERTY_CLICKS""EXPORT_MESSAGE_PROPERTY_UNSUBSCRIBED"
Пример запроса
Anchor link to{ "type": "TASK_TYPE_EXPORT_MESSAGES_V2", "export_messages_v2": { "application_code": "XXXXX-XXXXX", "filters": { "created_date": { "date_from": "2026-01-01", "date_to": "2026-06-30" }, "statuses": ["MESSAGE_STATUS_DONE"], "platforms": [1, 3] }, "properties": [ "EXPORT_MESSAGE_PROPERTY_ID", "EXPORT_MESSAGE_PROPERTY_TIMESTAMP", "EXPORT_MESSAGE_PROPERTY_STATUS", "EXPORT_MESSAGE_PROPERTY_PLATFORMS", "EXPORT_MESSAGE_PROPERTY_SENT", "EXPORT_MESSAGE_PROPERTY_OPENED" ] }}{ "uid": "177458"}{ "error": "account not found"}status
Anchor link toВозвращает прогресс выполнения задачи экспорта.
POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/status
Параметры тела запроса
Anchor link toПередайте идентификатор задачи, возвращенный export:
| Имя | Обязательный | Тип | Описание |
|---|---|---|---|
uid | Да | String (int64) | Идентификатор задачи из ответа export, например, "177458". |
Пример запроса
Anchor link to{ "uid": "177458"}{ "status": "STATUS_SUCCESS", "progress": 1}status может быть одним из "STATUS_PENDING", "STATUS_SUCCESS" или "STATUS_FAILED". progress — это дробное число от 0 до 1; опрашивайте status, пока он не достигнет "STATUS_SUCCESS", прежде чем вызывать result.
result
Anchor link toВозвращает имя сгенерированного файла после завершения задачи.
POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/result
Параметры тела запроса
Anchor link toПередайте тот же идентификатор задачи, который был возвращен export:
| Имя | Обязательный | Тип | Описание |
|---|---|---|---|
uid | Да | String (int64) | Идентификатор задачи из ответа export, например, "177458". |
Пример запроса
Anchor link to{ "uid": "177458"}{ "export_messages_v2_result": { "file": "Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv" }}Вызов result до того, как status вернет "STATUS_SUCCESS", приведет к пустому результату. Передайте значение file как есть в эндпоинт для загрузки.
lastTasks
Anchor link toВыводит список недавних задач экспорта для приложения, начиная с самых последних.
POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/lastTasks
Параметры тела запроса
Anchor link toКаждый параметр является необязательным фильтром; опустите их все, чтобы вывести список всех задач, к которым имеет доступ токен:
| Имя | Обязательный | Тип | Описание |
|---|---|---|---|
application | Нет | String | Код приложения Pushwoosh. Опустите, чтобы вывести список задач для всех приложений, к которым имеет доступ токен. |
types | Нет | Array | Ограничить по определенным типам задач. Используйте [“TASK_TYPE_EXPORT, чтобы видеть только экспорты сообщений. |
campaign | Нет | String | Фильтровать по коду кампании. |
message_id | Нет | String (uint64) | Фильтровать по одному числовому ID сообщения, в кавычках. |
message_code | Нет | String | Фильтровать по одному коду сообщения. |
limit | Нет | Integer | Максимальное количество возвращаемых задач. |
timestamp_from | Нет | String | Возвращать только задачи, созданные после этой временной метки (RFC 3339). |
Пример запроса
Anchor link to{ "application": "XXXXX-XXXXX", "types": ["TASK_TYPE_EXPORT_MESSAGES_V2"], "limit": 10}{ "tasks": [ { "id": "177458", "timestamp": "2026-08-13T12:00:00Z", "status": "STATUS_SUCCESS", "requested_by_user": "user@example.com", "export_messages_v2": { "application_code": "XXXXX-XXXXX" }, "export_messages_v2_result": { "file": "Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv" } } ]}delete
Anchor link toУдаляет задачу и ее файл до истечения 7-дневного срока хранения.
POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/delete
Параметры тела запроса
Anchor link toПередайте идентификатор задачи, возвращенный export:
| Имя | Обязательный | Тип | Описание |
|---|---|---|---|
uid | Да | String (int64) | Идентификатор задачи из ответа export, например, "177458". |
Пример запроса
Anchor link to{ "uid": "177458"}{}Загрузка
Anchor link toЗагружает CSV-файл, сгенерированный result, по имени.
GET https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/<file>
Заголовки
Anchor link toАутентифицируйтесь так же, как и для других методов, или используйте активную сессию в Control Panel:
| Имя | Обязательный | Описание - |
|---|---|---|
Authorization | Да | Токен Server API, в том же формате, что и для других методов exportMessagesStatistics: Authorization: Api <Server Key> (схема Api нечувствительна к регистру). Запрос без заголовка Authorization и без активной сессии в Control Panel получит ответ 401 Unauthorized. |
Замените <file> точным значением file из ответа result, например:
https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Export_Messages_v2_12345_20260813120000-a1b2c3d4.csvФайл представляет собой CSV, содержащий столбцы, выбранные в properties. Он доступен в течение 7 дней после завершения экспорта, затем задача очистки удаляет его, и URL перестает работать.