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

Notify

POST https://api.pushwoosh.com/messaging/v2/notify

Создает и планирует отправку одного сообщения.

Структура запроса

Anchor link to

Тело запроса — это NotifyRequest с одним из двух видов:

  • segment: нацеливание на сегмент аудитории по коду сегмента или — без предварительного создания сегмента — на выражение seglang или структурированное выражение фильтра.
  • transactional: отправка по явному списку hwids, User ID, push-токенов или тестовых устройств.
Shape
{
"segment": { ... }, // ИЛИ
"transactional": { ... },
"transaction_id": "unique-uuid"
}
ПолеТипОписание
transaction_idstringНеобязательно. Ключ идемпотентности для запроса — работает как с segment, так и с transactional. Повторный вызов с тем же transaction_id в течение 5 минут возвращает исходный message_code вместо отправки дублирующего сообщения. Используйте UUID или другое уникальное значение для каждой логической отправки.

NotifySegment

Anchor link to

Нацеливается на пользователей, которые соответствуют сегменту аудитории или выражению фильтра. Установите ровно одно из полей: code, expression или filter_expression. Для expression и filter_expression не требуется предварительно создавать сегмент — выражение вычисляется “на лету” только для этой отправки.

ПолеТипОписание
scheduleScheduleКогда и как отправлять. Обязательно.
applicationstringКод приложения.
platformsarray of PlatformПлатформы, на которые нацелено сообщение.
codestringКод сегмента, сохраненного заранее. Взаимоисключающий с expression и filter_expression.
expressionstringВыражение Seglang, вычисляемое только для этой отправки — сохраненный сегмент не требуется. Взаимоисключающий с code и filter_expression.
filter_expressionFilterExpressionТа же логика, что и у expression, но в виде структурированного объекта, а не строки seglang. Взаимоисключающий с code и expression. Схема FilterExpression не документирована публично — запросите ее у службы поддержки Pushwoosh, если вам нужна структурированная форма.
payloadPayloadПолезная нагрузка для Push / SMS / Telegram / Kakao / LINE / WhatsApp / Viber / Facebook Messenger. Взаимоисключающий с email_payload.
email_payloadEmailPayloadПолезная нагрузка для Email.
campaignstringКод кампании, к которой относится это сообщение.
campaign_namestringВнутреннее название этого сообщения, отображается как заголовок строки в Message History и в её экспорте. Не связано с campaign выше. Оно не группирует сообщения и не влияет на доставку. Максимум 255 символов, обрезается. Не указывайте это поле или оставьте его пустым, чтобы заголовок строки формировался из содержимого полезной нагрузки.
frequency_cappingFrequencyCappingОграничения частоты для каждого пользователя.
send_rateSendRateОграничение скорости отправки.
message_typeMessageTypeMESSAGE_TYPE_MARKETING (по умолчанию) или MESSAGE_TYPE_TRANSACTIONAL. Управляет фильтрацией по контрольной группе.
dynamic_content_placeholdersmap<string, string>Заменяет плейсхолдеры в контенте.
meta_dataobjectМетаданные в свободной форме, передаваемые в последующие системы аналитики.
use_latest_user_deviceboolЕсли true, доставляет сообщение на последнее активное устройство каждого пользователя (то, у которого самое свежее время последнего открытия приложения), а не на каждое устройство, соответствующее сегменту. Ограничено platforms: учитываются только устройства на этих платформах, и если ни у одного из них нет данных о последнем открытии приложения, используется первое подходящее устройство, а не отменяется отправка. По умолчанию false (отправлять на каждое устройство).

