{"name":"Voximplant Management API","vendor":"Voximplant","industry":"communications","summary":"HTTP API облачной коммуникационной платформы Voximplant для управления аккаунтом: приложения, пользователи, правила и сценарии, запуск сценариев (звонки, конференции), обзвоны по спискам (call lists), телефонные номера, SMS, история звонков, очереди и SmartQueue, ключи и роли. Все методы вызываются POST-запросом на один адрес; имя метода передаётся параметром `cmd`, остальные параметры — полями формы. Описание собрано по официальным клиентским библиотекам Voximplant (Python и Node.js).","docsUrl":"https://voximplant.com/docs/references/httpapi","coverage":{"included":[],"excluded":[]},"scenarios":[{"id":"pozvonit-klientu-iz-svoey-sistemy","title":"Позвонить клиенту из своей системы","summary":"Звонок по кнопке в CRM или по событию: напоминание о записи, подтверждение заказа. Логика звонка живёт в JavaScript-сценарии Voximplant, API его запускает.","steps":["Создай сервисный аккаунт в панели управления (Settings → Service accounts) и скачай JSON с account_id, key_id и private_key.","На каждый запрос подписывай короткоживущий JWT алгоритмом RS256: iss = account_id, iat и exp (около минуты), в заголовке токена kid = key_id. Передавай его в заголовке Authorization: Bearer <token>.","Проверь доступ: GetAccountInfo — вернёт account_id и баланс.","Запусти сценарий: StartScenarios с rule_id (правило с привязанным сценарием) и script_custom_data — например, номером клиента; в сценарии он доступен через VoxEngine.customData().","Все методы — POST на https://api.voximplant.com/platform_api с параметром cmd и остальными полями формы. Ошибка приходит в объекте error с code и msg."],"code":"import json, time, jwt, requests  # pip install pyjwt cryptography requests\n\ncreds = json.load(open(\"credentials.json\"))\n\ndef vox(cmd: str, **params) -> dict:\n    now = int(time.time())\n    token = jwt.encode({\"iss\": creds[\"account_id\"], \"iat\": now, \"exp\": now + 60},\n                       creds[\"private_key\"], algorithm=\"RS256\", headers={\"kid\": creds[\"key_id\"]})\n    r = requests.post(\"https://api.voximplant.com/platform_api\",\n                      headers={\"Authorization\": f\"Bearer {token}\"}, data={\"cmd\": cmd, **params}).json()\n    if \"error\" in r:\n        raise RuntimeError(r[\"error\"])\n    return r\n\nprint(vox(\"StartScenarios\", rule_id=123456, script_custom_data=json.dumps({\"phone\": \"79991234567\", \"order\": \"1042\"})))","language":"python","methods":["POST /platform_api GetAccountInfo","POST /platform_api StartScenarios"]},{"id":"avtoobzvon-po-spisku-nomerov","title":"Автообзвон по списку номеров","summary":"Напоминания, опросы, информирование — сценарий звонит по каждому номеру из CSV с повторными попытками.","steps":["Подготовь CSV с разделителем «;»: первая строка — названия колонок (например, phone;name), дальше — по строке на номер. Данные строки доступны в сценарии.","Создай список: CreateCallList с rule_id, priority, max_simultaneous (сколько звонков одновременно), num_attempts (1–5), name и file_content — содержимым CSV. Обзвон стартует сразу или в start_at.","Между попытками задай паузу interval_seconds. В ответе — list_id.","Следи за ходом: GetCallLists с list_id. Остановить обзвон — StopCallListProcessing с list_id."],"code":"csv_content = \"phone;name\\n79991234567;Иван\\n79991234568;Анна\\n\"\nr = vox(\"CreateCallList\", rule_id=123456, priority=0, max_simultaneous=5, num_attempts=3,\n        interval_seconds=600, name=\"reminders-2026-10-25.csv\", file_content=csv_content)\nprint(r[\"list_id\"])\nprint(vox(\"GetCallLists\", list_id=r[\"list_id\"]))","language":"python","methods":["POST /platform_api CreateCallList","POST /platform_api GetCallLists","POST /platform_api StopCallListProcessing"]},{"id":"otpravit-sms-s-nomera-voximplant","title":"Отправить SMS с номера Voximplant","summary":"SMS клиенту с купленного в Voximplant номера.","steps":["Найди номер с поддержкой SMS: GetPhoneNumbers — у подходящего номера is_sms_supported = true.","Включи SMS на номере (один раз): ControlSms с phone_number и command = enable.","Отправь: SendSmsMessage с source (твой номер), destination и sms_body — до 765 символов (сегменты по 70 символов кириллицы). В ответе message_id и fragments_count."],"code":"vox(\"ControlSms\", phone_number=\"74951234567\", command=\"enable\")\nprint(vox(\"SendSmsMessage\", source=\"74951234567\", destination=\"79991234567\",\n          sms_body=\"Ваша запись подтверждена: 25.10 в 14:00\"))","language":"python","methods":["POST /platform_api SendSmsMessage","POST /platform_api ControlSms","POST /platform_api GetPhoneNumbers"]},{"id":"vygruzit-istoriyu-zvonkov","title":"Выгрузить историю звонков","summary":"Длительность, стоимость, записи разговоров — для отчётов и контроля качества.","steps":["Запроси историю: GetCallHistory с from_date и to_date в формате YYYY-MM-DD HH:mm:ss и timezone. Без дат вернётся последний месяц.","Чтобы получить отдельные звонки и записи разговоров, передай with_calls = true и with_records = true.","За запрос — до 1000 сессий (count), дальше листай через offset.","Фильтры по номерам клиентов — remote_number, по приложению — application_id; несколько значений — через «;»."],"code":"h = vox(\"GetCallHistory\", from_date=\"2026-10-01 00:00:00\", to_date=\"2026-10-24 23:59:59\",\n        timezone=\"Europe/Moscow\", with_calls=\"true\", with_records=\"true\", count=1000, offset=0)\nfor session in h[\"result\"]:\n    print(session[\"call_session_history_id\"], session.get(\"duration\"))","language":"python","methods":["POST /platform_api GetCallHistory"]},{"id":"sozdat-prilozhenie-i-polzovatelya-dlya","title":"Создать приложение и пользователя для звонков из браузера или приложения","summary":"Сотрудник звонит клиентам прямо из веб-интерфейса CRM через Web SDK Voximplant.","steps":["Создай приложение: AddApplication с application_name в формате [a-z][a-z0-9-]{1,64}.","Создай пользователя: AddUser с user_name, user_display_name, user_password (от 8 символов, с заглавной и строчной буквой, цифрой и спецсимволом) и application_id или application_name.","Проверь, что всё на месте: GetApplications с application_id и with_rules — увидишь правила и сценарии приложения.","В веб-интерфейсе пользователь входит в Web SDK с этим именем и паролем и может принимать и совершать звонки по правилам приложения."],"code":"app = vox(\"AddApplication\", application_name=\"crm-calls\")\nvox(\"AddUser\", user_name=\"manager-101\", user_display_name=\"Иван Петров\",\n    user_password=\"Str0ng!Passw0rd\", application_id=app[\"application_id\"])","language":"python","methods":["POST /platform_api GetApplications","POST /platform_api AddApplication","POST /platform_api AddUser"]}],"baseUrls":[{"label":"Боевой","url":"https://api.voximplant.com"}],"auth":{"type":"bearer","description":"Сервисный аккаунт: 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>`. Токен короткоживущий (в библиотеках — около минуты), его генерируют на каждый запрос.","example":""},"methods":[{"id":"POST /platform_api GetAccountInfo","title":"GetAccountInfo: информация об аккаунте","httpMethod":"POST","path":"/platform_api","description":"В ответе — `account_id`, `account_name`, `account_email` и др.","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"GetAccountInfo"},{"name":"return_live_balance","in":"body","type":"boolean","required":false,"description":"Вернуть актуальный баланс"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api StartScenarios","title":"StartScenarios: запуск сценария","httpMethod":"POST","path":"/platform_api","description":"Запускает JavaScript-сценарий в новой медиасессии по правилу маршрутизации. В ответе: `result`, `media_session_access_url`, `media_session_access_secure_url` (HTTP-запрос на них вызывает событие `AppEvents.HttpRequest` в сценарии), `call_session_history_id`.","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"StartScenarios"},{"name":"rule_id","in":"body","type":"integer","required":true,"description":"ID правила (обязателен, если нет rule_name); к правилу должен быть привязан сценарий"},{"name":"rule_name","in":"body","type":"string","required":false,"description":"Имя правила вместо rule_id"},{"name":"user_id","in":"body","type":"integer","required":false,"description":"Запуск от имени пользователя (или user_name)"},{"name":"user_name","in":"body","type":"string","required":false,"description":"Имя пользователя"},{"name":"application_id","in":"body","type":"integer","required":false,"description":"ID приложения (или application_name)"},{"name":"application_name","in":"body","type":"string","required":false,"description":"Имя приложения"},{"name":"script_custom_data","in":"body","type":"string","required":false,"description":"Данные, доступные в сценарии через VoxEngine.customData()"},{"name":"reference_ip","in":"body","type":"string","required":false,"description":"IP для выбора ближайшего сервера"},{"name":"server_location","in":"body","type":"string","required":false,"description":"Расположение сервера (приоритетнее reference_ip)"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api StartConference","title":"StartConference: видеоконференция","httpMethod":"POST","path":"/platform_api","description":"Создаёт сессию видеоконференции или подключает к существующей с тем же `conference_name`.","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"StartConference"},{"name":"conference_name","in":"body","type":"string","required":true,"description":"Имя конференции"},{"name":"rule_id","in":"body","type":"integer","required":true,"description":"ID правила"},{"name":"application_id","in":"body","type":"integer","required":false,"description":"ID приложения"},{"name":"script_custom_data","in":"body","type":"string","required":false,"description":"Пользовательские данные для сценария"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api CreateCallList","title":"CreateCallList: создание списка обзвона","httpMethod":"POST","path":"/platform_api","description":"Загружает CSV и сразу запускает правило. Файл передаётся в теле запроса или multipart. В ответе: `result`, `count`, `list_id`, `batch_id`.","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"CreateCallList"},{"name":"rule_id","in":"body","type":"integer","required":true,"description":"ID правила"},{"name":"priority","in":"body","type":"integer","required":true,"description":"Приоритет 0…2^31, 0 — наивысший"},{"name":"max_simultaneous","in":"body","type":"integer","required":true,"description":"Число одновременно обрабатываемых задач"},{"name":"num_attempts","in":"body","type":"integer","required":true,"description":"Число попыток, 1–5"},{"name":"name","in":"body","type":"string","required":true,"description":"Имя файла, до 255 символов, без / и \\"},{"name":"file_content","in":"body","type":"file","required":true,"description":"CSV-файл со списком"},{"name":"list_custom_data","in":"body","type":"string","required":false,"description":"Пользовательские данные списка"},{"name":"interval_seconds","in":"body","type":"integer","required":false,"description":"Интервал между попытками, по умолчанию 0"},{"name":"encoding","in":"body","type":"string","required":false,"description":"Кодировка файла, по умолчанию UTF-8"},{"name":"delimiter","in":"body","type":"string","required":false,"description":"Разделитель, по умолчанию ;"},{"name":"call_list_type","in":"body","type":"string","required":false,"description":"automatic, predictive, progressive"},{"name":"queue_id","in":"body","type":"integer","required":false,"description":"ID очереди ACD (для predictive/progressive)"},{"name":"start_at","in":"body","type":"integer","required":false,"description":"Время старта, Unix timestamp (UTC)"},{"name":"task_priority_strategy","in":"body","type":"string","required":false,"description":"first_attempts (по умолчанию) или repeated_attempts"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api GetCallLists","title":"GetCallLists: списки обзвона","httpMethod":"POST","path":"/platform_api","description":"","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"GetCallLists"},{"name":"list_id","in":"body","type":"string","required":false,"description":"ID через ; или all"},{"name":"name","in":"body","type":"string","required":false,"description":"Поиск по имени"},{"name":"is_active","in":"body","type":"boolean","required":false,"description":"Только активные"},{"name":"from_date","in":"body","type":"string","required":false,"description":"Дата от, UTC YYYY-MM-DD HH:mm:ss"},{"name":"to_date","in":"body","type":"string","required":false,"description":"Дата до"},{"name":"count","in":"body","type":"integer","required":false,"description":"До 1000 записей"},{"name":"offset","in":"body","type":"integer","required":false,"description":"Пропустить N записей"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api StopCallListProcessing","title":"StopCallListProcessing: остановка обзвона","httpMethod":"POST","path":"/platform_api","description":"","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"StopCallListProcessing"},{"name":"list_id","in":"body","type":"integer","required":true,"description":"ID списка"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api GetCallHistory","title":"GetCallHistory: история звонков","httpMethod":"POST","path":"/platform_api","description":"Длительность, стоимость, логи и др. Без дат — интервал по умолчанию (месяц).","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"GetCallHistory"},{"name":"from_date","in":"body","type":"string","required":false,"description":"Начало, YYYY-MM-DD HH:mm:ss"},{"name":"to_date","in":"body","type":"string","required":false,"description":"Конец"},{"name":"timezone","in":"body","type":"string","required":false,"description":"Часовой пояс дат"},{"name":"call_session_history_id","in":"body","type":"string","required":false,"description":"ID сессий через ;, до 1000"},{"name":"application_id","in":"body","type":"integer","required":false,"description":"ID приложения"},{"name":"user_id","in":"body","type":"string","required":false,"description":"ID пользователей через ;"},{"name":"remote_number","in":"body","type":"string","required":false,"description":"Номера клиентов через ;"},{"name":"local_number","in":"body","type":"string","required":false,"description":"Номера платформы через ;"},{"name":"with_calls","in":"body","type":"boolean","required":false,"description":"Включить звонки внутри сессий"},{"name":"with_records","in":"body","type":"boolean","required":false,"description":"Включить записи"},{"name":"desc_order","in":"body","type":"boolean","required":false,"description":"Обратный порядок"},{"name":"count","in":"body","type":"integer","required":false,"description":"До 1000 записей"},{"name":"offset","in":"body","type":"integer","required":false,"description":"Пропуск, до 10000"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api SendSmsMessage","title":"SendSmsMessage: отправка SMS","httpMethod":"POST","path":"/platform_api","description":"Номер-отправитель должен быть куплен в Voximplant, поддерживать SMS (`is_sms_supported` в `GetPhoneNumbers`) и SMS должны быть включены через `ControlSms`. В ответе: `result`, `message_id`, `fragments_count`.","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"SendSmsMessage"},{"name":"source","in":"body","type":"string","required":true,"description":"Номер отправителя"},{"name":"destination","in":"body","type":"string","required":true,"description":"Номер получателя"},{"name":"sms_body","in":"body","type":"string","required":true,"description":"Текст до 765 символов; сегменты по 160 GSM-7 или 70 UTF-16"},{"name":"store_body","in":"body","type":"boolean","required":false,"description":"Хранить текст исходящих (по умолчанию false)"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api ControlSms","title":"ControlSms: включение SMS на номере","httpMethod":"POST","path":"/platform_api","description":"","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"ControlSms"},{"name":"phone_number","in":"body","type":"string","required":true,"description":"Номер"},{"name":"command","in":"body","type":"string","required":true,"description":"enable или disable"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api GetPhoneNumbers","title":"GetPhoneNumbers: номера аккаунта","httpMethod":"POST","path":"/platform_api","description":"","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"GetPhoneNumbers"},{"name":"phone_id","in":"body","type":"string","required":false,"description":"ID номера"},{"name":"phone_number","in":"body","type":"string","required":false,"description":"Номера через ;"},{"name":"activation_status","in":"body","type":"string","required":false,"description":"Статусы через ;, например ACTIVE"},{"name":"application_id","in":"body","type":"integer","required":false,"description":"ID приложения"},{"name":"is_bound_to_application","in":"body","type":"boolean","required":false,"description":"Привязан ли к приложению"},{"name":"country_code","in":"body","type":"string","required":false,"description":"Коды стран через ;"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api GetApplications","title":"GetApplications: приложения","httpMethod":"POST","path":"/platform_api","description":"","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"GetApplications"},{"name":"application_id","in":"body","type":"integer","required":false,"description":"ID приложения"},{"name":"application_name","in":"body","type":"string","required":false,"description":"Имя приложения"},{"name":"with_rules","in":"body","type":"boolean","required":false,"description":"Вернуть правила"},{"name":"with_scenarios","in":"body","type":"boolean","required":false,"description":"Вернуть сценарии"},{"name":"count","in":"body","type":"integer","required":false,"description":"Число записей"},{"name":"offset","in":"body","type":"integer","required":false,"description":"Смещение"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api AddApplication","title":"AddApplication: создание приложения","httpMethod":"POST","path":"/platform_api","description":"","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"AddApplication"},{"name":"application_name","in":"body","type":"string","required":true,"description":"Короткое имя в формате [a-z][a-z0-9-]{1,64}"},{"name":"secure_record_storage","in":"body","type":"boolean","required":false,"description":"Защищённое хранение логов и записей"}],"requestExample":"","responseExample":"","docsUrl":""},{"id":"POST /platform_api AddUser","title":"AddUser: создание пользователя","httpMethod":"POST","path":"/platform_api","description":"","params":[{"name":"cmd","in":"body","type":"string","required":true,"description":"AddUser"},{"name":"user_name","in":"body","type":"string","required":true,"description":"Имя в формате [a-z0-9][a-z0-9_-]{2,49}"},{"name":"user_display_name","in":"body","type":"string","required":true,"description":"Отображаемое имя, до 256 символов"},{"name":"user_password","in":"body","type":"string","required":true,"description":"Пароль от 8 символов: заглавная и строчная буква, цифра, спецсимвол"},{"name":"application_id","in":"body","type":"integer","required":true,"description":"ID приложения (или application_name)"},{"name":"application_name","in":"body","type":"string","required":false,"description":"Имя приложения"},{"name":"parent_accounting","in":"body","type":"boolean","required":false,"description":"Использовать баланс родительского аккаунта"},{"name":"user_active","in":"body","type":"boolean","required":false,"description":"Активен ли пользователь"},{"name":"user_custom_data","in":"body","type":"string","required":false,"description":"Произвольная строка"}],"requestExample":"","responseExample":"","docsUrl":""}],"codeExamples":[],"errors":[],"limits":"- `GetCallHistory`, `GetCallLists`: до 1000 записей за запрос.\n- `CreateCallList`: 1–5 попыток на номер.\n- SMS — до 765 символов.","gotchas":["Параметры передаются формой (`multipart/form-data`); списки — строкой через `;`.","Даты — `YYYY-MM-DD HH:mm:ss`.","При ошибке в ответе объект `error` с полями `code` и `msg`.","Некоторые методы (отчёты, детали списков в CSV) возвращают файл `application/octet-stream`.","Всего в API около 400 методов: правила и сценарии, очереди ACD и SmartQueue, ключи и роли, KV-хранилище, SIP, push-учётки, дочерние аккаунты, счета."],"slug":"voximplant","version":2,"updatedAt":"2026-10-24T17:05:39.406Z","sources":[{"title":"Voximplant HTTP API","url":"https://voximplant.com/docs/references/httpapi","kind":"research","addedAt":"2026-10-19T13:40:53.336Z"},{"title":"Официальный клиент Python — voximplant/apiclient-python","url":"https://github.com/voximplant/apiclient-python","kind":"research","addedAt":"2026-10-19T13:40:53.336Z"},{"title":"Официальный клиент Node.js — voximplant/apiclient-nodejs","url":"https://github.com/voximplant/apiclient-nodejs","kind":"research","addedAt":"2026-10-19T13:40:53.336Z"},{"title":"Вставленный текст","url":"","kind":"import","addedAt":"2026-10-19T13:40:53.336Z"},{"title":"scenarios-voximplant.md","url":"","kind":"import","addedAt":"2026-10-24T17:05:29.001Z"}],"logoUrl":null}