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

Асинхронный экспорт статистики сообщений

exportMessagesStatistics экспортирует историю сообщений и статистику в CSV-файл на сервере. Используйте его для больших выгрузок или выгрузок по всему аккаунту, с которыми не справляется messages:list.

Когда использовать экспорт вместо messages:list

Anchor link to

Используйте messages:list для оперативных запросов с постраничной разбивкой за ограниченный период. Используйте exportMessagesStatistics, когда результат может превысить лимит глубокой пагинации messages:list (page × per_page > 100000), или когда целью является получение единого загружаемого файла, а не постраничного JSON. Экспорт не имеет ограничений на date_range или количество строк, поскольку он потоково записывает результат в файл на диске, а не хранит его в одном ответе.

Как работает процесс экспорта

Anchor link to
  1. Вызовите export с теми же фильтрами, что и для messages:list. Ответ немедленно вернет идентификатор задачи uid, еще до того, как файл будет сгенерирован.
  2. Опрашивайте status с этим uid, пока он не вернет STATUS_SUCCESS (или STATUS_FAILED).
  3. Вызовите result с тем же uid, чтобы получить имя сгенерированного файла.
  4. Загрузите файл по имени.

Используйте lastTasks для поиска недавних задач экспорта для приложения и delete для отмены задачи или досрочного удаления ее файла.

Методы

Anchor link to

Жизненный цикл экспорта состоит из пяти методов, а также простого эндпоинта для загрузки:

МетодОписание
exportMessagesStatistics/exportСтавит экспорт в очередь и возвращает uid задачи.
exportMessagesStatistics/statusПроверяет ход выполнения задачи.
exportMessagesStatistics/resultВозвращает имя сгенерированного файла после завершения задачи.
exportMessagesStatistics/lastTasksВыводит список последних задач экспорта для приложения.
exportMessagesStatistics/deleteОтменяет задачу или удаляет ее файл до истечения срока хранения.
ЗагрузкаЗагружает сгенерированный CSV-файл по имени.

Ставит в очередь экспорт истории сообщений и немедленно возвращает идентификатор задачи.

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_MESSAGES_V2”.
export_messages_v2ДаObjectПараметры экспорта, описанные ниже.
export_messages_v2.application_codeСм. примечаниеStringКод приложения Pushwoosh. Обязателен, если app_group_code не установлен.
export_messages_v2.app_group_codeСм. примечаниеStringКод группы приложений, экспорт по всем приложениям в группе. Обязателен, если application_code не установлен.
export_messages_v2.searchНетStringПолнотекстовый поиск по заголовку и содержимому сообщения.
export_messages_v2.filtersНетObjectФильтры сообщений, описанные ниже. Опустите, чтобы экспортировать всю историю аккаунта.
export_messages_v2.propertiesНетArrayСтолбцы для включения в CSV, описанные ниже.

export_messages_v2.filters принимает:

Имя
ТипОписание -
statusesArrayСтатусы сообщений для включения.
Возможные значения
  • ”MESSAGE_STATUS_CANCELED"
  • "MESSAGE_STATUS_CREATING"
  • "MESSAGE_STATUS_DONE"
  • "MESSAGE_STATUS_FAIL"
  • "MESSAGE_STATUS_PENDING"
  • "MESSAGE_STATUS_PROCESSING"
  • "MESSAGE_STATUS_WAITING”
platformsArrayКоды платформ (числовые, например, 1 для iOS), а не строковые имена платформ, используемые в messages:list.
sent_dateObjectОтчетный период, отфильтрованный по дате отправки: {"date_from": "YYYY-MM-DD", "date_to": "YYYY-MM-DD"}.
created_dateObjectОтчетный период, отфильтрованный по дате создания сообщения, в том же формате, что и sent_date.
created_viaArrayИсточник сообщения.
Возможные значения
  • ”AB_TEST"
  • "API"
  • "AUTO_PUSH"
  • "CP"
  • "CSV"
  • "CUSTOMER_JOURNEY"
  • "EMAIL_API"
  • "EMAIL_CP"
  • "GEO_ZONE"
  • "PUSH_ON_EVENT"
  • "RSS"
  • "SYSTEM”
segmentsArrayКоды фильтров, на которые было отправлено сообщение.
campaignsArrayКоды кампаний. В отличие от messages:list, здесь принимается список, а не один код.
message_idString (uint64)Один числовой ID сообщения, в кавычках. В отличие от messages:list, экспорт принимает один ID, а не массив.
message_codeStringОдин код сообщения.

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"
}

Возвращает прогресс выполнения задачи экспорта.

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.

Возвращает имя сгенерированного файла после завершения задачи.

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 как есть в эндпоинт для загрузки.

Выводит список недавних задач экспорта для приложения, начиная с самых последних.

POST https://api.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/lastTasks

Параметры тела запроса
Anchor link to

Каждый параметр является необязательным фильтром; опустите их все, чтобы вывести список всех задач, к которым имеет доступ токен:

ИмяОбязательныйТипОписание
applicationНетStringКод приложения Pushwoosh. Опустите, чтобы вывести список задач для всех приложений, к которым имеет доступ токен.
typesНетArrayОграничить по определенным типам задач. Используйте [“TASK_TYPE_EXPORT_MESSAGES_V2”], чтобы видеть только экспорты сообщений.
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"
}
}
]
}

Удаляет задачу и ее файл до истечения 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 перестает работать.