Пример: Отправка сегменту

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"segment": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"code": "active_users",
"payload": {
"content": {
"localized_content": {
"en": {
"ios": { "body": "Hello!" },
"android": { "body": "Hello!" }
}
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_MARKETING"
}
}'

NotifyTransactional

Anchor link to

Отправляет сообщение по явному списку получателей.

ПолеТипОписание
scheduleScheduleОбязательно.
applicationstringКод приложения.
platformsarray of PlatformПлатформы, на которые нацелено сообщение.
test_devicesboolЕсли true, отправлять только на тестовые устройства приложения.
hwids{ "list": [string, ...] }Отправлять только на эти hwids.
users{ "list": [string, ...] }Отправлять только на эти User ID.
push_tokens{ "list": [string, ...] }Отправлять только на эти push-токены.
payloadPayloadПолезная нагрузка для Push / SMS / Telegram / Kakao / LINE / WhatsApp / Viber / Facebook Messenger.
email_payloadEmailPayloadПолезная нагрузка для Email.
return_unknown_identifiersboolЕсли true, поле unknown_identifiers в ответе будет содержать список ненайденных идентификаторов.
use_latest_user_deviceboolПрименяется только при нацеливании на users. Поведение такое же, как в NotifySegment выше — доставляет одно сообщение на пользователя, а не на устройство, в рамках platforms. По умолчанию false.
campaign, campaign_name, frequency_capping, send_rate, message_type, dynamic_content_placeholders, meta_dataСм. NotifySegment выше.

test_devices, hwids, users и push_tokens взаимоисключающие. Должно быть установлено ровно одно из этих полей.

Пример: Транзакционная отправка по User ID

Anchor link to
Terminal window
curl -X POST https://api.pushwoosh.com/messaging/v2/notify \
-H "Authorization: Token YOUR_API_TOKEN" \
-H "Content-Type: application/json" \
-d '{
"transactional": {
"application": "XXXXX-XXXXX",
"platforms": ["IOS", "ANDROID"],
"users": { "list": ["user-123", "user-456"] },
"payload": {
"content": {
"localized_content": {
"en": { "ios": { "body": "Your order has shipped." } }
}
}
},
"schedule": { "at": "2026-05-01T12:00:00Z" },
"message_type": "MESSAGE_TYPE_TRANSACTIONAL",
"return_unknown_identifiers": true,
"use_latest_user_device": true
}
}'

Ответ

Anchor link to
{
"result": {
"message_code": "XXXXX-XXXXX-XXXXX",
"unknown_identifiers": []
}
}
ПолеТипОписание
message_codestringУникальный код сообщения. Используйте его с эндпоинтами /getMessageDetails и статистики сообщений.
unknown_identifiersarray of stringИдентификаторы, не найденные в аккаунте. Заполняется только если в transactional-запросе было установлено return_unknown_identifiers: true.

Общие типы

Anchor link to
{
"at": "2026-05-01T12:00:00Z",
"follow_user_timezone": true,
"past_timezones_behaviour": "PAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY"
}
ПолеТипОписание
attimestampАбсолютное время отправки (RFC 3339). Если время в прошлом, сообщение отправляется немедленно. Максимум на 14 дней в будущем.
afterdurationАльтернатива at. Отправить через указанный промежуток времени от “сейчас” (например, "3600s").
follow_user_timezoneboolЕсли true, каждое устройство получает сообщение в at по своему локальному времени.
past_timezones_behaviourenumPAST_TIMEZONES_BEHAVIOUR_SEND_IMMEDIATELY (по умолчанию), PAST_TIMEZONES_BEHAVIOUR_DO_NOT_SEND или PAST_TIMEZONES_BEHAVIOUR_NEXT_DAY. Имеет смысл только если follow_user_timezone равно true.

FrequencyCapping

Anchor link to

Ограничения частоты на пользователя для маркетинговых рассылок. Чтобы отключить ограничение, полностью опустите frequency_capping или отправьте days: 0 вместе с count: 0.

{ "days": 7, "count": 3, "exclude": false, "avoid": true }
  • days (int, 1–30, или 0 для отключения): окно ретроспективного анализа. Должно отправляться вместе с count — если одно из полей равно 0, другое также должно быть 0; отправка одного поля как 0, а другого ненулевым, вернет ошибку 400.
  • count (int, 1 или выше, или 0 для отключения): максимальное количество сообщений, разрешенное в течение days. То же правило парности, что и для days выше.
  • exclude (bool): жестко исключать пользователей, которые уже достигли лимита.
  • avoid (bool): мягко избегать пользователей, которые уже достигли лимита (они все равно учитываются в аналитике).
{ "value": 500, "bucket": "1s", "avoid": false }

Ограничивает скорость отправки. value — это количество сообщений в bucket; типичный bucket — "1s".

Перечисление Platform

Anchor link to

IOS, ANDROID, OSX, WINDOWS, AMAZON, SAFARI, CHROME, FIREFOX, IE, EMAIL, HUAWEI_ANDROID, SMS, WEB, KAKAO, TELEGRAM, LINE, WHATS_APP, VIBER, FB_MESSENGER.

Перечисление MessageType

Anchor link to
  • MESSAGE_TYPE_UNSPECIFIED: эквивалентно MESSAGE_TYPE_MARKETING.
  • MESSAGE_TYPE_MARKETING: подлежит фильтрации по контрольной группе и ограничению частоты.
  • MESSAGE_TYPE_TRANSACTIONAL: пропускает фильтрацию по контрольной группе и ограничение частоты. Используйте для подтверждений заказов, одноразовых паролей и подобных критически важных процессов.

Связанные материалы

Anchor link to