тобы отправить SMS из кода, выполните один HTTPS POST-запрос к https://api.broadnet.me/sms/sendSms с Authorization: Bearer заголовком и JSON телом, содержащим senderId, destinationNumber, текст сообщения и messageType. При успешном вызове возвращается HTTP 200 с ID сообщения в теле ответа; отчет о доставке (DLR) придет позже на ваш вебхук. В каждом языке ниже используется только стандартная библиотека HTTP; единственный официальный SDK предназначен для TypeScript и Node.js.
Основные тезисы
- Эндпоинт: POST https://api.broadnet.me/sms/sendSms,, JSON тело, Bearer токен.
- Обязательные поля: senderId, destinationNumber (в международном формате без знака плюс), сообщение, messageType (TEXT).
- Ответ: 200 с ID сообщения; сохраните его для сопоставления с отчетами о доставке.
- Ошибки: при отсутствии или недействительном токене шлюз возвращает 401; ошибки API возвращают status, error, message, errorCode и requestUri.
- Один официальный SDK: @broadnet/cpaas-sdk для TypeScript/Node.js; генерируйте клиенты для других языков на основе спецификации OpenAPI.
Что необходимо подготовить перед отправкой?
- Токен доступа от вашей учетной записи BroadNet, который следует хранить в переменной окружения (BROADNET_TOKEN ниже), но никогда — в исходном коде или мобильном приложении.
- Имя отправителя, разрешенное для страны назначения; в некоторых странах требуется предварительная регистрация.
- Номер получателя в международном формате, например 447700900123 (вымышленный номер Великобритании).
Тестовый доступ предоставляется нашими инженерами: запросите его, и вы получите тестовые учетные данные в течение одного рабочего дня, а первое тестовое сообщение обычно уходит примерно через пять минут после этого. В quickstart описан пошаговый процесс.
Как выглядит запрос?
Вот пример запроса с cURL. В каждом примере ниже отправляется одно и то же тело JSON.
curl -X POST https://api.broadnet.me/sms/sendSms \ -H "Authorization: Bearer $BROADNET_TOKEN" \ -H "Content-Type: application/json" \ -d '{ "senderId": "BroadNet", "destinationNumber": "447700900123", "message": "Your verification code is 482913", "messageType": "TEXT" }' # 200 OK → response body is the message ID, e.g. 2603121407537573731Как отправить SMS с использованием Python?
При использовании библиотеки requests аргумент json= автоматически устанавливает заголовок Content-Type.
import os, requests r = requests.post( "https://api.broadnet.me/sms/sendSms", headers={"Authorization": f"Bearer {os.environ['BROADNET_TOKEN']}"}, json={ "senderId": "BroadNet", "destinationNumber": "447700900123", "message": "Your verification code is 482913", "messageType": "TEXT", },) print(r.status_code, r.text) # message IDКак отправить SMS с использованием PHP?
Расширения curl для PHP достаточно; установка дополнительных пакетов не требуется.
<?php$ch = curl_init("https://api.broadnet.me/sms/sendSms");curl_setopt_array($ch, [ CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true, CURLOPT_HTTPHEADER => [ "Authorization: Bearer " . getenv("BROADNET_TOKEN"), "Content-Type: application/json", ], CURLOPT_POSTFIELDS => json_encode([ "senderId" => "BroadNet", "destinationNumber" => "447700900123", "message" => "Your verification code is 482913", "messageType" => "TEXT", ]),]); $messageId = curl_exec($ch);echo $messageId;Как отправить SMS с помощью Node.js?
В Node.js 18 и более поздних версиях функция fetch встроена:
// Node.js 18+ (fetch)const res = await fetch("https://api.broadnet.me/sms/sendSms", { method: "POST", headers: { Authorization: `Bearer ${process.env.BROADNET_TOKEN}`, "Content-Type": "application/json", }, body: JSON.stringify({ senderId: "BroadNet", destinationNumber: "447700900123", message: "Your verification code is 482913", messageType: "TEXT", }),}); console.log(await res.text()); // message IDИли используйте официальный SDK TypeScript/Node.js, @broadnet/cpaas-sdk:
// npm install @broadnet/cpaas-sdk axiosimport { Configuration, SMSSMSApi } from "@broadnet/cpaas-sdk"; const sms = new SMSSMSApi( new Configuration({ basePath: "https://api.broadnet.me", accessToken: process.env.BROADNET_TOKEN!, }),); const res = await sms.smsSendsmsPost({ sMSSmsRequest: { senderId: "BroadNet", destinationNumber: "447700900123", message: "Your verification code is 482913", messageType: "TEXT", },}); console.log(res.data); // message IDКак отправить SMS с помощью Java?
Java 11 и более поздние версии включают java.net.http.HttpClient:
// Java 11+ — java.net.http is built in, nothing to installimport java.net.URI;import java.net.http.HttpClient;import java.net.http.HttpRequest;import java.net.http.HttpResponse; public class SendSms { public static void main(String[] args) throws Exception { String json = "{" + "\"senderId\": \"BroadNet\", " + "\"destinationNumber\": \"447700900123\", " + "\"message\": \"Your verification code is 482913\", " + "\"messageType\": \"TEXT\"" + "}"; HttpRequest req = HttpRequest.newBuilder(URI.create("https://api.broadnet.me/sms/sendSms")) .header("Authorization", "Bearer " + System.getenv("BROADNET_TOKEN")) .header("Content-Type", "application/json") .POST(HttpRequest.BodyPublishers.ofString(json)) .build(); HttpResponse<String> res = HttpClient.newHttpClient() .send(req, HttpResponse.BodyHandlers.ofString()); System.out.println(res.statusCode() + " " + res.body()); // 200 + message ID }}Как отправить SMS с помощью Go?
package main import ( "bytes" "fmt" "io" "net/http" "os") func main() { body := []byte(`{ "senderId": "BroadNet", "destinationNumber": "447700900123", "message": "Your verification code is 482913", "messageType": "TEXT" }`) req, err := http.NewRequest(http.MethodPost, "https://api.broadnet.me/sms/sendSms", bytes.NewReader(body)) if err != nil { panic(err) } req.Header.Set("Authorization", "Bearer "+os.Getenv("BROADNET_TOKEN")) req.Header.Set("Content-Type", "application/json") res, err := http.DefaultClient.Do(req) if err != nil { panic(err) } defer res.Body.Close() id, _ := io.ReadAll(res.Body) fmt.Println(res.StatusCode, string(id)) // 200 + message ID}Как отправить SMS с помощью C# и .NET?
Для .NET 6 и более поздних версий не требуется пакет NuGet: HttpClient и System.Net.Http.Json уже встроены.
// .NET 6+ console app (Program.cs) — HttpClient is built in, no NuGet packageusing System;using System.Net.Http;using System.Net.Http.Headers;using System.Net.Http.Json; using var http = new HttpClient();http.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue( "Bearer", Environment.GetEnvironmentVariable("BROADNET_TOKEN")); // PostAsJsonAsync sends Content-Type: application/jsonvar res = await http.PostAsJsonAsync("https://api.broadnet.me/sms/sendSms", new{ senderId = "BroadNet", destinationNumber = "447700900123", message = "Your verification code is 482913", messageType = "TEXT",}); var id = await res.Content.ReadAsStringAsync();Console.WriteLine($"{(int)res.StatusCode} {id}"); // 200 + message IDЧто возвращается в ответе и как обрабатывать ошибки?
| Ответ | Значение | Что делать |
|---|---|---|
| 200 + ID сообщения | Принято к доставке | Сохраните ID вместе со своей записью; ожидайте DLR |
| 400 | Ошибка валидации или пропущенное поле | Исправьте запрос; не повторяйте попытку без изменений |
| 401 | Отсутствует или недействителен токен Bearer | Проверьте токен и заголовок Authorization |
| 500 | Непредвиденная ошибка сервера | Повторите попытку с задержкой; проверьте статус сообщения перед повторной отправкой |
Код 200 означает, что платформа приняла сообщение, а не то, что оно доставлено на устройство. Статус доставки подтверждается отчетом о доставке (delivery receipt); см. что такое DLR и отчеты о доставке SMS и коды ошибок. У API отсутствует заголовок идемпотентности, поэтому сохраняйте возвращенный ID сообщения и проверяйте его статус перед повторной отправкой, чтобы избежать дубликатов. Остальные коды перечислены на странице кодов ошибок.
Как подготовить решение к промышленной эксплуатации?
- Храните токен на стороне сервера. Никогда не вызывайте API SMS из браузера или мобильного приложения, где токен может быть извлечен; вместо этого используйте собственный бэкенд.
- Учитывайте длину сообщений: GSM-7 вмещает 160 символов на SMS, Unicode (UCS-2) — 70 символов, а более длинные тексты разбиваются на платные сегменты. См. лимит символов SMS.
- Ставьте массовые рассылки в очередь и соблюдайте пропускную способность вашего аккаунта; ознакомьтесь с ограничениями скорости.
- Получайте отчеты о доставке через webhook и сохраняйте конечный статус.
- Сначала проверьте номера на соответствие международному формату; см. валидация номера телефона E.164.
При очень больших объемах или наличии собственной телекоммуникационной инфраструктуры SMPP может подойти лучше, чем REST; см. SMPP против REST. Платформа BroadNet обрабатывает 30 000 SMS в секунду на один узел.
Часто задаваемые вопросы
Какой самый простой способ отправить SMS из кода?
Один HTTPS POST-запрос к SMS API с токеном доступа и телом запроса JSON. В случае с BroadNet это POST https://api.broadnet.me/sms/sendSms с senderId, destinationNumber, сообщением и messageType.
Существует ли BroadNet SDK для Python, PHP или Java?
Нет. Существует один официальный SDK, @broadnet/cpaas-sdk для TypeScript и Node.js. Другие языки вызывают REST API напрямую, как показано здесь, или генерируют клиент на основе спецификации OpenAPI.
В каком формате должен быть номер телефона?
В международном формате с кодом страны, без знака плюс или пробелов, например 447700900123.
Означает ли ответ 200, что SMS был доставлен?
Нет. Это означает, что сообщение было принято. Отчет о доставке (DLR) показывает, было ли оно доставлено на устройство.
Могу ли я отправлять SMS напрямую из приложения на Android или iOS?
Небезопасно. Перенесите вызов API на свой сервер, чтобы токен доступа никогда не передавался внутри приложения, и настройте вызов вашего сервера из приложения.
Где найти полную документацию по API?
В справочнике API и в спецификации OpenAPI.
Примеры кода — это те, что размещены на наших страницах для разработчиков и проверены на соответствие опубликованной спецификации OpenAPI. Проверено 28 сентября 2026 г. См. наши редакционные стандарты.
