Voximplant Management API API

Отрасль: Связь и уведомления. Актуально на 2026-10-24.

HTTP API облачной коммуникационной платформы Voximplant для управления аккаунтом: приложения, пользователи, правила и сценарии, запуск сценариев (звонки, конференции), обзвоны по спискам (call lists), телефонные номера, SMS, история звонков, очереди и SmartQueue, ключи и роли. Все методы вызываются POST-запросом на один адрес; имя метода передаётся параметром cmd, остальные параметры — полями формы. Описание собрано по официальным клиентским библиотекам Voximplant (Python и Node.js).

Сценарии

Позвонить клиенту из своей системы

Звонок по кнопке в CRM или по событию: напоминание о записи, подтверждение заказа. Логика звонка живёт в JavaScript-сценарии Voximplant, API его запускает.

  1. Создай сервисный аккаунт в панели управления (Settings → Service accounts) и скачай JSON с account_id, key_id и private_key.
  2. На каждый запрос подписывай короткоживущий JWT алгоритмом RS256: iss = account_id, iat и exp (около минуты), в заголовке токена kid = key_id. Передавай его в заголовке Authorization: Bearer .
  3. Проверь доступ: GetAccountInfo — вернёт account_id и баланс.
  4. Запусти сценарий: StartScenarios с rule_id (правило с привязанным сценарием) и script_custom_data — например, номером клиента; в сценарии он доступен через VoxEngine.customData().
  5. Все методы — POST на https://api.voximplant.com/platform_api с параметром cmd и остальными полями формы. Ошибка приходит в объекте error с code и msg.
import json, time, jwt, requests  # pip install pyjwt cryptography requests

creds = json.load(open("credentials.json"))

def vox(cmd: str, **params) -> dict:
    now = int(time.time())
    token = jwt.encode({"iss": creds["account_id"], "iat": now, "exp": now + 60},
                       creds["private_key"], algorithm="RS256", headers={"kid": creds["key_id"]})
    r = requests.post("https://api.voximplant.com/platform_api",
                      headers={"Authorization": f"Bearer {token}"}, data={"cmd": cmd, **params}).json()
    if "error" in r:
        raise RuntimeError(r["error"])
    return r

print(vox("StartScenarios", rule_id=123456, script_custom_data=json.dumps({"phone": "79991234567", "order": "1042"})))

Автообзвон по списку номеров

Напоминания, опросы, информирование — сценарий звонит по каждому номеру из CSV с повторными попытками.

  1. Подготовь CSV с разделителем «;»: первая строка — названия колонок (например, phone;name), дальше — по строке на номер. Данные строки доступны в сценарии.
  2. Создай список: CreateCallList с rule_id, priority, max_simultaneous (сколько звонков одновременно), num_attempts (1–5), name и file_content — содержимым CSV. Обзвон стартует сразу или в start_at.
  3. Между попытками задай паузу interval_seconds. В ответе — list_id.
  4. Следи за ходом: GetCallLists с list_id. Остановить обзвон — StopCallListProcessing с list_id.
csv_content = "phone;name\n79991234567;Иван\n79991234568;Анна\n"
r = vox("CreateCallList", rule_id=123456, priority=0, max_simultaneous=5, num_attempts=3,
        interval_seconds=600, name="reminders-2026-10-25.csv", file_content=csv_content)
print(r["list_id"])
print(vox("GetCallLists", list_id=r["list_id"]))

Отправить SMS с номера Voximplant

SMS клиенту с купленного в Voximplant номера.

  1. Найди номер с поддержкой SMS: GetPhoneNumbers — у подходящего номера is_sms_supported = true.
  2. Включи SMS на номере (один раз): ControlSms с phone_number и command = enable.
  3. Отправь: SendSmsMessage с source (твой номер), destination и sms_body — до 765 символов (сегменты по 70 символов кириллицы). В ответе message_id и fragments_count.
vox("ControlSms", phone_number="74951234567", command="enable")
print(vox("SendSmsMessage", source="74951234567", destination="79991234567",
          sms_body="Ваша запись подтверждена: 25.10 в 14:00"))

Выгрузить историю звонков

Длительность, стоимость, записи разговоров — для отчётов и контроля качества.

  1. Запроси историю: GetCallHistory с from_date и to_date в формате YYYY-MM-DD HH:mm:ss и timezone. Без дат вернётся последний месяц.
  2. Чтобы получить отдельные звонки и записи разговоров, передай with_calls = true и with_records = true.
  3. За запрос — до 1000 сессий (count), дальше листай через offset.
  4. Фильтры по номерам клиентов — remote_number, по приложению — application_id; несколько значений — через «;».
