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

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

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, чтобы получить сгенерированный file и готовый к использованию file_url.
  4. Загрузите файл. Используйте file_url как есть, или обратитесь к result для построения URL из file, если он вернулся пустым.

Используйте 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 token:

ИмяОбязательныйОписание
AuthorizationДаServer API token. Должен быть предоставлен в следующем формате: 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",
"file_url": "https://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv"
}
}

Вызов result до того, как status вернет "STATUS_SUCCESS", вернет пустой результат. file_url — это готовая к использованию ссылка на конечную точку загрузки в правильном дата-центре для аккаунта — используйте ее как есть, вместо того чтобы самостоятельно формировать URL из file. file_url будет пустым, если для дата-центра аккаунта не настроен базовый URL. В этом случае вы можете вернуться к формированию URL из file только если аккаунт находится в дата-центре по умолчанию app.pushwoosh.com — для аккаунта в другом дата-центре или на whitelabel-домене нет способа определить правильный хост только из 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",
"file_url": "https://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/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://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/<file>

Заголовки
Anchor link to

Аутентифицируйтесь так же, как и для других методов, или используйте активную сессию в Control Panel:

ИмяОбязательныйОписание -
AuthorizationДаServer API token в том же формате, что и для других методов exportMessagesStatistics: Authorization: Api <Server Key> (схема Api нечувствительна к регистру). Запрос без заголовка Authorization и без активной сессии в Control Panel получит 401 Unauthorized.

Замените <file> на точное значение file из ответа result, например:

https://app.pushwoosh.com/api/v2/statistics/exportMessagesStatistics/download/Export_Messages_v2_12345_20260813120000-a1b2c3d4.csv

Файл представляет собой CSV, содержащий столбцы, выбранные в properties. Он доступен в течение 7 дней после завершения экспорта, затем задача очистки удаляет его, и URL перестает работать.