FAQ
Вопросы и ответы по Bulk SMS API
39 ответов о счетах, отправке, ценах, отчетах о доставке и API, проверенных на соответствие ограничениям в коде. Для эндпоинтов и полей подробности есть в Справочник по API.
Сервис
Что такое BulkSMSAPI?
Bulk SMS API для разработчиков: отправляйте одно сообщение или пакет до 10 000 номеров за запрос в 227 стран через REST, отслеживайте каждое сообщение с помощью подписанных вебхуков и оплачивайте каждое сообщение с предоплаченного баланса. Веб-консоль позволяет отправлять кампании из списка или CSV без написания кода.
Кто использует Bulk SMS API?
Продуктовые и инженерные команды, которые отправляют сообщения из своих систем: коды входа и регистрации, обновления заказов и доставки, напоминания о встречах, уведомления о платежах, служебные уведомления и маркетинговые кампании. Любой, кто может сделать HTTPS-запрос, может использовать его.
В какие страны я могу отправлять сообщения?
227 стран и территорий, перечисленных с их ценами на странице цен и страницах стран. Один запрос может включать разные страны: каждый номер оценивается по стране, к которой он принадлежит.
Есть ли ежемесячная плата или контракт?
Нет. Вы платите за каждый сегмент сообщения с предоплаченного баланса, и нет ежемесячной платы, платы за настройку или минимального объема. Баланс не имеет срока действия.
Есть ли бесплатная пробная версия?
Аккаунты начинаются с нулевого баланса, и первое пополнение открывает все возможности. Первое пополнение добавляет бонус до 40%, поэтому первые сообщения стоят дешевле. Цены публичны, а конечная точка оценки и консоль показывают точную стоимость до отправки.
Аккаунт и API-ключи
Как создать аккаунт?
Откройте страницу Получить API-ключ. Ваш браузер создаст ключ аккаунта, начинающийся с acct_; скопируйте его или сохраните как текстовый файл, подтвердите сохранение, и аккаунт готов. Ключ аккаунта, это единственный способ входа: нет электронной почты или пароля для управления.
Что произойдет, если я потеряю ключ аккаунта?
Мы храним только хэш с ключом, поэтому никто, включая нашу команду поддержки, не может его показать снова. Храните его в менеджере паролей. Пока вы остаетесь в системе, консоль продолжает работать, и вы можете связаться с поддержкой через нее.
Как получить API-ключ?
На странице API-ключей в консоли, после первого пополнения баланса. Назовите ключ, создайте его и скопируйте один раз: он начинается с bsa_live_. На одном аккаунте может быть до 10 активных ключей, каждый со своим именем и счетчиком лимита запросов.
Можно ли использовать разные ключи для продакшена и тестирования?
Да. Создайте отдельный ключ для каждого приложения или среды и дайте ему имя. Каждый ключ показывает, когда он использовался в последний раз, и отзыв одного ключа не влияет на работу остальных.
Сколько аккаунтов я могу создать?
До 3 аккаунтов на один сетевой адрес. Большинству команд достаточно одного аккаунта с несколькими API-ключами.
Отправка сообщений
Сколько номеров можно указать в одном запросе?
POST /v1/batches принимает до 10,000 номеров в одном запросе, либо один текст для всех, либо индивидуальный текст для каждого номера. Консоль принимает до 50,000 номеров в одной кампании. Более длинные списки разбиваются на несколько запросов.
Как быстро отправляются сообщения?
Очередь обрабатывается каждые две секунды и передает до 1,200 сообщений в минуту на один аккаунт в сеть, в порядке их получения. Одно сообщение обычно отправляется в течение нескольких секунд после запроса.
В каком формате должны быть номера телефонов?
Международный формат E.164: знак плюса, код страны и национальный номер, например +14155550123. Пробелы, тире, скобки и префикс 00 автоматически удаляются; дубликаты и номера, которые невозможно прочитать, откладываются и не оплачиваются.
Какой длины может быть сообщение?
До 10 сегментов: 1,530 символов в GSM-7 или 670 в Unicode. Один сегмент содержит 160 символов GSM-7 или 70 символов Unicode; более длинные тексты разбиваются на части по 153 или 67 символов и снова объединяются на телефоне.
Почему мое сообщение использовало больше сегментов, чем я ожидал?
Один символ вне алфавита GSM-7, например кавычка, эмодзи или буква вроде á или ç, переводит весь текст в Unicode с 70 символами на сегмент. Композитор в консоли указывает такие символы, а POST /v1/estimates возвращает кодировку перед отправкой.
Можно ли запланировать отправку сообщений?
Да. Добавьте send_at в API-запрос или выберите время в консоли, от 2 минут до 45 дней вперед. Запланированный пакет можно отменить до начала отправки, и его полная стоимость вернется на баланс.
Может ли каждый получатель получить разный текст?
Да. Через API отправьте пакет с сообщениями, одно {to, text} для каждого получателя. В консоли вставьте или загрузите список с дополнительными столбцами и используйте поля подстановки {{1}} до {{9}} в тексте.
Добавляется ли строка отказа в мои сообщения?
Настройте текст отказа один раз в Настройках, например ссылку или email, и консоль добавит его в тексты кампаний, если вы поставите галочку. Через API вы контролируете весь текст, поэтому добавьте строку отказа самостоятельно в маркетинговые сообщения. Номера из вашего списка исключений пропускаются консолью и API и не оплачиваются.
Можно ли сначала отправить тестовое сообщение?
Да. В консоли есть функция тестовой отправки на один номер перед кампанией, а через API вы можете отправить одно сообщение на свой телефон с помощью POST /v1/messages.
Цены и оплата
Сколько стоит одно SMS?
Это зависит от страны номера: в каждой стране своя цена за сегмент в долларах США, начиная с $0.00247 (Бразилия). Страница с ценами и GET /v1/pricing перечисляют все страны.
Как рассчитывается стоимость пакета?
Для каждого получателя: цена за сегмент в его стране умножается на количество сегментов в его тексте. Сумма списывается с баланса при принятии запроса, и ответ показывает ее в cost.
Каков минимальный размер пополнения?
$40. Пополнение может быть любой суммой от $40 до $5,000. Первое пополнение добавляет бонус до 40%, который отображается для каждой суммы перед оплатой.
Как я могу оплатить?
В консоли раздел Billing открывает окно оплаты поверх страницы. Вы выбираете сумму и оплачиваете криптовалютой, а страница оплаты показывает точную сумму и адрес. На странице платежей перечислены все шаги.
Возвращаются ли средства за неудачные сообщения?
Да. Если сообщение не доставлено, его стоимость автоматически возвращается на баланс в виде строки возврата в журнале. Отмененный запланированный пакет возвращается полностью.
Могу ли я вывести средства с баланса?
Баланс используется для оплаты сообщений и остается на вашем счете без срока действия. Возвраты за неудачные или отмененные сообщения также возвращаются на баланс.
Меняются ли цены?
Цены могут измениться при изменении сетевых затрат. Текущий список датирован, API возвращает дату с каждой ценой, а уже принятые сообщения сохраняют цену, по которой они были отправлены.
Доставка и отчеты
Как я узнаю, что сообщение доставлено?
Каждое сообщение проходит этапы: в очереди, отправлено, доставлено или не доставлено. Добавьте URL вебхука в консоли, чтобы получать подписанные события для каждого финального статуса, или используйте GET /v1/messages/{id} и GET /v1/batches/{id}.
Как подписываются вебхуки?
В формате Standard Webhooks: заголовки webhook-id, webhook-timestamp и webhook-signature, где подпись, это HMAC-SHA256 от id, timestamp и тела запроса с вашим секретом whsec_. В документации есть код проверки для Node.js, Python, PHP и Go.
Что делать, если мой вебхук недоступен?
Каждое событие получает 10 попыток в течение примерно 24 часов, и каждая попытка отображается в консоли с ее HTTP-статусом. Вы также можете опрашивать конечные точки сообщений в любое время.
Почему сообщение может не доставиться?
Телефон может быть выключен слишком долго, номер может быть больше не в сети, или сеть может отказать в доставке. Статус failed содержит код ошибки, и стоимость возвращается.
Как долго хранятся записи о сообщениях?
Пакеты, сообщения и журнал баланса остаются в вашем аккаунте и в API. Журнал запросов хранит последние 500 вызовов API, а журнал вебхуков, последние 500 доставок.
Для разработчиков
Есть ли SDK?
API использует простой JSON через HTTPS, поэтому стандартной библиотеки любого языка достаточно. В документации есть полные примеры для curl, Node.js, Python, PHP и Go, а спецификация OpenAPI в /openapi.json генерирует типизированный клиент для большинства языков.
Каковы лимиты запросов?
600 запросов в минуту на каждый API-ключ. Каждый ответ содержит заголовки X-RateLimit-Limit, X-RateLimit-Remaining и X-RateLimit-Reset, а ответ 429 включает Retry-After.
Как безопасно повторить запрос после тайм-аута?
Отправляйте POST-запросы с заголовком Idempotency-Key и повторяйте запрос с тем же ключом. В течение 24 часов тот же ключ и тело запроса возвращают первый ответ вместо повторной отправки.
Могу ли я проверить цены без API-ключа?
Да. GET /v1/pricing и GET /v1/pricing/{country} являются публичными, поэтому страница оплаты или панель управления могут показывать актуальные цены.
Где я могу увидеть, что отправил мой код?
В консоли есть журнал запросов с методом, путем, статусом и временем ваших последних 500 вызовов API, рядом с пакетами, сообщениями и журналом вебхуков.
Консоль
Могу ли я отправлять без написания кода?
Да. В консоли вставьте номера или загрузите CSV-файл до 50 000 строк, напишите текст с полями для слияния, проверьте предварительный просмотр для каждого получателя и стоимость по странам, и отправьте сейчас или в установленное время.
Что показывает консоль?
Баланс, последние пакеты с текущими счетчиками, каждый пакет с его сообщениями и статусами, пополнения и журнал, API-ключи, настройки и доставки вебхуков, журнал запросов, прайс-лист, тикеты поддержки и настройки.
Как связаться с поддержкой?
Со страницы поддержки в консоли. Вопросы по оплате можно задавать с первого дня; другие темы открываются после зачисления первого пополнения.
Остались вопросы?
Авторизованные аккаунты могут открыть тикет поддержки из консоли. Вопросы по оплате можно задавать с первого дня.