Відправка повідомлень
Чтобы начать работу с нашим сервисом по HTTP API, сделайте следующее:
1. Пополните ваш баланс, если он на нуле;
2. Создайте новый API-ключ. Вы можете иметь до 5 ключей, создавая и удаляя их по вашему усмотрению в любое время;
3. Укажите IP (один, несколько, или диапазон), с которого будут приходить сообщения.
Адрес HTTP API:
http://api.sms.beeway.com.ua/message/send/
Параметры:
username – обязательный.
api_key – обязательный.
from – обязательный, адрес отправителя. Mожет состоять из максимум 11 английских букв и цифр (допускаются также символы “._- “), или из максимум 15 цифр.
to – обязательный, номер телефона получателя, в международном формате, без “+”. Mожно указать несколько номеров, разделенных запятой (“,”), им придут одинаковые сообщения.
message – обязательный, текст сообщения, utf-8 url-encoded. Длинный текст будет разбит на несколько смс (максимум 4 части), цена сообщения возрастёт пропорционально количеству частей.
priority – доп. параметр, задаёт приоритет сообщения при постановке в очередь и передаче внешним смс-центрам. integer от 0 (обычный приоритет) до 3 (наивысший), по умолчанию 0.
system_type – доп. параметр, строка из английских букв или цифр, до 8 символов длиной, позволяет логически группировать сообщения в статистике.
deferred – доп. параметр, отложенная отправка сообщения, указывается дата и время когда нужно отправить сообщение (формат: ГГГГ-ММ-ДД ЧЧ:ММ).
Пример запроса:
curl “http://api.sms.beeway.com.ua/message/send/?username=foo&api_key=bar&from=test&to=7123456789&message=Test+123
Пример ответа:
{“reply”: [{“status”: “OK”, “cost”: “0.123456”, “country”: “ru”, “mccmnc”: “250XX”, “number”: “7123456789”, “parts”: 1, “message_id”: “3c32257b-e0b8-4be9-b0e6-e871116b4bdf”}]}
Ответ сервера (JSON):
Значения полей по всему запросу:
{‘reply’:[{‘status’: ‘error: wrong username/api_key’}]} – ошибка авторизации (введен неправильный логин или API Key).
{‘reply’:[{‘status’: ‘error: wrong api key’}]} – API-ключ не подходит.
{‘reply’:[{‘status’: ‘error: bruteforcing detected’}]} – было обнаружено слишком много неавторизованных запросов, данный IP будет заблокирован на 5 минут.
{‘reply’:[{‘status’: ‘error: ip not allowed’}]} – попытка отправки с незарегистрированного IP.
{‘reply’:[{‘status’: “error: can’t send message”}]} – отсутствуют параметры “message” или “to”, отправка невозможна.
{‘reply’: [{‘status’: ‘error: message is too long’}]} – длина сообщения превышает разрешенное кол-во частей смс (4)
{‘reply’:[{‘status’: “error: sender addr is banned”}]} – имя отправителя заблокировано как спам. За разъяснениями обратитесь в техническую поддержку.
{‘reply’:[{‘status’: ‘error: wrong sender addr’}]} – параметр “from” превышает 15 цифр или 11 букво-цифр.
Значения полей по каждому номеру в запросе:
{“reply”: [{“number”: “7123456789”, “status”: “error: number is blacklisted”}]} – номер телефона получателя был внесён в чёрный список. За разъяснениями обратитесь в техническую поддержку.
{“reply”: [{‘number’: ‘7123456789’, ‘status’: “error: repeat detected”}]} – обнаружено и заблокировано повторное сообщение на один и тот же номер в течении 1 минуты.
{‘reply’:[{‘number’:’7123456789′, ‘status’:”error: can’t determine country”}]} – невозможно определить страну.
{‘reply’:[{‘number’:’7123456789′, ‘status’:”error: no route to country”}]} – данная страна не прописана в таблице роутинга на вашем аккаунте, следует обратиться к менеджеру.
{‘reply’:[{‘number’:’7123456789′, ‘status’:”error: route can’t handle the message”}]} – причина может быть в отсутствии поддержки некоторых цифровых подписей (шорткодов) в параметре “from” некоторыми смс-провайдерами, или в отсутствии поддержки определенного оператора по некоторым странам.
{‘reply’:[{‘number’:’7123456789′, ‘status’:”error: low balance”, ‘parts’:1, ‘cost’:’0.04′}]} – недостаточно средств для отправки сообщения.
Ответ сервера при успешной постановке сообщения в очередь:
{“reply”: [{“status”: “OK”, “cost”: “0.186440”, “country”: “ru”, “mccmnc”: “250XX”, “number”: “7123456789”, “parts”: 1, “message_id”: “3c32257b-e0b8-4be9-b0e6-e871116b4bdf”}]} – смс была успешно отправлена!
Значения полей:
status – статус отправки, “OK” означает, что сообщение было корректно обработано и поставлено в очередь на отправку внешнему смс-провайдеру.
parts – количество смс, на которые было разбито сообщение.
cost – стоимость смс в на данный номер (учитывая parts).
number – номер, для которого передается статус. если номеров несколько, то для каждого будет свой хэш “{}” внутри списка “reply”.
message_id – id сообщения, присвоенный системой. будет передаваться в асинхронных вызовах обработчика статусов.
country – двухбуквенный код страны, см Список кодов по ISO 3166
mccmnc – код оператора, см. Mobile Country Code
Асинхронная передача статуса сообщений
При необходимости, система может совершать GET или POST запросы на некий URL, записанный в вашем профиле. В запросах будут передаваться статусы сообщений, по мере их доставки абонентам.
Наш запрос передает следующие параметры:
msgid – ID, которое наша система присвоила сообщению при отправке. Например, f3e76f4e-d4e3-424b-b26b-c0ebc72892cd
status – статус доставки. Может иметь значения:
delivrd – сообщение доставлено.
unknown , rejectd , expired , undeliv , deleted – сообщение не доставлено.
dlr_timestamp – время прибытия статуса в систему от внешнего смс-центра, в часовом поясе UTC.
Синхронная проверка статуса сообщения
URL (GET или POST запрос):
http://api.sms.beeway.com.ua/message/status/
Параметры:
- username – обязательный
- api_key – обязательный.
- requests – обязательный, один или несколько msg_ids, разделенных запятыми.
- timeformat – опциональный, urlencoded. Задаёт форматирование для даты. Используются символы из таблицы форматирования даты языка Python. Если параметр не задан, дата не передаётся в ответе сервера.
Например, timeformat=%d/%m/%Y %H:%M:%S выдаст дату в виде 17/02/2013 19:08:29
timezone – опциональный, urlencoded. Задаёт часовой пояс даты, см список часовых поясов. Если параметр не задан, то будет использован часовой пояс из вашего профиля.
Пример запроса:
curl “http://api.sms.beeway.com.ua/message/status/?username=foo&api_key=bar&requests=3c32257b-e0b8-4be9-b0e6-e871116b4bdf&timezone=UTC&timeformat=%25d-%25m-%25Y%20%25H:%25M:%25ST%25z”
Пример ответа:
{“3c32257b-e0b8-4be9-b0e6-e871116b4bdf”: {“date”: “17-02-2013 12:08:29T+0000”, “status”: “rejectd”}}
Проверка баланса
URL (GET или POST запрос):
Параметры:
- username – обязательный.
api_key – обязательный.
Пример запроса:
curl “http://api.sms.beeway.com.ua/balance/?username=foo&api_key=bar”
Пример ответа:
{“balance”: “-0.42”}
Возвращает баланс аккаунта, в .
Проверка кредита
URL (GET или POST запрос):
http://api.sms.beeway.com.ua/credit/
Параметры:
username – обязательный.
api_key – обязательный.
Пример запроса:
curl “http://api.sms.beeway.com.ua/credit/?username=foo&api_key=bar”
Пример ответа:
{“credit”: “1.23”}
Возвращает кредит аккаунта, в .
Тарифы
URL (GET или POST запрос):
http://api.sms.beeway.com.ua/rates/
Параметры:
username – обязательный.
api_key – обязательный.
Пример запроса:
curl “http://api.sms.beeway.com.ua/rates/?username=foo&api_key=bar”
Ответ сервера (JSON):
Значения полей по всему запросу:
{‘message’: ‘Invalid auth’, ‘error’: true} – ошибка авторизации (введен неправильный логин или API Key).
{‘message’: ‘bruteforcing detected’, ‘error’: true} – было обнаружено слишком много неавторизованных запросов, данный IP будет заблокирован на 5 минут.
{‘message’: ‘ip not allowed’, ‘error’: true} – попытка отправки с незарегистрированного IP.
Ответ сервера при успешном запросе:
{“user”: {“sms”: {“ru”: {“01”: [0.123456, 0], “”: [0.234567, 0]}}}}
Значения полей:
{
"user": { # логин/username
"sms": { # канал
"ru": { # двухбуквенный ISO код страны
"01": [ # MNC оператора
0.123456, # стоимость за 1 смс
0 # 0: плата снимается за все смс, 1: плата снимается только за доставленные
],
"": [ # пустой ключ - все операторы
0.123456,
0
]
}
}
}
}
Описание | HTTP запрос для получения списка шаблонов текста |
Адрес | http://api.sms.beeway.com.ua/template/list/ http://api.sms.beeway.com.ua/template/sms/list/ http://api.sms.beeway.com.ua/template/viber/list/ |
Метод | GET |
Параметры | username | обязательный | Логин в нашей системе api_key | обязательный | API-ключ в нашей системе |
Пример запроса | curl http://api.sms.beeway.com.ua/template/list/?username=foo&api_key=bar |
Пример ответа | { “template_list”: { “items”: [ { “id”: 1, // integer “name”: “Some name”, // text “text”: “some text”, // text “channel”: “sms”, // text }, … ], “paging”: { “count”: 220, // всего найденных записей “page”: 1, // текущая страница “pages”: 3, // всего страниц “per_page”: 100, // количество записей на странице “has_next”: true, // есть ли следующая страница “has_previous”: false, // есть ли предыдущая страница }, “filter”: { “channel”: “”, // фильтрация по каналу } } } |
Описание | HTTP запрос для получения списка сообщений с детальной информацией |
Адрес | http://api.sms.beeway.com.ua/message/sms/list/ http://api.sms.beeway.com.ua/message/viber/list/ |
Метод | GET |
Параметры | Параметр | Описание | username | обязательный | Логин в нашей системе api_key | обязательный | API-ключ в нашей системе msg_id | необязательный | ID сообщения number | необязательный | Номер получателя sender | необязательный | Адрес отправителя country | необязательный | Страна получателя mccmnc | необязательный | MCCMNC получателя job | необязательный | Рассылка (если сообщение было отправлено с Личного кабинета) status | необязательный | Статус доставки сообщения. Допустимые значения: “delivered”, “pending”, “accepted”, “undelivered”, “rejected”, “acceptd”, “rejectd”, “delivrd”, “undeliv”, “expired”, “deleted”, “unknown”. date_time_from | необязательный | Дата и время, с которого начать отбор сообщений date_time_to | необязательный | Дата и время, на котором закончить отбор сообщений |
Пример запроса | curl http://api.sms.beeway.com.ua/message/sms/list/?username=foo&api_key=bar |
Пример ответа | { “message_list”: { “items”: [ { “msg_id”: 1, // uuid4 “number”: “7123456789”, // text – номер получателя “sender”: “SomeSender”, // text – адрес отправителя “text”: “some text”, // text – текст сообщения “country”: “Russia”, // text “mccmnc”: “255XX”, // text “status”: “delivrd”, // text – статус сообщения “date_sent”: “2000-01-01 12:34:56”, // text – дата отправки “date_dlr”: “2000-01-01 12:35:00”, // text – дата получения статуса “price”: “0.123456”, // text – цена “currency”: “EUR”, // text – валюта }, … ], “paging”: { “count”: 220, // всего найденных записей “page”: 1, // текущая страница “pages”: 3, // всего страниц “per_page”: 100, // количество записей на странице “has_next”: true, // есть ли следующая страница “has_previous”: false, // есть ли предыдущая страница }, “filter”: { “msg_id”: “”, // поиск по ID сообщения “number”: “”, // фильтрация по номеру получателя “sender”: “”, // фильтрация по адресу отправителя “country”: “”, // фильтрация по стране “mccmnc”: “”, // фильтрация по MCCMNC “job”: “”, // фильтрация по рассылке “status”: “”, // фильтрация по статусу “date_time_from”: “”, // фильтрация начиная с даты и времени “date_time_to”: “”, // фильтрация до даты и времени } } } |
Описание | HTTP запрос для получения отчета по сообщениям |
Адрес | http://api.sms.beeway.com.ua/report/sms/ http://api.sms.beeway.com.ua/report/viber/ |
Метод | GET |
Параметры | Параметр | Описание | username | обязательный | Логин в нашей системе api_key | обязательный | API-ключ в нашей системе date_from | обязательный | Дата начала отчета. Формат: YYYY-MM-DD. date_to | обязательный | Дата конца отчета. Формат: YYYY-MM-DD. country | необязательный | Страна получателя status | необязательный | Статус доставки сообщения. Допустимые значения: “delivered”, “failed”. order_by | необязательный | Сортировка результатов. Допустимые значения: “asc”, “desc”. По умолчанию: “asc”. group_by_date | необязательный | Группировка по дате. Допустимые значения: “day”, “month”, “year”. По умолчанию: “month”. group_by_fields | необязательный | Группировка по полям. Допустимые значения: “country”, “mccmnc”, “status”. Возможно использовать все значения, пример: group_by_fields=country&group_by_fields=mccmnc |
Пример запроса | curl http://api.sms.beeway.com.ua/report/sms/list/?username=foo&api_key=bar |
Пример ответа | { “report”: { “items”: [ { “date”: “2000-01-01”, // date (format: YYYY-MM-DD) “parts”: 1, // text – количество частей сообщений “price”: 0.123456, // text – цена “currency”: “EUR”, // text – валюта }, … ], “total”: { “parts”: 100, // int – общее количество частей сообщений “price”: 12.3456, // float – общая цена “currency”: “EUR”, // text – валюта }, “paging”: { “count”: 220, // всего найденных записей “page”: 1, // текущая страница “pages”: 3, // всего страниц “per_page”: 100, // количество записей на странице “has_next”: true, // есть ли следующая страница “has_previous”: false, // есть ли предыдущая страница }, “filter”: { “date_from”: “”, // дата начала отчета “date_to”: “”, // дата конца отчета “country”: “”, // фильтрация по стране “status”: “”, // фильтрация по статусу “order_by”: “”, // сортировка результатов “group_by_date”: “”, // группировка результатов “group_by_fields”: “”, // группировка по полям } } } |