AI Call

Analytics

API Reference

Інтегруйте аналітику дзвінків з будь-яким зовнішнім сервісом.

Згенеруйте API-ключ у Налаштуваннях →

Base URL

https://your-domain.com/api/v1

Автентифікація

Передавайте API-ключ у заголовку Authorization кожного запиту:

Authorization: Bearer aca_your_api_key_here

API-ключі починаються з aca_. Згенеруйте свій у Налаштуваннях.

Швидкий старт

Завантажте аудіофайл, потім опитуйте до завершення аналізу:

# 1. Upload an audio file for analysis (returns 202 immediately)
curl -X POST https://your-domain.com/api/v1/calls \
  -H "Authorization: Bearer aca_your_key_here" \
  -F "file=@/path/to/call.mp3" \
  -F "reportType=medium"

# Response → { "id": "cmp...", "status": "queued", "pollUrl": "/api/v1/calls/cmp..." }

# 2. Poll until status === "completed" or "failed"
curl https://your-domain.com/api/v1/calls/cmp... \
  -H "Authorization: Bearer aca_your_key_here"
// JavaScript — upload and wait for result
async function analyzeCall(filePath, apiKey) {
  const form = new FormData();
  form.append('file', fs.createReadStream(filePath));
  form.append('reportType', 'medium');

  const upload = await fetch('https://your-domain.com/api/v1/calls', {
    method: 'POST',
    headers: { Authorization: `Bearer ${apiKey}` },
    body: form,
  });
  const { id } = await upload.json(); // status: 202

  // Poll every 5 seconds until done
  while (true) {
    await new Promise(r => setTimeout(r, 5000));
    const res = await fetch(`https://your-domain.com/api/v1/calls/${id}`, {
      headers: { Authorization: `Bearer ${apiKey}` },
    });
    const call = await res.json();
    if (call.status === 'completed') return call;
    if (call.status === 'failed')    throw new Error(call.errorMessage);
  }
}

Endpoints

GET/api/v1/me

Повертає акаунт, пов'язаний з вашим API-ключем. Корисно для перевірки ключа.

POST/api/v1/calls

Завантажте аудіофайл для транскрипції та AI-аналізу. Повертає HTTP 202 одразу з ID дзвінка. Опитуйте GET /api/v1/calls/:id поки статус не стане 'completed' або 'failed'. Аудіофайл автоматично видаляється після аналізу.

ПараметрТипОпис
fileФайл (multipart)Аудіофайл — MP3, WAV, M4A, OGG, FLAC, AAC, WMA
reportTypestringhigh_level · medium · detailed (за замовчуванням: medium)
GET/api/v1/calls

Повертає список ваших дзвінків з пагінацією, відсортований за датою (найновіші першими).

ПараметрТипОпис
limitintegerКількість результатів (1–100, за замовчуванням 50)
offsetintegerПропустити N записів для пагінації (за замовчуванням 0)
statusstringФільтр за статусом: queued · transcribing · analyzing · completed · failed
GET/api/v1/calls/:id

Повертає повний аналіз одного дзвінка — транскрипцію, оцінку, резюме, проблеми, рекомендації та всі секції звіту.

Приклад — відповідь GET /api/v1/calls

{
  "calls": [
    {
      "id": "cmpranw3g00049gvmy1r4tgfv",
      "fileName": "call_2024-01-15.mp3",
      "status": "completed",
      "reportType": "medium",
      "language": "uk",
      "product": "CRM Software",
      "saleStatus": "sold",
      "score": 8,
      "createdAt": "2024-01-15T10:30:00.000Z",
      "updatedAt": "2024-01-15T10:31:45.000Z"
    }
  ],
  "total": 42,
  "limit": 50,
  "offset": 0
}

Приклад — відповідь GET /api/v1/calls/:id

{
  "id": "cmpranw3g00049gvmy1r4tgfv",
  "fileName": "call_2024-01-15.mp3",
  "status": "completed",
  "language": "uk",
  "product": "CRM Software",
  "saleStatus": "sold",
  "score": 8,
  "summary": "Manager successfully presented the product...",
  "customerIntent": "Looking to automate sales tracking",
  "nextStep": "Schedule demo for next week",
  "issues": ["Did not ask about budget", "Interrupted customer twice"],
  "positives": ["Strong product knowledge", "Good rapport"],
  "recommendations": ["Ask discovery questions earlier"],
  "objections": ["Price is too high"],
  "managerMistakes": ["Skipped needs analysis"],
  "detailedReport": [...],
  "transcript": "Manager: Hello...",
  "createdAt": "2024-01-15T10:30:00.000Z"
}

Коди помилок

HTTP статусОпис
200Успіх
202Прийнято — дзвінок поставлено в чергу
401Відсутній або недійсний API-ключ
404Ресурс не знайдено (або він належить іншому акаунту)
500Помилка сервера — спробуйте ще раз

Протестуйте

Протестуйте

Надішліть живий запит прямо з браузера.