API hujjatlariga qaytish

Developer docs

STT API

Speech-to-Text endpointlari. Server integratsiya uchun har bir so'rovda X-Api-Key header yuboring.

API v1 API v2 STT https://back.aisha.group

Qisqa qo‘llanma

STT API

1

Qisqa audio uchun POST /api/v1/stt/post/ (sync).

2

Uzun audio uchun POST /api/v2/stt/post/ (async, task_id qaytadi).

Autentifikatsiya

API Key

X-Api-Key: <api_key>

Server-to-server integratsiya uchun tavsiya qilinadi.

POST

Qisqa audio transkripsiya

Endpoint /api/v1/stt/post/

Qisqa audio faylni yuborasiz va natija darhol qaytadi (sync).

Autentifikatsiya

X-Api-Key yuboring. Public so‘rovlar reCAPTCHA talab qilishi mumkin.

Audio formatlar: mp3, wav, ogg, m4a (server tomonda tekshiriladi).
Diarization yoqilsa audio kamida 15 soniya bo‘lishi kerak.

So‘rov maydonlari

audio majburiy
Misol: voice-note.mp3
file

Audio fayl.

language ixtiyoriy
Misol: uz
string

Supported: uz, en, ru. Default: uz.

has_diarization ixtiyoriy
Misol: false
boolean string

Speaker diarization flagi.

has_offset ixtiyoriy
Misol: false
boolean string

Offset segmentlar qaytishi uchun.

is_summary ixtiyoriy
Misol: false
boolean string

Summary yaratish flagi.

title ixtiyoriy
Misol: meeting-voice-note
string

Ixtiyoriy nom.

Misollar

v1 POST

curl --request POST \
  --url https://back.aisha.group/api/v1/stt/post/ \
  --header 'X-Api-Key: your_api_key' \
  --header 'Accept-Language: uz' \
  --form 'audio=@/path/to/voice-note.mp3' \
  --form 'language=uz' \
  --form 'has_diarization=false'

Javoblar

200 OK

Success

{
  "id": 531,
  "gender": "unknown",
  "title": null,
  "created_at": "2026-05-04T10:12:43.212Z",
  "duration": 18.7,
  "transcript": "Assalomu alaykum, bu qisqa audio transkripsiyasi."
}

Status kodlari

200

Natija qaytdi.

400

Audio yo'q yoki format noto'g'ri.

402

Balans yetarli emas.

403

Duration limiti yoki access muammosi.

503

STT servis vaqtincha unavailable.

GET

v1 history ro'yxati

Endpoint /api/v1/stt/get/?page=1&limit=10

Userga tegishli transkriptlar ro‘yxatini paginatsiya bilan qaytaradi.

Autentifikatsiya

X-Api-Key talab qilinadi.

Frontend ba'zi joylarda alias sifatida /api/v1/stt/audios/ dan ham foydalanadi.

Misollar

v1 GET history

curl --request GET \
  --url 'https://back.aisha.group/api/v1/stt/get/?page=1&limit=10' \
  --header 'X-Api-Key: your_api_key'

Javoblar

200 OK

Paginated success

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 531,
      "title": null,
      "gender": "unknown",
      "status": "SUCCESS",
      "language": "uz",
      "created_at": "2026-05-04T10:12:43.212Z",
      "duration": 18.7,
      "transcript": "Assalomu alaykum, bu qisqa audio transkripsiyasi.",
      "summary": "",
      "diarization": [],
      "audio_url": "/media/audio/f35f6c3a.wav",
      "speakers": []
    }
  ]
}

Status kodlari

200

History qaytdi.

403

API key noto'g'ri yoki yuborilmagan.

POST

Uzun audio async transkripsiya

Endpoint /api/v2/stt/post/

Uzun audio fayl yuborasiz. Javobda task_id va PENDING status qaytadi.

Autentifikatsiya

X-Api-Key talab qilinadi.

Max file size: 500MB.

So‘rov maydonlari

audio majburiy
Misol: meeting-record.mp3
file

Audio fayl.

language ixtiyoriy
Misol: uz
string

Default: uz.

has_diarization ixtiyoriy
Misol: true
boolean string

Speaker diarization flagi.

has_offset ixtiyoriy
Misol: false
boolean string

Offset flagi.

