Все endpoints под префиксом /api/v1/. Авторизация — Bearer-токен (см. обзор).
/me — информация о ключе
GET /api/v1/me
Звонки
Список CDR
GET /api/v1/calls?from=2026-04-01&to=2026-05-01&disposition=ANSWERED&src=&dst=&limit=100&offset=0
Scope: cdr.read
Параметры: from, to (дата), disposition (ANSWERED/NO ANSWER/BUSY/FAILED/VOICEMAIL), src, dst, limit (≤1000), offset.
{
"total": 245, "limit": 100, "offset": 0,
"rows": [
{
"calldate": "2026-05-01 22:05:18+03",
"src": "+79991234567", "dst": "771",
"disposition": "ANSWERED",
"duration": 67, "billsec": 60,
"linkedid": "1777662300.103",
"uniqueid": "...", "channel": "PJSIP/...",
"lastapp": "Dial", "lastdata": "..."
}
]
}
Детали звонка
GET /api/v1/calls/{linkedid}
Возвращает все ноги звонка (legs), UTM-атрибуцию (если был коллтрекинг) и теги/комментарий.
Только попытки
GET /api/v1/calls/{linkedid}/legs
Запись разговора
GET /api/v1/calls/{linkedid}/recording
Отдаёт аудиофайл (opus / ogg / mp3 / wav). 404 если записи нет.
Поставить теги/коммент
POST /api/v1/calls/{linkedid}/tags
Content-Type: application/json
{ "tags": "VIP, лид", "comment": "Перезвонить завтра" }
Scope: cdr.write
Транскрипт
GET /api/v1/calls/{linkedid}/transcript
Scope: transcripts.read
Заказать обратный звонок
POST /api/v1/calls/originate
{ "user_id": 12, "phone": "+79991234567", "aon": "Заказ с CRM" }
Scope: calls.originate. ATC сначала позвонит оператору user_id, при ответе соединит с клиентом.
Сотрудники
GET /api/v1/users
GET /api/v1/users/{id}
Scope: users.read
Телефонная книга
Поиск
GET /api/v1/phonebook?type=0&name=Иван&phone=79991234567&limit=100
Scope: phonebook.read. type: 0=Контакт, 1=Компания, 2=Чёрный список.
Поиск по номеру
GET /api/v1/phonebook/by-number?n=+79991234567
Возвращает контакт совпадающий по последним 10 цифрам. Удобно для CRM-всплывашек при входящем звонке.
Карточка
GET /api/v1/phonebook/{id}
Создать
POST /api/v1/phonebook
{
"type": 0,
"name": "Иван Петров",
"shortcode": "1234",
"tags": "VIP",
"phones": [{"type":"mobile","number":"+79991234567"}],
"emails": [{"email":"ivan@example.com"}],
"manager_id": 12,
"notes": "Клиент с 2024"
}
Обновить / удалить
PATCH /api/v1/phonebook/{id}
DELETE /api/v1/phonebook/{id}
Scope для записи: phonebook.write. DELETE — soft (помечает is_deleted=true).
Коллтрекинг
GET /api/v1/calltracker/sources
GET /api/v1/calltracker/visits?from=&to=&limit=100
GET /api/v1/calltracker/calls?from=&to=&limit=100
GET /api/v1/calltracker/callbacks
Scope: calltracker.read. Поля содержат UTM, GeoIP, source_id, привязку к CDR (linkedid).
Чат с сайта
GET /api/v1/chat-widget/sessions
GET /api/v1/chat-widget/sessions/{id}
Scope: chat.read. Второй endpoint возвращает все сообщения сессии.
FMC SIM-карты
GET /api/v1/fmc
Scope: fmc.read
Webhooks (управление подписками)
GET /api/v1/webhooks
POST /api/v1/webhooks {"url":"...", "events":["call.end"]}
DELETE /api/v1/webhooks/{id}
Scope: webhooks.read / webhooks.write. См. отдельную статью.