REST API

Интегрируйте SMS в ваше приложение

Простой REST API для отправки транзакционных, маркетинговых и OTP-сообщений. Прямые подключения к операторам Молдовы — без посредников.

99.8% Доставляемость
< 5 сек Среднее время доставки
24/7 Доступно
POST /v3/messages
curl -X POST https://api.sms.md/v3/messages \
  -H "X-Api-Token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "CompanyName",
    "to":   "+37369000000",
    "text": "Ваш код: 4821"
  }'
200 OK
{
  "status":   "success",
  "httpCode": 200,
  "data": {
    "id":       "787ab0aa-09cd-44f2-aa98-6ebc3cdb2ec6",
    "to":       "+37369000000",
    "cost":     "0.30",
    "currency": "MDL"
  }
}

Возможности API

Всё необходимое для интеграции SMS в любое приложение или сервис

Отправка SMS

Одиночная и массовая отправка через единый endpoint. JSON формат ответа.

OTP и 2FA

Одноразовые коды для верификации, входа и финансовых операций с валидацией на стороне сервера.

Delivery Reports

Статусы доставки через webhook (push) или polling (pull). Тарифицируется всё, что принято оператором в обработку — независимо от исхода доставки.

Отложенная отправка

Планирование SMS на конкретное время — Unix timestamp или ISO 8601. Отмена или изменение до момента отправки.

Alphanumeric Sender ID

Регистрация имени отправителя у операторов Молдовы (до 11 символов). Клиент видит название вашего бренда.

UTF-8 и Unicode

Нативная поддержка кириллицы, румынской диакритики (ș, ț, ă, î, â) и любых языков Unicode.

Массовая рассылка

Отправка по списку номеров в одном запросе. Поддержка batch-очереди без ограничений по размеру базы.

Безопасность

API-ключ в заголовке X-Api-Token. HTTPS-only. Опциональный IP-whitelist и ротация ключей из личного кабинета.

Примеры кода

Выберите язык и скопируйте готовый пример

# Отправка одного SMS
curl -X POST https://api.sms.md/v3/messages \
  -H "X-Api-Token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "CompanyName",
    "to":   "+37369000000",
    "text": "Ваш заказ №1042 принят. Ожидайте звонка менеджера."
  }'

# Ответ:
{
  "status":   "success",
  "httpCode": 200,
  "data": {
    "id":      "787ab0aa-09cd-44f2-aa98-6ebc3cdb2ec6",
    "cost":    "0.30",
    "currency": "MDL"
  }
}
# Массовая рассылка по списку номеров (до 500 за запрос)
curl -X POST https://api.sms.md/v3/messages/bulk \
  -H "X-Api-Token: YOUR_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
    "from": "CompanyName",
    "recipients": ["+37369000001", "+37369000002", "+37369000003"],
    "text": "Скидка 20% только сегодня! Промокод: SALE20"
  }'

# Ответ:
{
  "status":   "success",
  "httpCode": 200,
  "data": {
    "bulkId": "019fd720-1a7d-715c-a4ef-bfe26b903293"
  }
}
# Проверка статуса доставки по ID
curl https://api.sms.md/v3/messages/787ab0aa-09cd-44f2-aa98-6ebc3cdb2ec6 \
  -H "X-Api-Token: YOUR_API_TOKEN"

# Ответ:
{
  "status":   "success",
  "httpCode": 200,
  "data": {
    "id":     "787ab0aa-09cd-44f2-aa98-6ebc3cdb2ec6",
    "status": { "id": 3, "name": "Delivered" },
    "dateUpdated": "2026-03-24T14:32:11+03:00"
  }
}
// Используйте Guzzle или любой HTTP-клиент
use GuzzleHttp\Client;

$client = new Client();
$response = $client->post('https://api.sms.md/v3/messages', [
    'headers' => [
        'X-Api-Token' => $apiToken,
    ],
    'json' => [
        'from' => 'CompanyName',
        'to'   => '+37369000000',
        'text' => 'Ваш заказ №1042 принят.',
    ],
]);
$body = json_decode($response->getBody(), true);
echo $body['data']['id']; // 787ab0aa-09cd-44f2-aa98-6ebc3cdb2ec6
$response = $client->post('https://api.sms.md/v3/messages/bulk', [
    'headers' => ['X-Api-Token' => $apiToken],
    'json' => [
        'from' => 'CompanyName',
        'recipients' => [
            '+37369000001',
            '+37369000002',
            '+37369000003',
        ],
        'text' => 'Скидка 20% только сегодня!',
    ],
]);
$body = json_decode($response->getBody(), true);
echo $body['data']['bulkId'];
$response = $client->get(
    'https://api.sms.md/v3/messages/' . $messageId,
    ['headers' => ['X-Api-Token' => $apiToken]]
);
$msg = json_decode($response->getBody(), true)['data'];

if ($msg['status']['name'] === 'Delivered') {
    // Сообщение доставлено
}
import requests

