RWM SMS API
Документация для подключения ваших скриптов и сервисов к RWM SMS: отправка SMS, массовые рассылки и HLR-проверка номеров через простой HTTP API.
Авторизация
Для каждого запроса передавайте API-ключ в HTTP-заголовке. Ключ не передаётся в теле запроса.
| Заголовок | Пример | Описание |
|---|---|---|
Authorization | Bearer <api_key> | Рекомендуемый способ |
X-Api-Key | <api_key> | Альтернатива |
curl https://api.rwmsms.com/api/v1/balance \
-H "Authorization: Bearer YOUR_API_KEY"import requests
API = "https://api.rwmsms.com"
KEY = "YOUR_API_KEY"
headers = {"Authorization": f"Bearer {KEY}"}
r = requests.get(f"{API}/api/v1/balance", headers=headers)
print(r.json())const API = "https://api.rwmsms.com";
const KEY = "YOUR_API_KEY";
const r = await fetch(`${API}/api/v1/balance`, {
headers: { Authorization: `Bearer ${KEY}` },
});
console.log(await r.json());401,
запрос обработан не будет.Коды ошибок
| Код | Значение |
|---|---|
200 | Успех |
400 | Неверные данные запроса (телефон, текст, JSON) |
401 | Нет ключа или ключ неверный |
402 | Недостаточно баланса |
403 | Ключ заблокирован |
502 | Ошибка отправки на стороне провайдера |
Формат ошибки:
{
"ok": false,
"error": "Insufficient balance (have 0.00 USD, need 0.70)"
}Проверка баланса
Возвращает баланс ключа и закреплённые за ним цены.
curl https://api.rwmsms.com/api/v1/balance \
-H "Authorization: Bearer YOUR_API_KEY"import requests
r = requests.get(
"https://api.rwmsms.com/api/v1/balance",
headers={"Authorization": "Bearer YOUR_API_KEY"},
)
print(r.json())const r = await fetch("https://api.rwmsms.com/api/v1/balance", {
headers: { Authorization: "Bearer YOUR_API_KEY" },
});
console.log(await r.json());Ответ 200
{
"ok": true,
"balance": 25.00,
"currency": "USD",
"sms_price": 0.70,
"hlr_price": 0.05
}
Отправка SMS
Отправка одного сообщения. Стоимость — $0.70 за SMS (цена закреплена за ключом).
| Параметр | Тип | Описание | |
|---|---|---|---|
phone | строка | Номер в формате E.164, напр. +15167887267 | обязательный |
message | строка | Текст SMS (синоним: text) | обязательный |
sender_id | строка | Имя отправителя, до 11 символов (синоним: sid) | опционально* |
* Если для ключа задан фиксированный Sender ID — он используется всегда, поле из запроса игнорируется.
curl -X POST https://api.rwmsms.com/api/v1/sms/send \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phone": "+15167887267",
"message": "Your code: 1234",
"sender_id": "Verify"
}'import requests
r = requests.post(
"https://api.rwmsms.com/api/v1/sms/send",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"phone": "+15167887267",
"message": "Your code: 1234",
"sender_id": "Verify",
},
)
print(r.json())const r = await fetch("https://api.rwmsms.com/api/v1/sms/send", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
phone: "+15167887267",
message: "Your code: 1234",
sender_id: "Verify",
}),
});
console.log(await r.json());Ответ 200
{
"ok": true,
"status": "success",
"phone": "+15167887267",
"balance": 24.30
}
Массовая рассылка
Отправка на множество номеров. Стоимость — $0.70 за каждый номер. Поддерживаются три формата тела запроса.
Вариант 1 — общий текст для всех
| Параметр | Тип | Описание | |
|---|---|---|---|
phones | массив / строка | Номера (массив или строки через перенос/запятую) | обязательный |
message | строка | Общий текст для всех номеров | обязательный |
sender_id | строка | Имя отправителя | опционально |
Вариант 2 — свой текст для каждого номера
Передайте массив messages — у каждого номера свой текст. Поле message не требуется.
| Параметр | Тип | Описание | |
|---|---|---|---|
messages | массив объектов | [{"phone": "...", "text": "..."}] | обязательный |
sender_id | строка | Имя отправителя | опционально |
Вариант 3 — формат «номер текст» (как .txt)
Передайте text_lines — построчно «номер пробел текст». Удобно отправлять содержимое .txt-файла.
| Параметр | Тип | Описание | |
|---|---|---|---|
text_lines | строка | Строки +номер текст, по одной на строку | обязательный |
sender_id | строка | Имя отправителя | опционально |
message,
либо персональный (в messages / text_lines). Иначе вернётся 400.# Вариант 1 — общий текст
curl -X POST https://api.rwmsms.com/api/v1/sms/bulk \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"phones": ["+15167887267", "+447911123456"],
"message": "Hello!",
"sender_id": "Promo"
}'
# Вариант 3 — формат «номер текст»
curl -X POST https://api.rwmsms.com/api/v1/sms/bulk \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"text_lines": "+15167887267 Your code 1234\n+447911123456 Hello Bob",
"sender_id": "Verify"
}'import requests
# Вариант 2 — свой текст каждому номеру
r = requests.post(
"https://api.rwmsms.com/api/v1/sms/bulk",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={
"sender_id": "Verify",
"messages": [
{"phone": "+15167887267", "text": "Your code 1234"},
{"phone": "+447911123456", "text": "Hello Bob"},
],
},
)
print(r.json())
# Вариант 3 — отправка содержимого .txt (строки "номер текст")
with open("numbers.txt", encoding="utf-8") as f:
lines = f.read()
r = requests.post(
"https://api.rwmsms.com/api/v1/sms/bulk",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"text_lines": lines, "sender_id": "Verify"},
)
print(r.json())const r = await fetch("https://api.rwmsms.com/api/v1/sms/bulk", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({
sender_id: "Verify",
messages: [
{ phone: "+15167887267", text: "Your code 1234" },
{ phone: "+447911123456", text: "Hello Bob" },
],
}),
});
console.log(await r.json());Ответ 200
{
"ok": true,
"status": "success",
"total": 2,
"success": 2,
"failed": 0,
"invalid": [],
"balance": 23.60,
"results": [
{ "phone": "+15167887267", "ok": true },
{ "phone": "+447911123456", "ok": true }
]
}
Проверка HLR
HLR Lookup — проверка валидности номера, оператора и статуса роуминга. Стоимость — $0.05 за номер.
| Параметр | Тип | Описание | |
|---|---|---|---|
phone | строка | Номер в формате E.164 (синоним: number) | обязательный |
curl -X POST https://api.rwmsms.com/api/v1/hlr \
-H "Authorization: Bearer YOUR_API_KEY" \
-H "Content-Type: application/json" \
-d '{ "phone": "+15167887267" }'import requests
r = requests.post(
"https://api.rwmsms.com/api/v1/hlr",
headers={"Authorization": "Bearer YOUR_API_KEY"},
json={"phone": "+15167887267"},
)
print(r.json())const r = await fetch("https://api.rwmsms.com/api/v1/hlr", {
method: "POST",
headers: {
Authorization: "Bearer YOUR_API_KEY",
"Content-Type": "application/json",
},
body: JSON.stringify({ phone: "+15167887267" }),
});
console.log(await r.json());Ответ 200
{
"ok": true,
"status": "success",
"phone": "+15167887267",
"result": {
"operator": "Verizon",
"country": "US",
"ported": false
},
"balance": 24.95
}
RWM SMS API · базовый адрес https://api.rwmsms.com · ключ выдаёт администратор бота.