Аутентификация
Bearer-ключи с областями send, read или обеими; при необходимости с ограничением по IP. Тестовые ключи проверяют запрос и рассчитывают цену без отправки.
Authorization: Bearer sk_live_…ПодробнееДокументация
Один базовый URL, Bearer-ключи, предсказуемый JSON, идемпотентные операции записи и подписанные вебхуки. Воспользуйтесь поиском или выберите задачу; на каждой странице есть готовые примеры.
01Начало
message.delivered через несколько секунд.import os, requests
r = requests.post(
"https://api.smsmeteor.com/v1/messages",
headers={"Authorization": f"Bearer {os.environ['SMSMETEOR_KEY']}",
"Idempotency-Key": "order-4821"},
json={"to": "+14155550142", "from": "METEOR",
"text": "Ваш заказ №4821 отправлен."},
)
print(r.json()["id"], r.json()["price"])const r = await fetch("https://api.smsmeteor.com/v1/messages", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.SMSMETEOR_KEY}`,
"Idempotency-Key": "order-4821",
"Content-Type": "application/json",
},
body: JSON.stringify({ to: "+14155550142", from: "METEOR",
text: "Ваш заказ №4821 отправлен." }),
});
const { id, price } = await r.json();$ch = curl_init('https://api.smsmeteor.com/v1/messages');
curl_setopt_array($ch, [
CURLOPT_POST => true, CURLOPT_RETURNTRANSFER => true,
CURLOPT_HTTPHEADER => ['Authorization: Bearer ' . getenv('SMSMETEOR_KEY'),
'Idempotency-Key: order-4821', 'Content-Type: application/json'],
CURLOPT_POSTFIELDS => json_encode(['to' => '+14155550142',
'from' => 'METEOR', 'text' => 'Ваш заказ №4821 отправлен.']),
]);
$msg = json_decode(curl_exec($ch), true);curl https://api.smsmeteor.com/v1/messages \
-H "Authorization: Bearer $SMSMETEOR_KEY" \
-H "Idempotency-Key: order-4821" \
-d to="+14155550142" \
-d from="METEOR" \
-d text="Ваш заказ №4821 отправлен."02По задачам
window, pace и ограничения по времени для каждого направления.
Отслеживать доставкуПодписанные события для каждого изменения статуса с повторными попытками.
Получить таблицу тарифовВсе направления или одна страна, ключ не требуется.
Следить за балансомКонечная точка баланса и событие balance.low.
Обрабатывать ошибкиТринадцать стабильных кодов с указанием, какие запросы повторять, а какие исправлять.
Создать клиентФайл OpenAPI 3.1, типизированные клиенты и примеры на шести языках.
03Интерфейс
| Метод | Путь | Назначение | |
|---|---|---|---|
| POST | /v1/messages | Отправить одно сообщение | Справочник |
| POST | /v1/messages/batch | Отправить до 1 000 сообщений | Справочник |
| GET | /v1/messages/{id} | Статус, метки времени, цена, код оператора связи | Справочник |
| GET | /v1/messages | Список и фильтры, курсорная пагинация | Справочник |
| GET | /v1/rates | Публичная таблица тарифов для всех стран или одной страны | Справочник |
| GET | /v1/balance | Баланс, ожидающие пополнения, нижний порог | Справочник |
04Понятия
Bearer-ключи с областями send, read или обеими; при необходимости с ограничением по IP. Тестовые ключи проверяют запрос и рассчитывают цену без отправки.
Authorization: Bearer sk_live_…ПодробнееОдинаковые ключ и тело в течение 24 часов возвращают исходный ответ. Повторный запрос не отправляет сообщение дважды.
Idempotency-Key: order-4821ПодробнееИзменяются только вперёд. Списание происходит после статуса «Отправлено»; отклонённые сообщения не оплачиваются; срок действия — 48 часов.
В очередиОтправленоДоставленоОшибка
Подробнее50 запросов в секунду на ключ. При превышении: 429 с Retry-After. Для большого объёма используйте пакетную отправку, а не дополнительные ключи.
X-RateLimit-Remaining: 47ПодробнееЕдиный формат JSON, стабильный code, понятное сообщение и ошибочное field. Повторяйте 429 и 5xx; исправляйте 4xx.
{ "error": { "code": "invalid_number" } }ПодробнееКаждый ответ содержит цену сообщения из публичной таблицы тарифов. Без тарифных планов и уровней, как в панели.
"price": "0.0084", "currency": "USD"Таблица тарифов05Ресурсы