Начало работы
После создания ключа API и регистрации имени отправителя можно начинать интеграцию.
Авторизация
Все запросы требуют авторизации. Для этого необходимо передавать следующие заголовки:
Заголовок | Значение |
---|---|
login | Логин вашего аккаунта |
ts | Произвольная строка |
secret | md5(ts + '<API_KEY>') – md5 хеш от конкатенации поля ts и ключа API |
Проверьте авторизацию, используя метод GET /api/client/info
, который возвращает информацию об аккаунте:
- cURL
- PHP
- Node.js
- Python
curl "https://cp.redsms.ru/api/client/info" \
-H "login: <USERNAME>" \
-H "ts: ts-value-42" \
-H "secret: $(echo -n 'ts-value-42<API_KEY>' | md5sum | awk '{print $1}')"
# В OSX вместо команды md5sum необходимо использовать команду md5
$login = '<USERNAME>';
$ts = 'ts-value-' . time();
$api_key = '<API_KEY>';
$secret = md5($ts . $api_key);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://cp.redsms.ru/api/client/info');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'login: ' . $login,
'ts: ' . $ts,
'secret: ' . md5($ts . $api_key),
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$response_data = json_decode($response, true);
// print_r($info['http_code']);
// print_r($response_data);
const https = require('https');
const crypto = require('crypto');
const login = '<USERNAME>';
const apiKey = '<API_KEY>';
const ts = `ts-value-${Date.now()}`;
const secret = crypto.createHash('md5').update(ts + apiKey).digest('hex');
(new Promise((resolve, reject) => {
const request = https.request(
{
host: 'cp.redsms.ru',
path: '/api/client/info',
headers: {
login,
ts,
secret,
},
},
(response) => {
const buffers = [];
response.on('error', reject);
response.on('data', (buffer) => buffers.push(buffer));
response.on('end', () => {
const responseBody = Buffer.concat(buffers).toString();
const responseData = JSON.parse(responseBody);
if (response.statusCode !== 200) {
return reject(responseData);
}
resolve(responseData);
));
},
);
request.end();
}))
.then(console.log)
.catch(console.error);
import hashlib
import time
import requests
login = '<USERNAME>'
ts = unicode(time.time())
api_key = '<API_KEY>'
secret = hashlib.md5((ts + api_key).encode()).hexdigest()
headers = {
'login': login,
'ts': ts,
'secret': secret
}
r = requests.get('https://cp.redsms.ru/api/client/info', headers=headers)
# print(r.json())
Пример успешного ответа:
{
"info": {
"login": "<USERNAME>",
"balance": 3950.14,
"active": true
},
"success": true
}
В случае ошибки проверьте значения URL и заголовков запроса.
Отправка сообщения
После успешной авторизации, попробуйте отправить тестовое сообщение.
Для этого используйте метод POST /api/message
:
- cURL
- PHP
- Node.js
- Python
curl -X POST "https://cp.redsms.ru/api/message" \
-H "login: <USERNAME>" \
-H "ts: ts-value-42" \
-H "secret: $(echo -n 'ts-value-42<API_KEY>' | md5sum | awk '{print $1}')" \
-H "Content-type: application/json" \
-d '{
"route": "sms",
"from": "<SENDER_NAME>",
"to": "+79993332211",
"text": "Привет, мир!"
}'
# В OSX вместо команды md5sum необходимо использовать команду md5
$login = '<USERNAME>';
$ts = 'ts-value-' . time();
$api_key = '<API_KEY>';
$secret = md5($ts . $api_key);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://cp.redsms.ru/api/message');
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'login: ' . $login,
'ts: ' . $ts,
'secret: ' . $secret,
'Content-type: application/json'
]);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode([
'route' => 'sms',
'from' => '<SENDER_NAME>',
'to' => '+79993332211',
'text' => 'Привет, мир!'
]));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$response_data = json_decode($response);
// print_r($info['http_code']);
// print_r($response_data);
const https = require('https');
const crypto = require('crypto');
const login = '<USERNAME>';
const ts = `ts-value-${Date.now()}`;
const apiKey = '<API_KEY>';
const secret = crypto.createHash('md5').update(ts + apiKey).digest('hex');
(new Promise((resolve, reject) => {
const body = JSON.stringify({
route: 'sms',
from: '<SENDER_NAME>',
to: '+79993332211',
text: 'Привет, мир!',
});
const request = https.request(
{
method: 'POST',
host: 'cp.redsms.ru',
path: '/api/message',
headers: {
login,
ts,
secret,
'Content-Length': Buffer.byteLength(body),
'Content-Type': 'application/json',
},
},
(response) => {
const buffers = [];
response.on('error', reject);
response.on('data', (buffer) => buffers.push(buffer));
response.on('end', () => {
const responseBody = Buffer.concat(buffers).toString();
const responseData = JSON.parse(responseBody);
if (response.statusCode !== 200) {
return reject(responseData);
}
resolve(responseData);
));
},
);
request.write(body);
request.end();
}))
.then(console.log)
.catch(console.error);
import hashlib
import json
import requests
import time
login = '<USERNAME>'
ts = unicode(time.time())
api_key = '<API_KEY>'
secret = hashlib.md5((ts + api_key).encode()).hexdigest()
headers = {
'login': login,
'ts': ts,
'secret': secret,
'Content-type': 'application/json',
}
data = {
'route': 'sms',
'from': '<SENDER_NAME>',
'to': '+79993332211',
'text': 'Привет, мир!'
}
r = requests.post('https://cp.redsms.ru/api/message', headers=headers, data=json.dumps(data))
# print(r.status_code)
# print(r.text)
Вместо <SENDER_NAME>
введите название вашего имени отправителя, например MyCompany
.
Пример успешного ответа:
{
"items": [
{
"uuid": "0f9a4cfa-8bed-11ee-94af-0242c0a86496",
"status": "created",
"status_time": 1703956078,
"to": "+79993332211"
}
],
"errors": [],
"count": 1,
"success": true
}
Получение информации о сообщении
После успешной отправки сообщения можно начать опрашивать статус его доставки, используя метод GET /api/message/{uuid}
:
- cURL
- PHP
- Node.js
- Python
curl "https://cp.redsms.ru/api/message/<UUID>" \
-H "login: <USERNAME>" \
-H "ts: ts-value-42" \
-H "secret: $(echo -n 'ts-value-42<API_KEY>' | md5sum | awk '{print $1}')"
# В OSX вместо команды md5sum необходимо использовать команду md5
$login = '<USERNAME>';
$ts = 'ts-value-' . time();
$api_key = '<API_KEY>';
$secret = md5($ts . $api_key);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, 'https://cp.redsms.ru/api/message/<UUID>');
curl_setopt($ch, CURLOPT_HTTPHEADER, [
'login: ' . $login,
'ts: ' . $ts,
'secret: ' . md5($ts . $api_key),
]);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$response = curl_exec($ch);
$info = curl_getinfo($ch);
curl_close($ch);
$response_data = json_decode($response, true);
// print_r($info['http_code']);
// print_r($response_data);
const https = require('https');
const crypto = require('crypto');
const login = '<USERNAME>';
const apiKey = '<API_KEY>';
const ts = `ts-value-${Date.now()}`;
const secret = crypto.createHash('md5').update(ts + apiKey).digest('hex');
(new Promise((resolve, reject) => {
const request = https.request(
{
host: 'cp.redsms.ru',
path: '/api/message/<UUID>',
headers: {
login,
ts,
secret,
},
},
(response) => {
const buffers = [];
response.on('error', reject);
response.on('data', (buffer) => buffers.push(buffer));
response.on('end', () => {
const responseBody = Buffer.concat(buffers).toString();
const responseData = JSON.parse(responseBody);
if (response.statusCode !== 200) {
return reject(responseData);
}
resolve(responseData);
));
},
);
request.end();
}))
.then(console.log)
.catch(console.error);
import hashlib
import time
import requests
login = '<USERNAME>'
ts = unicode(time.time())
api_key = '<API_KEY>'
secret = hashlib.md5((ts + api_key).encode()).hexdigest()
headers = {
'login': login,
'ts': ts,
'secret': secret
}
r = requests.get('https://cp.redsms.ru/api/message/<UUID>', headers=headers)
# print(r.json())
Вместо <UUID>
укажите значение, полученное в результате создания сообщения.
Рекомендуемый интервал опроса статуса сообщения – 5 секунд.
Пример ответа:
{
"item": {
"uuid": "0f9a4cfa-8bed-11ee-94af-0242c0a86496",
"status": "delivered",
"status_time": 1700956086
},
"success": true
}
Используя описанные методы API вы сможете реализовать любые пользовательские сценарии.