---
slug: "voximplant"
name: "Voximplant Management API"
vendor: "Voximplant"
industry: "communications"
docsUrl: "https://voximplant.com/docs/references/httpapi"
version: 2
updatedAt: "2026-10-24"
---

# Voximplant Management 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 <token>.
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.

```python
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.

```python
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.

```python
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; несколько значений — через «;».

```python
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 с этим именем и паролем и может принимать и совершать звонки по правилам приложения.

```python
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

- Боевой: `https://api.voximplant.com`

## Авторизация

Тип: 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 | нет | Произвольная строка |

## Нюансы

- Параметры передаются формой (`multipart/form-data`); списки — строкой через `;`.
- Даты — `YYYY-MM-DD HH:mm:ss`.
- При ошибке в ответе объект `error` с полями `code` и `msg`.
- Некоторые методы (отчёты, детали списков в CSV) возвращают файл `application/octet-stream`.
- Всего в API около 400 методов: правила и сценарии, очереди ACD и SmartQueue, ключи и роли, KV-хранилище, SIP, push-учётки, дочерние аккаунты, счета.

## Ограничения

- `GetCallHistory`, `GetCallLists`: до 1000 записей за запрос.
- `CreateCallList`: 1–5 попыток на номер.
- SMS — до 765 символов.

## Источники

- [Voximplant HTTP API](https://voximplant.com/docs/references/httpapi)
- [Официальный клиент Python — voximplant/apiclient-python](https://github.com/voximplant/apiclient-python)
- [Официальный клиент Node.js — voximplant/apiclient-nodejs](https://github.com/voximplant/apiclient-nodejs)

---

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