h = vox("GetCallHistory", from_date="2026-10-01 00:00:00", to_date="2026-10-24 23:59:59",
        timezone="Europe/Moscow", with_calls="true", with_records="true", count=1000, offset=0)
for session in h["result"]:
    print(session["call_session_history_id"], session.get("duration"))

Создать приложение и пользователя для звонков из браузера или приложения

Сотрудник звонит клиентам прямо из веб-интерфейса CRM через Web SDK Voximplant.

  1. Создай приложение: AddApplication с application_name в формате [a-z][a-z0-9-]{1,64}.
  2. Создай пользователя: AddUser с user_name, user_display_name, user_password (от 8 символов, с заглавной и строчной буквой, цифрой и спецсимволом) и application_id или application_name.
  3. Проверь, что всё на месте: GetApplications с application_id и with_rules — увидишь правила и сценарии приложения.
  4. В веб-интерфейсе пользователь входит в Web SDK с этим именем и паролем и может принимать и совершать звонки по правилам приложения.
app = vox("AddApplication", application_name="crm-calls")
vox("AddUser", user_name="manager-101", user_display_name="Иван Петров",
    user_password="Str0ng!Passw0rd", application_id=app["application_id"])

Базовые URL

Авторизация

Тип: Bearer-токен

Сервисный аккаунт: JSON-файл с ключом (account_id, key_id, private_key) создаётся в панели управления (https://manage.voximplant.com/settings/service_accounts) или методом CreateKey. Клиент подписывает JWT алгоритмом RS256 (iss — ID аккаунта, iat, exp; в заголовке токена kid — key_id) и передаёт его в заголовке Authorization: Bearer <token>. Токен короткоживущий (в библиотеках — около минуты), его генерируют на каждый запрос.

Методы

POST /platform_api — GetAccountInfo: информация об аккаунте

В ответе — account_id, account_name, account_email и др.

Параметр Где Тип Обяз. Описание
cmd body string да GetAccountInfo
return_live_balance body boolean нет Вернуть актуальный баланс

POST /platform_api — StartScenarios: запуск сценария

Запускает JavaScript-сценарий в новой медиасессии по правилу маршрутизации. В ответе: result, media_session_access_url, media_session_access_secure_url (HTTP-запрос на них вызывает событие AppEvents.HttpRequest в сценарии), call_session_history_id.

Параметр Где Тип Обяз. Описание
cmd body string да StartScenarios
rule_id body integer да ID правила (обязателен, если нет rule_name); к правилу должен быть привязан сценарий
rule_name body string нет Имя правила вместо rule_id
user_id body integer нет Запуск от имени пользователя (или user_name)
user_name body string нет Имя пользователя
application_id body integer нет ID приложения (или application_name)
application_name body string нет Имя приложения
script_custom_data body string нет Данные, доступные в сценарии через VoxEngine.customData()
reference_ip body string нет IP для выбора ближайшего сервера
server_location body string нет Расположение сервера (приоритетнее reference_ip)

POST /platform_api — StartConference: видеоконференция

Создаёт сессию видеоконференции или подключает к существующей с тем же conference_name.

Параметр Где Тип Обяз. Описание
cmd body string да StartConference
conference_name body string да Имя конференции
rule_id body integer да ID правила
application_id body integer нет ID приложения
script_custom_data body string нет Пользовательские данные для сценария

POST /platform_api — CreateCallList: создание списка обзвона

Загружает CSV и сразу запускает правило. Файл передаётся в теле запроса или multipart. В ответе: result, count, list_id, batch_id.

Параметр Где Тип Обяз. Описание
cmd body string да CreateCallList
rule_id body integer да ID правила
priority body integer да Приоритет 0…2^31, 0 — наивысший
max_simultaneous body integer да Число одновременно обрабатываемых задач
num_attempts body integer да Число попыток, 1–5
name body string да Имя файла, до 255 символов, без / и \
file_content body file да CSV-файл со списком
list_custom_data body string нет Пользовательские данные списка
interval_seconds body integer нет Интервал между попытками, по умолчанию 0
encoding body string нет Кодировка файла, по умолчанию UTF-8
delimiter body string нет Разделитель, по умолчанию ;
call_list_type body string нет automatic, predictive, progressive
queue_id body integer нет ID очереди ACD (для predictive/progressive)
start_at body integer нет Время старта, Unix timestamp (UTC)
task_priority_strategy body string нет first_attempts (по умолчанию) или repeated_attempts

POST /platform_api — GetCallLists: списки обзвона

Параметр Где Тип Обяз. Описание
cmd body string да GetCallLists
list_id body string нет ID через ; или all
name body string нет Поиск по имени
is_active body boolean нет Только активные
from_date body string нет Дата от, UTC YYYY-MM-DD HH:mm:ss
to_date body string нет Дата до
count body integer нет До 1000 записей
offset body integer нет Пропустить N записей

POST /platform_api — StopCallListProcessing: остановка обзвона

Параметр Где Тип Обяз. Описание
cmd body string да StopCallListProcessing
list_id body integer да ID списка

POST /platform_api — GetCallHistory: история звонков

Длительность, стоимость, логи и др. Без дат — интервал по умолчанию (месяц).

Параметр Где Тип Обяз. Описание
cmd body string да GetCallHistory
from_date body string нет Начало, YYYY-MM-DD HH:mm:ss
to_date body string нет Конец
timezone body string нет Часовой пояс дат
call_session_history_id body string нет ID сессий через ;, до 1000
application_id body integer нет ID приложения
user_id body string нет ID пользователей через ;
remote_number body string нет Номера клиентов через ;
local_number body string нет Номера платформы через ;
with_calls body boolean нет Включить звонки внутри сессий
with_records body boolean нет Включить записи
desc_order body boolean нет Обратный порядок
count body integer нет До 1000 записей
offset body integer нет Пропуск, до 10000

POST /platform_api — SendSmsMessage: отправка SMS

Номер-отправитель должен быть куплен в Voximplant, поддерживать SMS (is_sms_supported в GetPhoneNumbers) и SMS должны быть включены через ControlSms. В ответе: result, message_id, fragments_count.

Параметр Где Тип Обяз. Описание
cmd body string да SendSmsMessage
source body string да Номер отправителя
destination body string да Номер получателя
sms_body body string да Текст до 765 символов; сегменты по 160 GSM-7 или 70 UTF-16
store_body body boolean нет Хранить текст исходящих (по умолчанию false)

POST /platform_api — ControlSms: включение SMS на номере

Параметр Где Тип Обяз. Описание
cmd body string да ControlSms
phone_number body string да Номер
command body string да enable или disable

POST /platform_api — GetPhoneNumbers: номера аккаунта

Параметр Где Тип Обяз. Описание
cmd body string да GetPhoneNumbers
phone_id body string нет ID номера
phone_number body string нет Номера через ;
activation_status body string нет Статусы через ;, например ACTIVE
application_id body integer нет ID приложения
is_bound_to_application body boolean нет Привязан ли к приложению
country_code body string нет Коды стран через ;

POST /platform_api — GetApplications: приложения

Параметр Где Тип Обяз. Описание
cmd body string да GetApplications
application_id body integer нет ID приложения
application_name body string нет Имя приложения
with_rules body boolean нет Вернуть правила
with_scenarios body boolean нет Вернуть сценарии
count body integer нет Число записей
offset body integer нет Смещение

POST /platform_api — AddApplication: создание приложения

Параметр Где Тип Обяз. Описание
cmd body string да AddApplication
application_name body string да Короткое имя в формате [a-z][a-z0-9-]{1,64}
secure_record_storage body boolean нет Защищённое хранение логов и записей

POST /platform_api — AddUser: создание пользователя

Параметр Где Тип Обяз. Описание
cmd body string да AddUser
user_name body string да Имя в формате [a-z0-9][a-z0-9_-]{2,49}
user_display_name body string да Отображаемое имя, до 256 символов
user_password body string да Пароль от 8 символов: заглавная и строчная буква, цифра, спецсимвол
application_id body integer да ID приложения (или application_name)
application_name body string нет Имя приложения
parent_accounting body boolean нет Использовать баланс родительского аккаунта
user_active body boolean нет Активен ли пользователь
user_custom_data body string нет Произвольная строка

Нюансы

Ограничения

Источники


Если этого недостаточно — официальная документация: https://voximplant.com/docs/references/httpapi JSON: https://mcp-everything.ru/api/integrations/voximplant. MCP: https://mcp-everything.ru/mcp