Загрузка статуса...
Загрузка...

Новые устройства по дням

Воронка доставки

Успешность по приложениям

Динамика уведомлений

Список приложений

Загрузка...

Новое приложение

Тестовый режим

Активные процессы

Нет активных рассылок

История рассылок

1 / 1

Новая рассылка

дн.
час.
Обязательно для режима «Только новые» (если не выбрано «Бессрочно»)
мин.
0 = без ограничений. При нескольких активных рассылках устройства с недавним пушем будут пропущены
Выберите приложение для загрузки списка устройств
1 / 1
Период:
1 / 1
На странице:

Тёмные часы

В указанный период рассылки и досылки новым устройствам не отправляются. Планировщик проверяет время перед каждой отправкой.

Лимит пушей в сутки

Максимальное количество push-уведомлений на одно устройство в сутки. 0 = без ограничений. Применяется ко всем рассылкам.

шт.
Ограничений нет — устройства получат все рассылки
Примеры настроек:
0 — без ограничений 1 — не более 1 пуша в сутки 3 — не более 3 пушей в сутки 5 — умеренный режим

Текущий статус

Автоматические рассылки (Cron)

Кампании запускаются автоматически по расписанию и создают массовые рассылки на все устройства приложения. Тёмные часы и дневные лимиты применяются как обычно.

Дополнительные настройки

req/s
50 = 20мс между запросами. Снизьте при ошибках 429 от RuStore.
Неудачные пуши повторяются раз в час. Устройство удаляется после 24ч без доставки.
дн.
Уведомления старше этого срока удаляются автоматически раз в сутки.

Как подключить сервис за 5 шагов

  1. Откройте страницу Приложения и нажмите Ключи в карточке нужного приложения.
  2. Создайте ключ типа client — его можно встроить в мобильное приложение (только регистрация устройств).
  3. Создайте ключ типа server — храните его только на своём бэкенде (отправка пушей и статистика).
  4. Сохраните открытый ключ сразу — он показывается только один раз при создании.
  5. Проверьте ключ запросом GET /api/v1/me и начинайте слать пуши через POST /api/v1/push.

Авторизация и два типа ключей

Все запросы к /api/v1/* авторизуются заголовком Authorization: Bearer psk_<client|server>_…. Приложение определяется по самому ключу — идентификаторы приложения в теле передавать не нужно.

ТипГде хранитьСкоупы
CLIENT Можно в APK devices:write
SERVER Только на бэкенде devices:write, push:send, stats:read (опц. push:bypass_quiet_hours)

Справочник эндпоинтов

МетодПутьСкоупОписание
GET/api/v1/healthПроверка доступности
GET/api/v1/meлюбойИнформация о ключе и лимитах
POST/api/v1/devicesdevices:writeРегистрация/обновление устройства
DELETE/api/v1/devices/:tokendevices:writeУдаление устройства
GET/api/v1/statsstats:readСтатистика приложения
GET/api/v1/notificationsstats:readПоследние отправки
POST/api/v1/pushpush:sendОтправка пуша (главный метод)
GET/api/v1/push/:bulk_idstats:readСтатус рассылки
GET/api/v1/pushstats:readСписок рассылок
POST/api/v1/push/:bulk_id/cancelpush:sendОтмена рассылки

Коды ошибок

Формат любой ошибки: {"error":"snake_code","message":"текст","request_id":"…"}. Клиент различает ошибки по полю error, а не по тексту.

HTTPerrorЗначение
400bad_requestНекорректное тело запроса
400no_devicesНет устройств для отправки
401unauthorizedНет / битый / отозванный ключ
403forbiddenНе хватает скоупа (details.required_scopes)
404not_foundОбъект не найден
409idempotency_conflictТот же Idempotency-Key с другим телом
413payload_too_largeТело >256 КБ или data >4 КБ
429rate_limitedПревышен лимит запросов (Retry-After)
429quiet_hoursТихие часы (details.quiet_until)
502upstream_errorRuStore вернул ошибку
504upstream_timeoutТаймаут RuStore
500internal_errorВнутренняя ошибка

Тихие часы и суточный лимит

Тихие часы. Поле quiet_hours в теле /api/v1/push: defer (по умолчанию — отложить до конца тихих часов), reject (вернуть 429 quiet_hours), ignore (отправить сразу — требует скоуп push:bypass_quiet_hours). Массовая рассылка {all:true} при defer ставится в отложенную очередь и вернёт 202.

Суточный лимит. Если включён и respect_daily_limit=true, устройства сверх лимита пропускаются со статусом skipped_limit и попадают в поле skipped ответа. Для {topic} лимит не применяется.

Идемпотентность

Заголовок Idempotency-Key (≤128 символов) принимается на POST /api/v1/push, POST /api/v1/devices и DELETE /api/v1/devices/:token. Ключ хранится 24 часа. Повтор с тем же ключом и телом вернёт тот же результат и заголовок Idempotency-Replayed: true. Тот же ключ с другим телом — 409 idempotency_conflict.

Примеры curl / Dart