Запросы и ответы
Общие правила для всех методов: форматы, идентификаторы, асинхронность, защита от повторов и постраничная выдача.
Формат
- Запросы и ответы — JSON в UTF-8 (
Content-Type: application/json). Исключения: загрузка файла (multipart или «сырые» байты) и скачивание файла. - Даты — строки ISO 8601 в UTC:
2026-10-10T09:30:00.000Z. Там, где можно передать дату без времени (2026-11-01), она означает «до конца этого дня по UTC». - Деньги — целые числа в копейках:
399000= 3 990 ₽. Валюта — в полеcurrency. - Телефон — международный формат, допускаются
+, пробелы, скобки и дефисы:+7 (999) 123-45-67. В ответах телефоны — только цифры без+:79991234567.
Идентификаторы
Наши идентификаторы — UUID (id, accountId, chatId, messageId…). Идентификаторы мессенджера отдаются отдельно: externalId у сообщения, externalId у чата (например, 79991234567@c.us в WhatsApp). В запросах используйте наши UUID; адресат отправки — to.chatId (externalId чата) или to.phone.
Асинхронные операции (202)
Отправка, правка, удаление, «прочитано», «печатает», сторис отвечают 202 Accepted: операция поставлена в очередь номера и выполнится в течение секунд. Результат приходит событием (message.status, story.status) и виден в объекте. Очередь каждого номера строго последовательна и идёт с паузами между сообщениями — это защита номера от блокировки за спам.
Защита от повторной отправки
Передавайте clientId — ваш уникальный ключ операции (например, order-1001-notify). Повтор запроса с тем же clientId не отправит сообщение второй раз, а вернёт уже созданное (200 вместо 202). Так же работает clientId при заказе номера: повтор после таймаута вернёт тот же номер, а не купит второй.
Постраничная выдача
| Где | Как листать |
|---|---|
| чаты, сообщения чата | limit (до 200) и cursor; в ответе nextCursor — передайте его следующим запросом, null = конец |
| события | after=<id последнего события> и limit (до 500); в ответе next — id для следующего запроса |
| счета | before=<номер счёта> и limit (до 100); в ответе next, null = конец |
Лимиты
| Что | Ограничение |
|---|---|
| Размер JSON-запроса | 1 МБ |
| Размер загружаемого файла | 100 МБ |
| Текст сообщения | 20 000 символов; подпись к файлу — 4 096 |
| Заказ номеров | не больше лимита номеров клиента и не чаще установленного числа заказов в час (GET /v1/me → limits) |
| Счета на оплату | не больше 10 неоплаченных счетов на номер в час |
| Отправка | сообщения номера уходят по одному с паузой sendIntervalMs — это защита от блокировки, а не ограничение API |