SpeechLab Public API

REST API orqali qo'ng'iroq tahlili ma'lumotlarini o'z tizimingizga ulang — BI dashboardlar (Power BI, Yandex DataLens), CRM, yoki istalgan ilova. Barcha so'rovlar HTTPS va API kalit bilan amalga oshiriladi.

Kirish

Bazaviy URL (base URL):

https://speechlab.uz/api/v1

Barcha javoblar JSON formatida. Sana/vaqt ISO-8601 (UTC). Ro'yxat endpointlarilimit/offset bilan sahifalanadi vaX-Total-Count sarlavhasini qaytaradi.

Autentifikatsiya

API kalitni Integratsiyalar → API va Webhook'lar bo'limidan yaratasiz. Kalit faqat bir marta ko'rsatiladi — uni xavfsiz saqlang. Har bir so'rovdaAuthorization sarlavhasida yuboring:

Authorization: Bearer sl_live_xxxxxxxxxxxxxxxx

Yoki X-API-Key sarlavhasida. Kalit faqat o'z workspace'ingiz ma'lumotlariga kirish beradi. Ikki turdagi ruxsat (scope):

  • read — ma'lumotlarni o'qish (standart).
  • read,ingest — qo'shimcha: API orqali audio yuborish.

Qo'ng'iroqlar ro'yxati

GET/api/v1/calls

Tahlil qilingan qo'ng'iroqlar ro'yxati. Filtrlar (query parametrlar):

  • date_from, date_toYYYY-MM-DD
  • manager_id, category, lead_quality, language, sentiment
  • min_score, max_score — 0..100
  • analyzed1 yoki 0
  • q — matn qidiruv (transcript/summary/telefon)
  • limit (≤1000, std 100), offset
curl -H "Authorization: Bearer sl_live_..." \
  "https://speechlab.uz/api/v1/calls?date_from=2026-06-01&min_score=70&limit=50"
{
  "data": [
    {
      "id": 1234,
      "filename": "call_001.mp3",
      "phone": "+99890...",
      "manager_id": 5,
      "manager_name": "Aziz",
      "duration_sec": 213,
      "category": "Sotuv",
      "lead_quality": "Issiq",
      "score": 82,
      "overall_sentiment": "positive",
      "sentiment_score": 65,
      "churn_score": 12,
      "summary": "Mijoz narx bilan qiziqdi...",
      "source": "amo",
      "created_at": "2026-06-18 14:05:00"
    }
  ],
  "total": 312, "limit": 50, "offset": 0
}

Bitta qo'ng'iroq (to'liq)

GET/api/v1/calls/:id

Transkript, to'liq tahlil (analysis), QA ball, teglar bilan birga bitta yozuv.

curl -H "Authorization: Bearer sl_live_..." \
  https://speechlab.uz/api/v1/calls/1234

Menejerlar

GET/api/v1/managers

Menejerlar ro'yxati va ular bo'yicha agregat (qo'ng'iroqlar soni, o'rtacha ball).

Statistika (agregat)

GET/api/v1/stats

BI dashboardlar uchun tayyor agregatlar: umumiy ko'rsatkichlar, kun bo'yicha, kategoriya/sentiment/menejer kesimida. Ixtiyoriy date_from/date_to.

{
  "summary": { "calls_total": 312, "calls_analyzed": 300, "avg_score": 74.2, "avg_sentiment": 31.5 },
  "by_day": [ { "day": "2026-06-18", "calls": 41, "avg_score": 76.1 } ],
  "by_category": [ { "category": "Sotuv", "calls": 180, "avg_score": 78.0 } ],
  "by_sentiment": [ { "sentiment": "positive", "calls": 200 } ],
  "by_manager": [ { "manager": "Aziz", "calls": 95, "avg_score": 80.3 } ]
}

Audio yuborish (ingest)

POST/api/v1/calls

read,ingest ruxsatli kalit talab qilinadi. Ikki usul:

1) Fayl yuklash (multipart):

curl -X POST -H "Authorization: Bearer sl_live_..." \
  -F "file=@call.mp3" -F "manager_id=5" -F "phone=+99890..." \
  -F "auto_analyze=true" \
  https://speechlab.uz/api/v1/calls

2) Yozuv havolasi orqali (JSON):

