Обзор API
Technomax предоставляет REST API для интеграции омниканальной платформы голосовых и чат-ботов в ваши системы.
Базовый URL
https://login.technomax.com.kz/api/iam/v1
Аутентификация
Все запросы к API требуют JWT-токен в заголовке Authorization:
Authorization: Bearer YOUR_JWT_TOKEN
Формат данных
API принимает и возвращает данные в формате JSON. Все запросы должны содержать заголовок:
Content-Type: application/json
Аутентификация
Получение токена доступа для работы с API платформы.
Вход пользователя
Аутентификация пользователя и получение JWT-токена.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
email |
String | Да | Email пользователя |
password |
String | Да | Пароль пользователя |
companyId |
Integer | Нет | ID компании |
ttl |
Integer | Нет | Время жизни токена (секунды) |
codeTfa |
String | Нет | Код двухфакторной аутентификации |
Пример запроса
curl -X POST https://login.technomax.com.kz/api/iam/v1/auth/login \
-H "Content-Type: application/json" \
-d '{
"email": "user@example.com",
"password": "***"
}'
Ответ
| Параметр | Тип | Описание |
|---|---|---|
token |
String | JWT-токен доступа для обращений к API платформы Technomax |
refreshToken |
String | Refresh-токен для получения нового токена после истечения текущего |
Пример ответа
{
"token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...",
"refreshToken": "dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4..."
}
Коды ответа
200 Успешная аутентификация
400 Неверные параметры запроса
426 Требуется двухфакторная аутентификация
5XX Ошибка сервера
Выход пользователя
Удаление токена аутентификации.
Пример запроса
curl -X POST https://login.technomax.com.kz/api/iam/v1/auth/logout \
-H "Authorization: Bearer YOUR_JWT_TOKEN"
Коды ответа
200 Успешный выход
400 Неверный токен
5XX Ошибка сервера
Обновление токена
Получение нового токена доступа с использованием refresh-токена.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
refreshToken |
String | Да | Refresh-токен из предыдущего ответа |
Пример запроса
curl -X POST https://login.technomax.com.kz/api/iam/v1/auth/refresh \
-H "Content-Type: application/json" \
-d '{
"refreshToken": "dGhpcyBpcyBhIHJlZnJlc2ggdG9rZW4..."
}'
Ответ
Возвращает новые token и refreshToken в том же формате, что и /auth/login.
Пользователи
Управление пользователями системы.
Список пользователей
Детали пользователя
Создание пользователя
Обновление пользователя
Сообщения
Отправка и управление сообщениями через различные каналы.
Создание сообщения
Список сообщений
Отмена отправки
Боты
Управление голосовыми и чат-ботами платформы Technomax.
Список ботов
Создание бота
Детали бота
Обновление бота
Запуск диалога
Чат-сессии
Управление чат-сессиями и сообщениями.
Список чатов
Создание чата
Детали чата
Сообщения чата
Отправка сообщения
Телефония — запуск звонков
API для создания заданий на автоматический обзвон и запуска одиночных исходящих звонков через платформу Technomax.
Базовый URL: https://twin24.ai/cis/api/v1
Все запросы требуют JWT-токен в заголовке Authorization: Bearer YOUR_TOKEN.
Создание задания на обзвон
Метод позволяет создать новое задание на автоматический обзвон. После успешного выполнения будет возвращён идентификатор созданного задания. Время запуска зависит от параметра startType.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
name |
String | Да | Название задания |
defaultExec |
String | Да | Всегда robot |
defaultExecData |
String | Да | ID сценария бота для обзвона |
secondExec |
String | Да | Действие при переадресации: end (завершить), ignore (ничего), ch (передать на канал) |
secondExecData |
String | Да, если secondExec=ch | ID канала для перевода |
cidType |
String | Да | Определяемый номер: default (по умолчанию для транка), gornum (один номер), pool (группа номеров) |
cidData |
String | Да, если cidType=gornum/pool | ID сущности в cidType |
startType |
String | Да | Режим запуска: manual (вручную), time (в указанное время) |
startMoment |
String | Да, если startType=time | Дата и время начала (ГГГГ-ММ-ДД ЧЧ:ММ) |
scheduleId |
String | Нет | ID расписания обзвона |
callStrategy |
String | Нет | STEP_2_STEP — последовательная; PARALLEL — параллельная (CPS > 1) |
cps |
Float | Да | Интенсивность обзвона. Формула: 1 + N/100 для N звонков/сек, 1 - N/100 для 1 звонка в N секунд |
checkPhone |
Boolean | Нет | Проверка номера телефона |
phoneNormalization |
String | Нет | Нормализация номера (например, RU) |
sendReportAfterFinish |
Boolean | Нет | Отправить отчёт после завершения |
webhookUrls |
Array | Нет | Массив объектов webhook для получения событий (см. раздел Вебхуки ниже) |
additionalOptions |
Object | Нет | Дополнительные настройки: запись звонков, распознавание роботов, ФЗ-230 и др. |
redialStrategyOptions |
Object | Нет | Стратегия перезвона: лимиты по кандидатам, номерам, обработка занят/не отвечает |
Пример запроса
curl -X POST https://twin24.ai/cis/api/v1/telephony/autoCall \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"name": "Тестовый обзвон",
"defaultExec": "robot",
"defaultExecData": "228cc4fa-92f2-4709-94e3-7344a96a5903",
"secondExec": "ch",
"secondExecData": "48a77bd7-8762-4e0f-a277-4ef77e36c41b",
"cidType": "gornum",
"cidData": "9a67dee5-398e-4570-9426-fbb3f067b270",
"startType": "manual",
"callStrategy": "STEP_2_STEP",
"cps": 1.03,
"checkPhone": true,
"phoneNormalization": "RU",
"sendReportAfterFinish": true,
"webhookUrls": [
{
"url": "https://example.com/webhook",
"partialResults": true,
"delay": 4,
"events": {
"CALL_ENDED": {"name": "CALL_ENDED", "value": true},
"CANDIDATE_CHANGED": {"name": "CANDIDATE_CHANGED", "value": true},
"AUTOCALL_STATUS_CHANGED": {"name": "AUTOCALL_STATUS_CHANGED", "value": true}
}
}
],
"additionalOptions": {
"recordCall": true,
"detectRobot": true,
"fz230": true
}
}'
Коды ответа
200 Задание создано, возвращён ID
400 Неверные параметры запроса
5XX Ошибка сервера
Запуск одиночного звонка
Метод создаёт задание на обзвон, добавляет кандидата и запускает звонок. Все настройки, кроме сценария бота, берутся из шаблона задания по умолчанию. В течение одних суток повторные вызовы добавляют кандидатов в уже созданное задание.
Параметры запроса
| Параметр | Тип | Обязательный | Описание |
|---|---|---|---|
phone |
Array[String] | Да | Список номеров телефона для звонка |
botSettingsId |
String | Да | ID сценария бота для звонка |
variables |
Object | Нет | Пользовательские переменные кандидата (например, {"Имя": "Николай"}) |
timezone |
Integer | Нет | Часовой пояс (смещение от UTC+0 в секундах, от -43200 до 43200) |
callbackData |
Object | Нет | Произвольные данные (ID клиента и т.д.), возвращаются в webhook без изменений |
Пример запроса
curl -X POST https://twin24.ai/cis/api/v1/telephony/autoCallCandidate/single \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_TOKEN" \
-d '{
"phone": ["79991234567"],
"botSettingsId": "2656622a-57b2-478f-acf9-6167120d18bf",
"variables": {
"Имя": "Николай",
"Возраст": "28"
},
"timezone": 16800,
"callbackData": {
"clientId": "12345"
}
}'
Коды ответа
200 Звонок запущен
400 Неверные параметры запроса
5XX Ошибка сервера
Вебхуки (Webhooks)
Вебхуки — HTTP-обратные вызовы для получения событий от платформы. Система гарантированной доставки повторяет отправку в течение 24 часов при не-200 ответе (экспоненциальные интервалы).
IP-адрес отправителя: 87.251.83.190. Рекомендуется добавить в вайтлист весь диапазон: 87.251.83.160/27.
Важно: вебхуки могут приходить в некорректном порядке (например, CANDIDATE_CHANGED раньше CALL_ENDED).
Типы событий
| Событие | Описание |
|---|---|
CALL_ENDED |
Вызов завершён |
CANDIDATE_CHANGED |
Обновлён статус обработки кандидата |
CALL_REDIRECTED |
Выполнен перевод на оператора |
RECALL_SCHEDULED |
Запланирован перезвон |
EFFICIENCY_REACHED |
Принудительно изменён признак результативности звонка |
AUTOCALL_STATUS_CHANGED |
Смена статуса задания на обзвон |
Пример payload: AUTOCALL_STATUS_CHANGED
{
"event": "AUTOCALL_STATUS_CHANGED",
"id": "b839e537-e055-4a26-a504-e1f8fb74c01f",
"status": "HALTED",
"occurredOn": "2025-07-18T07:03:58+00:00"
}
Статусы задания на обзвон
| Статус | Описание |
|---|---|
PREPARING | Задание готовится к запуску |
READY | Задание готово к запуску |
ERROR_PREPARING | Ошибка подготовки задания |
PAUSED_SCHEDULE | Приостановлено по расписанию |
PAUSED_NOBODY | Приостановлено — некому звонить |
PAUSED_NO_CID | Приостановлено — не выбран CallerID |
PAUSED_NO_ROUTE | Приостановлено — нет маршрута |
PAUSED_NO_MONEY | Остановлено из-за отрицательного баланса |
HALTED | Задание остановлено окончательно |
TIMEOUT | Аварийная остановка |
NO_NEXT_CALL | Не удалось рассчитать время следующего звонка |
DELETING | Задание удаляется |
MAX_CPS | Превышен лимит CPS |
Настройка webhook в задании
При создании задания через POST /telephony/autoCall укажите массив webhookUrls:
"webhookUrls": [
{
"url": "https://your-server.com/webhook",
"partialResults": true,
"delay": 4,
"events": {
"CALL_ENDED": {"name": "CALL_ENDED", "value": true},
"CANDIDATE_CHANGED": {"name": "CANDIDATE_CHANGED", "value": true},
"CALL_REDIRECTED": {"name": "CALL_REDIRECTED", "value": true},
"RECALL_SCHEDULED": {"name": "RECALL_SCHEDULED", "value": true},
"EFFICIENCY_REACHED": {"name": "EFFICIENCY_REACHED", "value": true},
"AUTOCALL_STATUS_CHANGED": {"name": "AUTOCALL_STATUS_CHANGED", "value": true}
}
}
]
Параметры: url — адрес для получения webhook; partialResults — получать промежуточные результаты; delay — задержка перед отправкой (секунды); events — какие события получать.
Коды ошибок
API возвращает стандартные HTTP-коды и JSON-объекты с описанием ошибок.
Формат ошибки
{
"timestamp": 1544098870,
"type": "MyNamespace\\MyClass",
"error": "Описание ошибки",
"details": {
"additional": "information"
}
}
Основные коды
| Код | Описание |
|---|---|
| 200 | Успешный запрос |
| 400 | Неверные параметры запроса |
| 426 | Требуется двухфакторная аутентификация |
| 5XX | Внутренняя ошибка сервера |