Отправить SMS (GET)
Браузерный эндпоинт — отправляет SMS через обычный GET-запрос. Все параметры передаются в строке запроса (query string).
Метод: GET
Эндпоинт: /api/ext/v1/sms/send
Требуемое разрешение: sms:send
Этот эндпоинт удобен когда нужно отправить SMS прямо из браузера, скрипта оболочки или сервиса, который умеет только GET-запросы (например, некоторые системы мониторинга или вебхуки).
Параметры запроса
| Параметр | Обязательно | Описание |
|---|---|---|
phone | ✅ | Номер телефона в международном формате (+79001234567) |
text | ✅ | Текст SMS. Максимум 170 символов, независимо от алфавита (см. ниже) |
device_id | ❌ | UUID устройства. Если не указан — автовыбор |
no_store | ❌ | true чтобы не сохранять SMS в истории |
token | ❌* | API-ключ, если не передаёте заголовок Authorization |
*token нужен только если вы не используете заголовок Authorization: Bearer.
Лимит символов в SMS
Максимальная длина сообщения — 170 символов, независимо от алфавита (латиница, кириллица, эмодзи и любые другие Unicode-символы). Длина считается по символам, а не по байтам — кириллический и латинский текст занимают лимит одинаково.
Почему 170, а не 300?
Мы намеренно снизили лимит с 300 до 170 символов, чтобы ваши устройства реже разбивали SMS на несколько частей. При разбиении SMS оператор может сформировать некорректные заголовки, из-за чего часть сообщения может быть заблокирована или не доставлена.
Знак + в номере телефона
Символ + в URL-строке запроса нужно передавать как %2B. HTTP-библиотеки (Python requests, fetch, axios, HTTPClient) делают это автоматически — просто передавайте +79001234567 как обычную строку.
Примеры
curl
curl -G "https://api.gosms.ru/api/ext/v1/sms/send" \
-H "Authorization: Bearer ВАШ_КЛЮЧ" \
--data-urlencode "phone=+79001234567" \
--data-urlencode "text=Тест"Флаг
-Gс--data-urlencodeавтоматически кодирует+и спецсимволы — вам не нужно думать об этом.
С API-ключом в URL (без заголовков)
curl -G "https://api.gosms.ru/api/ext/v1/sms/send" \
--data-urlencode "token=ВАШ_КЛЮЧ" \
--data-urlencode "phone=+79001234567" \
--data-urlencode "text=Тест"Python
import requests
response = requests.get(
"https://api.gosms.ru/api/ext/v1/sms/send",
headers={"Authorization": "Bearer ВАШ_КЛЮЧ"},
params={
"phone": "+79001234567", # requests сам закодирует + → %2B
"text": "Привет из Python!",
},
)
response.raise_for_status()
print(response.json())JavaScript (браузер / Node.js)
const params = new URLSearchParams({
phone: '+79001234567', // URLSearchParams кодирует + автоматически
text: 'Привет из браузера!',
});
const response = await fetch(
`https://api.gosms.ru/api/ext/v1/sms/send?${params}`,
{ headers: { 'Authorization': 'Bearer ВАШ_КЛЮЧ' } }
);
const sms = await response.json();
console.log('Отправлено:', sms.id);PHP
$response = file_get_contents(
'https://api.gosms.ru/api/ext/v1/sms/send?' . http_build_query([
'phone' => '+79001234567', // http_build_query кодирует + автоматически
'text' => 'Привет из PHP!',
]),
false,
stream_context_create([
'http' => [
'header' => 'Authorization: Bearer ВАШ_КЛЮЧ',
],
])
);
print_r(json_decode($response, true));Пример для системы мониторинга (URL с токеном)
Если система мониторинга умеет только GET и не позволяет задать заголовки — передайте API-ключ через token. Убедитесь, что ваша система URL-кодирует параметры, иначе + в номере телефона нужно заменить на %2B вручную:
https://api.gosms.ru/api/ext/v1/sms/send?token=ВАШ_КЛЮЧ&phone=%2B79001234567&text=ALERTОтвет — 201 Created
Ответ идентичен POST /api/ext/v1/sms:
{
"id": "550e8400-e29b-41d4-a716-446655440001",
"device_id": "550e8400-e29b-41d4-a716-446655440000",
"phone": "+79001234567",
"message": "Тест",
"status": "pending",
"sent_at": "2024-01-15T10:30:00Z",
"updated_at": "2024-01-15T10:30:00Z"
}Когда использовать GET вместо POST
| Ситуация | Рекомендация |
|---|---|
| Серверная интеграция, есть возможность задать заголовки | Используйте POST |
| Браузерный скрипт без CORS-проблем | Можно GET |
| Система мониторинга, умеет только URL | GET с ?token= |
| Webhook-сервис без поддержки заголовков | GET с ?token= |
| Простой тест из адресной строки браузера | GET |