curl -X POST -H "Authorization: Bearer sl_live_..." \
  -H "Content-Type: application/json" \
  -d '{"recording_url":"https://.../rec.mp3","phone":"+99890...","external_id":"crm-77","auto_analyze":true}' \
  https://speechlab.uz/api/v1/calls

auto_analyze: true bo'lsa tahlil darrov fon'da boshlanadi; aks holda navbatdagi avto-tahlilda qayta ishlanadi. Javob: { "id": 1290, "status": "created" }.

Webhook'lar

SpeechLab hodisa yuz berganda sizning URL'ingizga POST yuboradi. Webhook'larni Integratsiyalar → API va Webhook'lar bo'limidan qo'shasiz.

Hodisalar:

  • analysis.completed — qo'ng'iroq tahlil qilinib bo'ldi.
  • call.created — API orqali yangi audio yuklandi.

Payload namunasi:

POST https://sizning-server.uz/webhook
Content-Type: application/json
X-SpeechLab-Event: analysis.completed
X-SpeechLab-Signature: 9f86d081...   (HMAC-SHA256)

{
  "event": "analysis.completed",
  "created_at": "2026-06-19T08:30:00.000Z",
  "data": { "id": 1234, "score": 82, "category": "Sotuv", "overall_sentiment": "positive", "summary": "..." }
}

Imzoni tekshirish (Node.js):

import { createHmac } from "crypto";
const sig = createHmac("sha256", WEBHOOK_SECRET).update(rawBody).digest("hex");
if (sig !== req.headers["x-speechlab-signature"]) return res.status(401).end();

Har bir webhook o'z secret kalitiga ega (UI'da ko'rsatiladi).

Power BI ulanishi

  1. Power BI Desktop → Get Data → WebAdvanced.
  2. URL: https://speechlab.uz/api/v1/stats (yoki /api/v1/calls?limit=1000).
  3. HTTP request header parametrida: Authorization = Bearer sl_live_....
  4. JSON qaytadi — by_day / by_manager jadvalini To Table bilan kengaytiring.
  5. Yangilanish (Refresh) jadvalini sozlang — ma'lumot avtomatik yangilanadi.

Maslahat: katta hajm uchun /api/v1/calls nidate_from/offset bilan sahifalab oling.

Yandex DataLens ulanishi

  1. DataLens → Подключения (Connections) → создать.
  2. Manba sifatida «Файлы и сервисы» → REST/JSON (HTTP) ulagichini tanlang.
  3. URL: https://speechlab.uz/api/v1/stats; sarlavha: Authorization: Bearer sl_live_....
  4. Datasetda by_day massivini jadvalga aylantiring va chart yarating.

DataLens versiyangizda to'g'ridan-to'g'ri REST ulagich bo'lmasa, /api/v1/calls ni CSV eksportiga ulovchi oraliq skript ishlatish mumkin.

O'z LLM / STT modelingiz

Tahlil (LLM) va transkripsiya (STT) uchun o'z provayderingizni — Gemini, GPT, Claude, Whisper, Deepgram va h.k. — ulashingiz mumkin. Bu API kalit emas, balki ilova ichidagi sozlama orqali amalga oshadi:

Integratsiyalar → AI modellar bo'limiga o'ting, kerakli turni (LLM / STT / TTS) tanlab, provayder endpoint va API kalitingizni kiriting. Tahlil shu modelda ishlaydi.

Limitlar va xatolar

  • Rate limit: kalit boshiga ~120 so'rov/daqiqa, IP boshiga ~300/daqiqa.
  • Yuklash hajmi: bitta audio ≤ 30 MB.

Xato javoblari standart shaklda:

{ "error": "Yaroqsiz yoki bekor qilingan API kalit" }
KodMa'no
401Kalit yo'q / yaroqsiz / bekor qilingan
403Ruxsat (scope) yetarli emas — masalan ingest
404Topilmadi
429So'rov chegarasi oshib ketdi
Savollar bo'lsa: API bo'limi · SpeechLab © 2026