GET /api/v1/voice/calls/{id} повертає статус дзвінка, тривалість, списані кредити, короткий зміст, аналіз і розшифровку. Список дзвінків — GET /api/v1/voice/calls?agent_id=&status=&channel=&user_id=&page= (user_id: ваш власний ідентифікатор людини з токена вебдзвінка). Його turns — покроковий налагоджувальний журнал дзвінка: куди пішов час від кінця репліки абонента до моменту, коли він почув відповідь, у мілісекундах — waitMs (кінець мовлення), sttMs (розпізнавання), llmMs (перше слово моделі, плюс по одному на кожен раунд функцій), ttsMs (перший звук голосу), firstAudioMs (відповідь почуто) — з викликаними функціями, перебиваннями та помилками. Його показує й сторінка дзвінка.
З recording_enabled кожен дзвінок записується як двоканальний WAV: абонент ліворуч, агент праворуч, із частотою дискретизації дзвінка. За recording_consent: "announce" агент спершу повідомляє, що дзвінок записується; за "ask" — запитує, і запис зберігається, лише якщо абонент погоджується (відсутність відповіді вважається відмовою); за "none" нічого не кажеться. З'ясуйте, що вимагає закон там, де перебуваєте ви та ваші абоненти.
Записи зберігаються у сховищі EvaSay або у вашому власному бакеті, сумісному з S3 (AWS S3, Cloudflare R2, Google Cloud Storage, Supabase, MinIO), що задається в Інтеграції → Вебхуки та сповіщення → Сховище записів. Воркер, який веде дзвінок, завантажує файл просто в бакет. GET /api/v1/voice/calls/{id} повертає recordingUrl, чинний одну годину після збереження запису, та recording.status (recording, stored, declined або failed).
DELETE /api/v1/voice/calls/{id} видаляє завершений дзвінок разом із розшифровкою, записом (у сховищі EvaSay або у вашому бакеті), аналізом і надсиланнями вебхуків. Витрачені Credits лишаються в історії кредитів. Дзвінок, який поки не можна видалити, відповідає 409 з code call_not_deletable_yet: він ще триває або щойно завершився, ще оплачується, запис, можливо, ще завантажується, або за ним є борг у Credits, який не покрив баланс (спершу поповніть Credits).
Коли людина просить видалити її дані, POST /api/v1/voice/calls/delete-by-caller з { "phone_number": "+14155550123" } видаляє всі дзвінки з цим номером (у вхідних — номер абонента, у вихідних — набраний номер), а з { "user_id": "..." } — усі веб-дзвінки з цим user_id у токені. Відповідь: { "deleted": 12, "kept_back": { "settling": 1 }, "more": false }. За один запит видаляється не більше 200 дзвінків, тож повторюйте, доки more дорівнює true, а дзвінки з kept_back видаліть пізніше. Якщо номер є у списку «Не дзвонити», він там залишиться. У панелі те саме робить Дзвінки → Видалити дані абонента.