REST API для интеграции с SMSp.by

Есть вопросы?

Конфиденциальность информации гарантирована

API от SMSp.by для массовой SMS и Viber-рассылки – Быстро, легко, эффективно

Подробную документацию по всему API можно скачать по этой ссылке. Если необходимой функции нет, можем ее добавить для Вас.

Быстрая интеграция

Наше API разработано для быстрой и легкой интеграции, позволяя вам начать отправку SMS и Viber всего за несколько минут.

Глобальное покрытие

Достигните своих клиентов в любой точке мира с нашим глобальным охватом и высокой доставляемостью.

Надежность и масштабируемость

Наше API способно обрабатывать любые объемы рассылок, обеспечивая быструю и надежную доставку сообщений.

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

Мы придаем большое значение безопасности ваших данных и конфиденциальности сообщений.

Простота использования

  • Пакетная отправка SMS: Отправляйте сотни или тысячи SMS одновременно.
  • Персонализация сообщений: Добавьте личное имя в каждое сообщение.
  • Отчеты в реальном времени: Отслеживайте статус доставки ваших сообщений.
$url = 'https://cabinet.smsp.by/api/';  // URL сервиса
$func = 'msg_send_bulk';                // имя вызываемой функции

// Формируем пакет сообщений
$package = [
    ['recipient' => '39624456789', 'message'   => 'Первое тестовое сообщение. Срочное, с подписью', 'sender'    => 'MyCompany'],
    ['recipient' => '39624746363', 'message'   => 'Второе тестовое сообщение. Обычное, с custom_id', 'custom_id' => '111']
];

// Инициализируем cURL
$ch = curl_init($url);

// Задаем параметры cURL
curl_setopt_array($ch, [
    CURLOPT_RETURNTRANSFER => 1,
    CURLOPT_POST           => 1,
    CURLOPT_POSTFIELDS     => [
        'r'        => 'api/' . $func,
        'user'     => 'some@mail.com',
        'apikey'   => 'ABC123',
        'messages' => json_encode($package)
    ],
    CURLOPT_TIMEOUT        => 15
]);

// Получаем ответ
$result = curl_exec($ch);

if ($result === false) {
    echo 'Ошибка cURL: ' . curl_error($ch);
} else {
    $result = json_decode($result);
    echo $result->status . "\n";
    echo print_r($result, true);
}

// Закрываем cURL
curl_close($ch);
    
import requests
import json

# Формируем пакет сообщений
package = [
    {'recipient': '39624456789', 'message': 'Первое тестовое сообщение.', 'sender': 'MyCompany'},
    {'recipient': '39624746363', 'message': 'Второе тестовое сообщение.', 'custom_id': '111'}
]

# Отправляем POST-запрос
response = requests.post(
    'https://cabinet.smsp.by/api/',
    data={
        'r': 'api/msg_send_bulk',
        'user': 'some@mail.com',
        'apikey': 'ABC123',
        'messages': json.dumps(package)
    }
)

# Выводим результат
print(response.json())
    
package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io/ioutil"
	"net/http"
)

// Message представляет структура для описания сообщения.
type Message struct {
	Recipient string `json:"recipient"`
	Message   string `json:"message"`
	Sender    string `json:"sender,omitempty"`
	CustomID  string `json:"custom_id,omitempty"`
}

func main() {
	url := "https://cabinet.smsp.by/api/"
	funcName := "msg_send_bulk"

	messages := []Message{
		{Recipient: "39624456789", Message: "Первое тестовое сообщение.", Sender: "MyCompany"},
		{Recipient: "39624746363", Message: "Второе тестовое сообщение.", CustomID: "111"}
	}

	jsonData, err := json.Marshal(messages)
	if err != nil {
		fmt.Printf("Ошибка при кодировании сообщений: %s\n", err)
		return
	}

	// Формируем данные для отправки с запросом
	reqData := bytes.NewBuffer([]byte(fmt.Sprintf("r=api/%s&user=some@mail.com&apikey=ABC123&messages=%s", funcName, jsonData)))

	req, err := http.NewRequest("POST", url, reqData)
	if err != nil {
		fmt.Printf("Ошибка при создании запроса: %s\n", err)
		return
	}

	req.Header.Set("Content-Type", "application/x-www-form-urlencoded")

	// Отправляем запрос
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		fmt.Printf("Ошибка при выполнении запроса: %s\n", err)
		return
	}
	defer resp.Body.Close()

	// Читаем ответ
	body, err := ioutil.ReadAll(resp.Body)
	if err != nil {
		fmt.Printf("Ошибка при чтении ответа: %s\n", err)
		return
	}

	// Выводим результат
	fmt.Println(string(body))
}
    
