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

Notify

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

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

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

Anchor link to

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

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

NotifySegment

Anchor link to

Таргетируется на пользователей, которые соответствуют сегменту аудитории или выражению фильтра.

ПолеТипОписание
scheduleScheduleКогда и как отправлять. Обязательно.
applicationstringКод приложения.
platformsarray of PlatformПлатформы, на которые нацелено сообщение.
codestringКод сегмента. Взаимоисключающий с expression и filter_expression.
expressionstringВыражение на языке Seglang.
filter_expressionFilterExpressionСтруктурированное выражение фильтра (расширенная настройка).
payloadPayloadПолезная нагрузка для Push / SMS / Telegram / Kakao / LINE / WhatsApp / Viber. Взаимоисключающий с email_payload.
email_payloadEmailPayloadПолезная нагрузка для Email.
campaignstringКод кампании, к которой будет отнесено это сообщение.
frequency_cappingFrequencyCappingОграничения по частоте для каждого пользователя.
send_rateSendRateОграничение скорости отправки.
message_typeMessageTypeMESSAGE_TYPE_MARKETING (по умолчанию) или MESSAGE_TYPE_TRANSACTIONAL. Управляет фильтрацией по контрольной группе.
dynamic_content_placeholdersmap<string, string>Заменяет плейсхолдеры в контенте.
meta_dataobjectМетаданные в свободной форме, передаваемые в последующие системы аналитики.
use_latest_user_deviceboolЕсли true, сообщение доставляется на последнее активное устройство каждого пользователя (то, у которого самое последнее время Last Application Open), а не на каждое устройство, соответствующее сегменту. Ограничено platforms: учитываются только устройства на этих платформах, и если ни у одного из них нет данных Last Application Open, используется первое подходящее устройство, а не отменяется отправка. По умолчанию 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, ...] }Отправлять только на эти hwid.
users{ "list": [string, ...] }Отправлять только на эти User ID.
push_tokens{ "list": [string, ...] }Отправлять только на эти push-токены.
payloadPayloadПолезная нагрузка для Push / SMS / Telegram / Kakao / LINE / WhatsApp / Viber.
email_payloadEmailPayloadПолезная нагрузка для Email.
return_unknown_identifiersboolЕсли true, в ответе поле unknown_identifiers будет содержать список ненайденных идентификаторов.
use_latest_user_deviceboolПрименяется только при таргетинге на users. Поведение такое же, как в NotifySegment выше — доставляет одно сообщение на пользователя, а не на устройство, в рамках platforms. По умолчанию false.
campaign, 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.

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

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

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

Anchor link to