response = requests.post(
    'https://api.sms.md/v3/messages',
    headers={'X-Api-Token': api_token},
    json={
        'from': 'CompanyName',
        'to':   '+37369000000',
        'text': 'Ваш заказ №1042 принят.',
    }
)
body = response.json()
print(body['data']['id'])  # 787ab0aa-09cd-44f2-aa98-6ebc3cdb2ec6
response = requests.post(
    'https://api.sms.md/v3/messages/bulk',
    headers={'X-Api-Token': api_token},
    json={
        'from': 'CompanyName',
        'recipients': [
            '+37369000001',
            '+37369000002',
            '+37369000003',
        ],
        'text': 'Скидка 20% только сегодня!',
    }
)
print(response.json()['data']['bulkId'])
response = requests.get(
    f'https://api.sms.md/v3/messages/{message_id}',
    headers={'X-Api-Token': api_token}
)
msg = response.json()['data']

if msg['status']['name'] == 'Delivered':
    print('Доставлено', msg['dateUpdated'])
const response = await fetch('https://api.sms.md/v3/messages', {
  method: 'POST',
  headers: {
    'X-Api-Token':   apiToken,
    'Content-Type':  'application/json',
  },
  body: JSON.stringify({
    from: 'CompanyName',
    to:   '+37369000000',
    text: 'Ваш заказ №1042 принят.',
  }),
});

const { data } = await response.json();
console.log(data.id); // 787ab0aa-09cd-44f2-aa98-6ebc3cdb2ec6
const response = await fetch('https://api.sms.md/v3/messages/bulk', {
  method: 'POST',
  headers: {
    'X-Api-Token':   apiToken,
    'Content-Type':  'application/json',
  },
  body: JSON.stringify({
    from: 'CompanyName',
    recipients: ['+37369000001', '+37369000002'],
    text: 'Скидка 20% только сегодня!',
  }),
});
const { data } = await response.json();
console.log(`ID рассылки: ${data.bulkId}`);
const response = await fetch(
  `https://api.sms.md/v3/messages/${messageId}`,
  { headers: { 'X-Api-Token': apiToken } }
);
const { data } = await response.json();

if (data.status.name === 'Delivered') {
  console.log('Доставлено', data.dateUpdated);
}

Как начать за 3 шага

От регистрации до первого SMS

01

Зарегистрируйтесь

Создайте аккаунт на partner.sms.md. Заполните реквизиты компании и подпишите договор. Обработка — несколько часов. Пополните баланс от 500 MDL.

02

Получите API-ключ

Перейдите в личном кабинете в раздел Настройки → API. Скопируйте ключ и подайте заявку на регистрацию имени отправителя у операторов Молдовы за 1–2 рабочих дня.

03

Отправьте первый SMS

Используйте готовые примеры кода выше. Один POST-запрос — и ваше приложение умеет отправлять SMS.

Delivery Reports

Статусы доставки в реальном времени

Укажите DLR URL в Настройках → API — и мы отправим POST-запрос на ваш сервер при каждом изменении статуса SMS.

Queued Принято системой, ожидает отправки. Ещё не тарифицируется.
Sent Передано оператору для доставки. Тарифицируется.
Delivered Оператор подтвердил доставку получателю. Тарифицируется.
Undelivered Передано оператору, но доставить не удалось — фильтрация контента, недоступный телефон. Тарифицируется.
Failed Отклонено платформой или оператором до отправки — неверные параметры, номер, имя отправителя. Не тарифицируется.
Unknown Система не получила достоверного результата доставки. Тарифицируется, если сообщение было передано оператору.
POST your_server.com/dlr
// Входящий POST-запрос на ваш DLR URL
{
  "id":           "787ab0aa-09cd-44f2-aa98-6ebc3cdb2ec6",
  "phone":        "37369000000",
  "text":         "Ваш код: 4821",
  "status_id":    3,
  "status_name":  "Delivered",
  "date_created": "2026-03-24 14:32:11"
}
Ваш сервер отвечает
// HTTP 200 OK

Основные параметры

Все запросы — в JSON, ответы доступны в JSON

Параметр Тип Обязательный Описание
to string да Номер получателя — локальный без префикса (69123456) или с кодом страны (+37369123456)
from string да Имя отправителя до 15 символов, утвержденное операторами
text string да Текст сообщения, до 800 символов. 160 GSM-7 / 70 Unicode на один тарифицируемый сегмент
sendAt string нет Время отложенной отправки Y-m-d H:i:s по времени Молдовы. Без значения — немедленно

Популярные сценарии

Что строят разработчики с SMS.MD API

OTP / 2FA

Двухфакторная аутентификация, подтверждение операций, верификация при регистрации. Код доходит за секунды.

Банки E-commerce SaaS
Транзакционные уведомления

Статус заказа, подтверждение оплаты, уведомление о доставке, напоминания о записи — автоматически через API.

Логистика Медицина Финансы
Маркетинговые рассылки

Акции, реактивация базы, персонализированные офферы. Массовая отправка с аналитикой доставки в реальном времени.

Ретейл HoReCa Beauty

Начните отправлять SMS сегодня

Зарегистрируйтесь, пополните баланс и запустите первую рассылку за один рабочий день.

Только для юридических лиц РМ  ·  Минимальный депозит 500 MDL  ·  Без скрытых платежей