Документация Api V1
● Общая информация
Адрес сервера - https://app.sipsim.by/api/v1/
Как получить токен доступа?
Личный кабинет sipsim.by => Интеграции => Кнопка "Подключить" под иконкой API
Зачем нужен токен и как его использовать?
Токен нужен для авторизации вашего запроса.
Для каждого запроса по API V1 нужно добавить в параметрах токен.
Пример: /phones?token=Ваш токен
● Health Check
Проверяет корректность переданного токена и доступность API.
GET /health
Request (запрос)
Дополнительных параметров не требуется.
Response (ответ) =>
- 200 OK – токен действителен, API доступно.
- 403 Forbidden – токен отсутствует или неверен.
{
"status": "ok",
"client_id": 123
}● Phones
Phone (телефон) -- это базовый элемент системы.
Если вам нужно узнать настройки Менеджера, Отдела или IVR в нашей системе, то вам необходим именно phones.
Доступные методы
- GET /phones
GET /phones
Request (запрос)
Дополнительных параметров нет.
Response (ответ) => Массив телефонов
Элемент массива
поле | тип поля | описание |
| type | string | "regular" "department" "ivr" |
| number | string | Номер телефона |
| outbound_number | string | Номер телефона при исходящем => подменный номер для исходящего звонка. Может быть пустым. |
| internal_number | int | Внутренний номер телефона |
| calls_record_settings | object | Настройки записи звонков |
| calls_redirect_settings | object | Настройки переадресации |
| phone_groups | array | Группы дозвона для отдела |
| ivr_rules | object | Правила IVR |
calls_record_settings
поле | тип поля | описание |
| inbound_enabled | boolean | Запись входящих |
| outbound_enabled | boolean | Запись исходящих |
calls_redirect_settings
поле | тип поля | описание |
| force_redirection | {enabled: boolean, target_number: string or null} | Безусловная переадресация => переадресация будет при любом входящем. |
| conditional_redirection | {enabled: boolean, waiting_seconds: int, target_number: string or null} | Условная переадресация => переадресация при условии неответа больше, чем установленное время ожидания |
phone_group
поле | тип поля | описание |
| name | string | Имя группы |
| cycles_amount | int | Количество циклов |
| waiting_time | int | Время ожидания в секундах |
| smart_distribution | boolean | Умное распределение |
| numbers | array | Массив номеров группы |
| working_schedule | array | Массив 7 элементов. Для каждого дня расписания. |
working_schedule
поле | тип поля | описание |
| day_of_week_index | int | Индекс дня недели (Sunday - 0) |
| day_of_week_name | string | Имя дня недели на английском |
| enabled | boolean | |
| start | string | Время начала работы ("09:00") |
| end | string | Время конца работы ("14:00") |
●Calls
Call (звонок) -- хранит все данные о звонке.
Доступные методы
- GET /calls
GET /calls
Request (запрос)
!Промежуток между датами должен быть меньше 3 месяцев!
поле | тип поля | описание |
| start_date Обязательный параметр | "%d.%m.%Y" | Поиск звонков начиная с этой даты |
| end_date Обязательный параметр | "%d.%m.%Y" | Поиск звонков заканчивая этой датой |
| page По умолчанию равен 0 | int | Для пагинации (первая страница = 0) |
Response (ответ)
поле | тип поля | описание |
| page | int | Номер текущей страницы |
| total | int | Общее количество звонков |
| limit | int | Количество звонков на странице (50) |
| calls | array | Массив звонков |
Элемент массива звонков
поле | тип поля | описание |
| call_type | string | "outbound", "inbound" |
| sip_status | string | "answer", "no_answer", "cancel", "busy", "unavailable", "other" |
| caller_number | string | Кто звонил |
| target_number | string | Куда звонил |
| answered_phone_number | string or null | Номер телефона (если пропущенный — null) |
| answered | boolean | |
| registration_time | string(time format) | Время регистрации звонка |
| start_time | string(time format) | Время начала дозвона |
| answered_time | string(time format) or null | Время ответа на звонок |
| end_time | string(time format) | Время конца дозвона |
| wait_duration_sec | int | Время ожидания ответа |
| duration_sec | int | Время разговора |
| play_record_link | string | Ссылка на запись разговора |
| public_id | string | Идентификатор звонка (для обратной совместимости) |
| external_id | string | Идентификатор звонка в АТС. Вместе с call_type однозначно указывает на запись в SipSim. Для детальных AI-методов передавайте оба поля из этого ответа. |
| transcription | object | Статус транскрипции |
| transcription.status | string | none, processing, ready, failed |
| transcription.ready | boolean | true — транскрипцию можно получить |
| ai | object | Счётчики AI-результатов |
| ai.summaries_count | int | Количество саммари |
| ai.ratings_count | int | Количество обработанных рейтингов |
| ai.tags_count | int | Количество тегов |
●AI
AI-данные (транскрипция, саммари, рейтинги, теги) доступны только для чтения (GET).
Все методы требуют token в параметрах запроса.
Идентификатор звонка: для детальных методов используйте external_id и call_type из ответа GET /calls. Поле public_id в URL детальных методов не используется.
external_id — идентификатор звонка в АТС. Для однозначного доступа к записи в SipSim может понадобиться ещё call_type (inbound или outbound).
В большинстве случаев (звонок клиенту или от клиента) в системе одна запись на external_id — параметр call_type можно не передавать.
Если по одному external_id найдены две ноги (например, внутренний звонок менеджер ↔ менеджер), API вернёт 409 Conflict и список доступных значений в поле call_types. Повторите запрос с call_type=inbound или call_type=outbound.
Алиас: direction=incoming (= inbound), direction=outgoing (= outbound).
Детали по одному звонку
- GET /calls/{external_id}/transcription
- GET /calls/{external_id}/summaries
- GET /calls/{external_id}/ratings
- GET /calls/{external_id}/tags
Пример: /calls/AtsA1-a87d19ce-d288-4064-8d76-2f0d91a72a60/ratings?token=Ваш_токен&call_type=inbound
Общие query-параметры (детали по одному звонку)
поле | тип поля | описание |
| token обязательный | string | Токен API |
| call_type опциональный | string | inbound или outbound. Обязателен, если по external_id найдено две ноги (ответ 409). |
| direction опциональный | string | Алиас для call_type: incoming (= inbound), outgoing (= outbound). |
GET /calls/{external_id}/transcription
Возвращает транскрипцию звонка.
Request — token (обязательный), call_type или direction (опционально, см. таблицу выше).
Response
поле | тип поля | описание |
| status | string | none, processing, ready, failed |
| ready | boolean | Готова ли транскрипция |
| external_id | string | Идентификатор звонка |
| duration_sec | int | Длительность разговора |
| direction | string | inbound или outbound |
| segments | array | Массив сегментов речи |
| total_segments | int | Количество сегментов |
Элемент массива segments
поле | тип поля | описание |
| speaker | string | client — клиент; manager — менеджер |
| channel | string | Канал записи |
| start_sec | float | Начало сегмента (сек) |
| end_sec | float | Конец сегмента (сек) |
| text | string | Текст фразы |
Если транскрипция не готова — segments будет пустым массивом.
GET /calls/{external_id}/summaries
Все саммари звонка (только с непустым текстом).
Request — те же параметры, что и для transcription.
Элемент массива summaries
поле | тип поля | описание |
| rule_name | string | Название правила саммари |
| summary | string | Текст саммари |
| updated_at | string (time format) | Время обновления |
GET /calls/{external_id}/ratings
Обработанные рейтинги звонка. Пустой массив ratings — рейтингов нет.
Request — те же параметры, что и для transcription.
Объект call
поле | тип поля | описание |
| caller_number | string | Кто звонил |
| target_number | string | Куда звонил |
| registration_time | string (time format) | Время регистрации звонка |
Элемент массива ratings
поле | тип поля | описание |
| rule_name | string | Название правила оценки |
| overall_score | int | Общая оценка |
| criteria_scores | array | Оценки по критериям |
| highlights | array | Сильные стороны |
| improvements | array | Зоны роста |
| updated_at | string (time format) | Время обновления |
Элемент массива criteria_scores
поле | тип поля | описание |
| name | string | Название критерия |
| score | int | Оценка |
| feedback | string | Комментарий |
GET /calls/{external_id}/tags
Request — те же параметры, что и для transcription.
Элемент массива tags
поле | тип поля | описание |
| name | string | Название тега |
| description | string | Описание тега |
Коллекции AI-данных
- GET /ai/ratings
- GET /ai/summaries
- GET /ai/transcriptions
- GET /ai/tags
Request (запрос)
!Промежуток между датами должен быть меньше 3 месяцев!
поле | тип поля | описание |
| token | обязательный | Токен API |
| start_date | обязательный, "%d.%m.%Y" | Начало периода |
| end_date | обязательный, "%d.%m.%Y" | Конец периода |
| page | int, по умолчанию 0 | Пагинация |
| phone | один из двух | Номер телефона (любой формат) |
| phone_licence_id | один из двух | ID лицензии номера |
| phone_role | string, по умолчанию any | caller, target, answered, any |
| call_type | string | inbound или outbound (опционально) |
Номер в phone можно передавать в любом формате — сервер нормализует автоматически.
Response — общий для всех коллекций:
поле | тип поля | описание |
| status_code | int | 200 |
| page | int | Текущая страница |
| total | int | Всего записей |
| limit | int | 50 |
| ratings / summaries / transcriptions / tags | array | Массив результатов |
GET /ai/ratings — рейтинги + контекст звонка (external_id, caller_number, target_number, registration_time).
GET /ai/summaries — саммари + контекст звонка.
GET /ai/transcriptions — метаданные готовых транскрипций (без текста segments).
GET /ai/tags — теги + контекст звонка, вложенный объект tag (name, description).
Примеры запросов
/calls?token=Ваш_токен&start_date=01.05.2026&end_date=31.05.2026
/ai/ratings?token=Ваш_токен&start_date=01.05.2026&end_date=31.05.2026&phone=%2B3752911115&phone_role=caller
/calls/AtsA1-a87d19ce-d288-4064-8d76-2f0d91a72a60/transcription?token=Ваш_токен
/calls/AtsA1-a87d19ce-d288-4064-8d76-2f0d91a72a60/transcription?token=Ваш_токен&call_type=inbound
Коды ошибок (AI)
код | описание |
| 400 | Неверные параметры (в т.ч. недопустимый call_type) |
| 401 | Неверный токен |
| 404 | Звонок не найден |
| 409 | По external_id найдено несколько звонков — укажите call_type (inbound / outbound). В теле ответа поле call_types — список допустимых значений. |
| 429 | Лимит 15 запросов в минуту |
Пример ответа 409
{
"code": 409,
"error": "Conflict",
"msg": "Multiple calls match external_id, specify call_type",
"call_types": ["inbound", "outbound"]
}