VK API для массовых уведомлений: пошаговый разбор
Как настроить массовые уведомления через VK API: сообщества, рассылки, лимиты и автоматизация.
Обзор VK Messaging API
VK — одна из крупнейших социальных платформ в России с аудиторией более 100 миллионов пользователей. Для бизнеса VK предоставляет возможность отправки сообщений через сообщества (группы), используя VK API метод messages.send.
В отличие от Telegram, где боты работают напрямую, в VK механизм построен вокруг сообществ: пользователь подписывается на уведомления от сообщества, после чего сообщество получает право отправлять ему личные сообщения. Это ключевое отличие, которое определяет архитектуру массовых рассылок через VK.
VK API версии 5.199+ поддерживает несколько типов контента в сообщениях: текст, изображения, документы, аудио, видео, карточки (карусели) и кнопки (клавиатуры). Для уведомлений чаще всего используются текстовые сообщения с inline-кнопками.
Важно: VK активно модерирует рассылки через сообщества. Спам-рассылки блокируются, а сообщество может быть забанено. Подробнее о правилах — в нашей статье «Ограничения VK API для сообществ».
Настройка сообщества для рассылок
Прежде чем отправлять массовые уведомления, необходимо правильно настроить сообщество VK. Выполните следующие шаги:
- Создайте сообщество (группу) или используйте существующее
- Перейдите в Управление → Сообщения и включите сообщения сообщества
- В разделе Управление → Работа с API создайте ключ доступа (токен)
- Выберите права:
messages,manage,photos(при необходимости) - Настройте Callback API или Long Poll сервер для получения входящих событий
- Подтвердите сервер, ответив на confirmation-запрос VK
Токен сообщества имеет формат vk1.a.XXXX... и должен храниться в безопасном месте. Не используйте токены пользователей для рассылок — это нарушает правила VK и ведёт к блокировке.
Для продакшен-сценариев стоит также настроить Long Poll v3 — это обеспечивает получение событий без необходимости публичного HTTPS-эндпоинта:
// Настройка Long Poll для сообщества VK
const response = await fetch(
'https://api.vk.com/method/groups.getLongPollServer?' +
'group_id=YOUR_GROUP_ID&access_token=VK_COMMUNITY_TOKEN&v=5.199'
);
const { response: lp } = await response.json();
// lp.server, lp.key, lp.ts — данные для Long PollПодписка пользователей на уведомления
В VK нельзя отправить сообщение пользователю, если он не дал на это согласие. Существует несколько способов получить подписку:
- Пользователь написал сообществу первым — это автоматически даёт право на отправку ответных сообщений в течение 24 часов
- Подписка на рассылку через кнопку — VK позволяет разместить кнопку «Подписаться на рассылку» в сообществе. Метод
messages.allowMessagesFromGroup - VK Apps и виджеты — внутри мини-приложений можно запросить разрешение на отправку уведомлений через
VKWebAppAllowMessagesFromGroup - QR-код или ссылка — ведущие в диалог с сообществом, где пользователь инициирует общение
После получения подписки VK сохраняет user_id подписчика. Вы можете получить список всех подписчиков через метод messages.getConversations (для сообществ с подключённой рассылкой).
Совет: храните базу подписчиков на своей стороне. VK не гарантирует стабильный доступ к списку подписчиков через API, а лимиты на
getConversationsстрогие.
API отправки сообщений
Основной метод для отправки — messages.send. Он принимает параметры:
| Параметр | Тип | Описание |
|---|---|---|
user_id | integer | ID пользователя-получателя |
random_id | integer | Уникальный ID для предотвращения дубликатов |
message | string | Текст сообщения (до 4096 символов) |
keyboard | JSON | Клавиатура с кнопками (inline или обычная) |
template | JSON | Шаблон сообщения (карусель) |
attachment | string | Вложения: фото, документ, аудио |
Пример отправки сообщения на JavaScript
// JavaScript — отправка сообщения через VK API
async function sendVkMessage(userId, text) {
const params = new URLSearchParams({
user_id: String(userId),
random_id: String(Math.floor(Math.random() * 1e9)),
message: text,
keyboard: JSON.stringify({
one_time: false,
inline: true,
buttons: [[
{
action: {
type: 'open_link',
link: 'https://relaya.ru',
label: 'Открыть Релая'
}
}
]]
}),
access_token: process.env.VK_COMMUNITY_TOKEN,
v: '5.199'
});
const response = await fetch(
'https://api.vk.com/method/messages.send?' + params.toString()
);
const data = await response.json();
if (data.error) {
console.error('VK API Error:', data.error.error_code, data.error.error_msg);
// Обработка ошибок: 901 — пользователь запретил, 914 — рассылка заблокирована
throw new Error(`VK Error ${data.error.error_code}`);
}
return data.response; // message_id
}
// Пример использования
await sendVkMessage(123456789, 'Ваш заказ #1042 подтверждён!');Обратите внимание на random_id — это обязательный параметр, предотвращающий дублирование сообщений при повторных запросах. Используйте уникальные значения.
Лимиты отправки сообщений сообществ
VK строго ограничивает скорость отправки сообщений от имени сообществ. Нарушение лимитов приводит к временной или постоянной блокировке.
| Тип ограничения | Лимит | Примечание |
|---|---|---|
| Запросов к API в секунду | 20 req/s | На один токен сообщества |
| Сообщений в сутки (рассылка) | До 5 000 | Для подтверждённых сообществ |
| Сообщений в минуту (диалоги) | ~200 | Ответы на входящие сообщения |
| Размер текста сообщения | 4 096 символов | Включая разметку |
| Кнопок в inline-клавиатуре | До 40 | 5 рядов × 8 кнопок |
| Вложений к сообщению | До 10 | Фото, документы, аудио |
Ключевое ограничение — 5 000 сообщений в сутки для рассылки. Для крупных баз подписчиков (10 000+) это серьёзное узкое место. Сравните с MAX, где лимиты значительно мягче.
Стратегии массовой отправки
При отправке тысяч сообщений через VK прямой последовательный вызов messages.send неэффективен. Рассмотрим проверенные подходы:
- Execute-метод — VK API метод
executeпозволяет выполнить до 25 вызовов API в одном запросе. Это основной способ ускорить массовую рассылку - Несколько токенов — для крупных сообществ можно создать несколько приложений и ротировать токены (в рамках правил VK)
- Очередь с rate limiter — поставьте все сообщения в очередь (Redis, RabbitMQ) и обрабатывайте с контролем скорости 20 req/s
- Приоритезация — критические уведомления (транзакции) отправляйте первыми, маркетинговые — в фоне
// VK execute — 25 сообщений за один запрос
async function bulkSendVk(recipients, text, token) {
const batchSize = 25;
for (let i = 0; i < recipients.length; i += batchSize) {
const batch = recipients.slice(i, i + batchSize);
const code = batch.map(uid =>
`API.messages.send({
user_id: ${uid},
random_id: ${Math.floor(Math.random() * 1e9)},
message: "${text.replace(/"/g, '\\"')}"
})`
).join(',');
const response = await fetch(
'https://api.vk.com/method/execute', {
method: 'POST',
body: new URLSearchParams({
code: `return [${code}];`,
access_token: token,
v: '5.199'
})
}
);
// Пауза 1.3с для соблюдения 20 req/s
await new Promise(r => setTimeout(r, 1300));
}
}Шаблоны VK-сообщений
VK поддерживает несколько форматов сообщений, которые повышают вовлечённость подписчиков:
- Текст + inline-кнопки — стандартный формат для уведомлений. Кнопки могут содержать ссылки, callback-действия или переход в VK Pay
- Карусель (template) — до 10 карточек с изображением, текстом и кнопками. Подходит для каталогов и подборок товаров
- Текст + вложение — сообщение с прикреплённым изображением, документом или аудио. Эффективно для PDF-чеков и промо-баннеров
На практике визуально богатые сообщения (с кнопками и изображениями) обычно показывают более высокий CTR по сравнению с чисто текстовыми уведомлениями.
Мониторинг доставки
VK не предоставляет полноценного delivery tracking для сообщений от сообществ. Вам доступны косвенные показатели:
- Статус отправки — метод
messages.sendвозвращаетmessage_idпри успехе или объект ошибки - Callback-события — через Callback API можно отслеживать
message_read(прочитано пользователем) - Статистика рассылки — доступна в интерфейсе VK для сообществ с подключённой рассылкой
- Ошибки отправки — код 901 (пользователь запретил), 914 (рассылка заблокирована), 7 (нет доступа)
Для полноценного мониторинга собирайте статистику на своей стороне: процент доставки, процент ошибок по кодам, среднее время отправки. Или используйте Релая, где вся статистика доступна из коробки.
Мультиканальная доставка через Релая
Ограничения VK (5 000 сообщений в сутки, сложная подписка, отсутствие delivery tracking) делают его ненадёжным как единственный канал. Решение — мультиканальный подход.
Релая объединяет VK, Telegram и MAX единым форматом запросов. Приоритет каналов задаётся на стороне вашего сервиса:
// Мультиканальная отправка через Релая API (fallback по приоритету)
const integrations = ['vk', 'maxbot', 'telegrambot']; // VK → MAX Bot → Telegram Bot
for (const integration of integrations) {
const response = await fetch(
`https://api.relaya.ru/v1/profiles/{profileId}/integrations/${integration}/messages`,
{
method: 'POST',
headers: {
'Authorization': 'Bearer RELAYA_TOKEN',
'Content-Type': 'application/json'
},
body: JSON.stringify({
chatId: '123456789',
message: 'Ваш заказ подтверждён!',
clientId: `order_confirmed_123456789_${integration}`
})
}
);
if (response.ok) break;
}Если VK недоступен или лимит исчерпан, сообщение автоматически отправится через MAX, а затем через Telegram. Подробнее об архитектуре — «Устойчивая система доставки сообщений в мессенджеры».
MAX как дополнительный канал
Если вы уже отправляете уведомления через VK, добавление MAX даёт несколько преимуществ:
- Более мягкие лимиты — В MAX ориентируйтесь на текущие лимиты Bot API и свой рабочий темп, а не на одну универсальную цифру на рассылку
- Растущая аудитория — MAX активно набирает пользователей в РФ, особенно в корпоративном сегменте
- 152-ФЗ — данные хранятся на территории РФ
- Более простой API — не требуется настройка сообществ, бот работает напрямую
- Резервный канал — когда VK-лимит исчерпан, MAX доставит сообщение
Через Релая подключение MAX занимает несколько минут — достаточно создать бота и добавить токен в панели управления. Подробнее о массовых рассылках через MAX: «Массовая отправка через MAX».
VK остаётся важным каналом для бизнеса в России, но его ограничения на рассылки и сложная модель подписки требуют дополнительных каналов. Комбинация VK + MAX + Telegram через Релая — подходящая стратегия для надёжной доставки уведомлений в 2026 году.
Создайте бесплатный MAX-профиль
Если хочется не просто читать, а сразу проверить сценарий руками: подключите MAX, отправьте себе тестовое сообщение и уже потом решайте, нужны ли другие каналы.