is_summary ixtiyoriy
Misol: true
boolean string

Summary flagi.

is_meeting ixtiyoriy
Misol: false
boolean string

Meeting mode flagi.

title ixtiyoriy
Misol: sales-call
string

Ixtiyoriy nom.

Misollar

v2 POST

curl --request POST \
  --url https://back.aisha.group/api/v2/stt/post/ \
  --header 'X-Api-Key: your_api_key' \
  --form 'audio=@/path/to/meeting-record.mp3' \
  --form 'language=uz' \
  --form 'has_diarization=true' \
  --form 'is_summary=true'

Javoblar

200 OK

Queued

{
  "id": 901,
  "has_diarization": true,
  "is_meeting": false,
  "task_id": "66e92db4-95cf-4bb9-acbc-49462039d19f",
  "status": "PENDING",
  "title": "sales-call-13-aprel",
  "audio_url": "/media/audio/273bc5f8-1f91-4573-b3df-3c38c44294d0.mp3"
}

Status kodlari

200

Task yaratildi.

400

Audio yo'q yoki file juda katta.

401

API key yuborilmagan yoki noto'g'ri.

403

Balans yoki access xatosi.

500

Ichki xato.

GET

v2 history ro'yxati

Endpoint /api/v2/stt/get/

Async transkriptlarni paginatsiya bilan history ro‘yxati.

Autentifikatsiya

X-Api-Key talab qilinadi.

Detail uchun alohida endpoint: GET /api/v2/stt/get/{id}/.

Misollar

v2 history

curl --request GET \
  --url 'https://back.aisha.group/api/v2/stt/get/?page=1&limit=10' \
  --header 'X-Api-Key: your_api_key'

Javoblar

200 OK

History

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 901,
      "title": "sales-call-13-aprel",
      "status": "PENDING",
      "created_at": "2026-05-04T10:39:58.501Z",
      "duration": null,
      "audio_url": "/media/audio/273bc5f8-1f91-4573-b3df-3c38c44294d0.mp3"
    }
  ]
}

Status kodlari

200

History yoki detail qaytdi.

401

API key yuborilmagan yoki noto'g'ri.

404

Transcript topilmadi.

GET

v2 transcript detail

Endpoint /api/v2/stt/get/{id}/

Bitta async transkript yozuvining holati va natijasini qaytaradi.

Autentifikatsiya

X-Api-Key talab qilinadi.

Status SUCCESS bo'lganda transcript natijasi qaytadi.

Misollar

v2 detail

curl --request GET \
  --url https://back.aisha.group/api/v2/stt/get/901/ \
  --header 'X-Api-Key: your_api_key'

Javoblar

200 OK

Completed

{
  "id": 901,
  "title": "sales-call-13-aprel",
  "status": "SUCCESS",
  "created_at": "2026-05-04T10:39:58.501Z",
  "duration": 612.4,
  "transcript": "Uzoq meeting transcript matni...",
  "summary": "Qisqa summary...",
  "diarization": [],
  "audio_url": "/media/audio/273bc5f8-1f91-4573-b3df-3c38c44294d0.mp3"
}

Status kodlari

200

Detail qaytdi.

401

API key yuborilmagan yoki noto'g'ri.

404

Transcript topilmadi.

GET

Task status polling

Endpoint /task-status/{task_id}/?instance_id={id}

Async task holatini tekshiradi. instance_id ownership tekshiruv uchun majburiy.

Autentifikatsiya

Bearer token (JWT) talab qilinadi. API key bilan ishlamaydi.

Bu endpoint X-Api-Key emas, user session/JWT bilan ishlaydi.

Misollar

task-status

curl --request GET \
  --url 'https://back.aisha.group/task-status/task-123/?instance_id=944' \
  --header 'Authorization: Bearer your_access_token'

Javoblar

200 OK

Pending

{
  "task_id": "task-123",
  "status": "PENDING",
  "transcript_status": "PENDING",
  "message": "Task is still processing"
}
200 OK

Success

{
  "task_id": "task-123",
  "status": "SUCCESS",
  "transcript_status": "SUCCESS",
  "result": {
    "transcript": "Hello world"
  }
}

Status kodlari

200

Task holati qaytdi.

400

instance_id yo'q.

403

Access rad etildi.

500

Task failed yoki unknown state.