require 'net/http'
require 'json'
require 'uri'

url = URI('https://cabinet.smsp.by/api/')

# Формируем пакет сообщений
messages = [
  { recipient: '39624456789', message: 'Первое тестовое сообщение.', sender: 'MyCompany' },
  { recipient: '39624746363', message: 'Второе тестовое сообщение.', custom_id: '111' }
]

# Подготавливаем данные для POST-запроса
request_body = {
  'r' => 'api/msg_send_bulk',
  'user' => 'some@mail.com',
  'apikey' => 'ABC123',
  'messages' => messages.to_json
}

# Создаем запрос
http = Net::HTTP.new(url.host, url.port)
http.use_ssl = true
request = Net::HTTP::Post.new(url)
request.set_form_data(request_body)

# Отправляем запрос
begin
  response = http.request(request)
  puts response.body
rescue => e
  puts "Произошла ошибка: #{e.message}"
end
    
const https = require('https');
const querystring = require('querystring');

// Формируем пакет сообщений
const messages = [
  { recipient: '39624456789', message: 'Первое тестовое сообщение.', sender: 'MyCompany' },
  { recipient: '39624746363', message: 'Второе тестовое сообщение.', custom_id: '111' }
];

// Подготавливаем данные для POST-запроса
const postData = querystring.stringify({
  'r': 'api/msg_send_bulk',
  'user': 'some@mail.com',
  'apikey': 'ABC123',
  'messages': JSON.stringify(messages)
});

// Опции для запроса
const options = {
  hostname: 'cabinet.smsp.by',
  port: 443,
  path: '/api/',
  method: 'POST',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded',
    'Content-Length': Buffer.byteLength(postData)
  }
};

// Создаем запрос
const req = https.request(options, (res) => {
  console.log(`STATUS: ${res.statusCode}`);
  console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
  res.setEncoding('utf8');
  res.on('data', (chunk) => {
    console.log(`BODY: ${chunk}`);
  });
  res.on('end', () => {
    console.log('No more data in response.');
  });
});

req.on('error', (e) => {
  console.error(`problem with request: ${e.message}`);
});

// Пишем данные в тело запроса
req.write(postData);
req.end();

    
using System;
using System.Net.Http;
using System.Text;
using System.Threading.Tasks;
using Newtonsoft.Json;

namespace HttpPostExample
{
    class Program
    {
        static readonly HttpClient client = new HttpClient();

        static async Task Main(string[] args)
        {
            // Формируем пакет сообщений
            var messages = new[]
            {
                new { recipient = "39624456789", message = "Первое тестовое сообщение.", sender = "MyCompany" },
                new { recipient = "39624746363", message = "Второе тестовое сообщение.", custom_id = "111" }
            };

            // Подготавливаем данные для POST-запроса
            var postData = new
            {
                r = "api/msg_send_bulk",
                user = "some@mail.com",
                apikey = "ABC123",
                messages = messages
            };

            // Конвертируем данные в JSON
            string json = JsonConvert.SerializeObject(postData);
            StringContent content = new StringContent(json, Encoding.UTF8, "application/json");

            try
            {
                // Отправляем POST-запрос
                HttpResponseMessage response = await client.PostAsync("https://cabinet.smsp.by/api/", content);
                response.EnsureSuccessStatusCode();
                string responseBody = await response.Content.ReadAsStringAsync();

                // Выводим результат
                Console.WriteLine(responseBody);
            }
            catch (HttpRequestException e)
            {
                // Обработка ошибок запроса
                Console.WriteLine("\nException Caught!");
                Console.WriteLine("Message :{0} ", e.Message);
            }
        }
    }
}

    

Соглашение об обработке персональных данных

Данное соглашение об обработке персональных данных разработано в соответствии с законодательством Республики Беларусь.

Все лица заполнившие сведения, составляющие персональные данные на данном сайте, а также разместившие иную информацию обозначенными действиями подтверждают свое согласие на обработку персональных данных и их передачу оператору обработки персональных данных.

Под персональными данными Гражданина понимается нижеуказанная информация: общая информация (Имя, телефон и адрес электронной почты); посетители сайта направляют свои персональные данные для получения информации.

Гражданин, принимая настоящее Соглашение, выражают свою заинтересованность и полное согласие, что обработка их персональных данных может включать в себя следующие действия: сбор, систематизацию, накопление, хранение, уточнение (обновление, изменение), использование, уничтожение.

Гражданин гарантирует: информация, им предоставленная, является полной, точной и достоверной; при предоставлении информации не нарушается действующее законодательство Республики Беларусь, законные права и интересы третьих лиц; вся предоставленная информация заполнена Гражданина в отношении себя лично.


Ошибка


Сообщение