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
Tahlil qilingan qo'ng'iroqlar ro'yxati. Filtrlar (query parametrlar):
date_from,date_to—YYYY-MM-DDmanager_id,category,lead_quality,language,sentimentmin_score,max_score— 0..100analyzed—1yoki0q— 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)
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
Menejerlar ro'yxati va ular bo'yicha agregat (qo'ng'iroqlar soni, o'rtacha ball).
Statistika (agregat)
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)
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/callsauto_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
- Power BI Desktop → Get Data → Web → Advanced.
- URL:
https://speechlab.uz/api/v1/stats(yoki/api/v1/calls?limit=1000). - HTTP request header parametrida:
Authorization=Bearer sl_live_.... - JSON qaytadi —
by_day/by_managerjadvalini To Table bilan kengaytiring. - Yangilanish (Refresh) jadvalini sozlang — ma'lumot avtomatik yangilanadi.
Maslahat: katta hajm uchun /api/v1/calls nidate_from/offset bilan sahifalab oling.
Yandex DataLens ulanishi
- DataLens → Подключения (Connections) → создать.
- Manba sifatida «Файлы и сервисы» → REST/JSON (HTTP) ulagichini tanlang.
- URL:
https://speechlab.uz/api/v1/stats; sarlavha:Authorization: Bearer sl_live_.... - Datasetda
by_daymassivini 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" }| Kod | Ma'no |
|---|---|
| 401 | Kalit yo'q / yaroqsiz / bekor qilingan |
| 403 | Ruxsat (scope) yetarli emas — masalan ingest |
| 404 | Topilmadi |
| 429 | So'rov chegarasi oshib ketdi |