Назад к API документации

Developer docs

STT API

Endpoints для Speech-to-Text. Для server-to-server интеграции отправляйте X-Api-Key в каждом запросе.

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

Быстрый старт

STT API

1

POST /api/v1/stt/post/ для коротких аудио (sync).

2

POST /api/v2/stt/post/ для длинных аудио (async, возвращает task_id).

Аутентификация

API Key

X-Api-Key: <api_key>

Рекомендуется для server-to-server интеграций.

POST

Транскрипция короткого аудио

Endpoint /api/v1/stt/post/

Отправляете аудиофайл и получаете результат сразу (sync).

Аутентификация

Отправьте X-Api-Key. Public-запросы могут требовать reCAPTCHA.

Поддерживаются аудио форматы mp3, wav, ogg, m4a (проверяется на сервере).
При diarization аудио должно быть не короче 15 секунд.

Поля запроса

audio обязательно
Пример: voice-note.mp3
file

Аудиофайл.

language необязательно
Пример: uz
string

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

has_diarization необязательно
Пример: false
boolean string

Флаг diarization.

has_offset необязательно
Пример: false
boolean string

Флаг offsets.

is_summary необязательно
Пример: false
boolean string

Флаг summary.

title необязательно
Пример: meeting-voice-note
string

Опциональное название.

Примеры

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'

Ответы

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."
}

Статус-коды

200

Результат возвращен.

400

Нет аудио или неверный формат.

402

Недостаточно баланса.

403

Ограничение по duration или access.

503

STT сервис временно недоступен.

GET

v1 history список

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

Возвращает список транскрипций user'а с пагинацией.

Аутентификация

Требуется X-Api-Key.

В некоторых местах frontend использует alias /api/v1/stt/audios/.

Примеры

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'

Ответы

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": []
    }
  ]
}

Статус-коды

200

History возвращена.

403

API key неверный или отсутствует.

POST

Длинное аудио (async)

Endpoint /api/v2/stt/post/

Отправляете длинное аудио. Возвращается task_id и PENDING.

Аутентификация

Требуется X-Api-Key.

Max file size: 500MB.

Поля запроса

audio обязательно
Пример: meeting-record.mp3
file

Аудиофайл.

language необязательно
Пример: uz
string

Default: uz.

has_diarization необязательно
Пример: true
boolean string

Флаг diarization.

has_offset необязательно
Пример: false
boolean string

Флаг offsets.

is_summary необязательно
Пример: true
boolean string

Флаг summary.

is_meeting необязательно
Пример: false
boolean string

Meeting mode flag.

title необязательно
Пример: sales-call
string

Опциональное название.

Примеры

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'

Ответы

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"
}

Статус-коды

200

Task создан.

400

Нет аудио или файл слишком большой.

401

API key отсутствует или неверный.

403

Баланс или access.

500

Внутренняя ошибка.

GET

v2 history список

Endpoint /api/v2/stt/get/

History список транскрипций (pagination).

Аутентификация

Требуется X-Api-Key.

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

Примеры

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'

Ответы

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"
    }
  ]
}

Статус-коды

200

History/detail возвращено.

401

API key отсутствует или неверный.

404

Transcript не найден.

GET

v2 transcript detail

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

Возвращает статус и результат одного транскрипта.

Аутентификация

Требуется X-Api-Key.

Когда status=SUCCESS, возвращается результат.

Примеры

v2 detail

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

Ответы

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"
}

Статус-коды

200

Detail возвращён.

401

API key отсутствует или неверный.

404

Transcript не найден.

GET

Task status polling

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

Async task holatini tekshiradi. instance_id ownership tekshiruv uchun majburiy.

Аутентификация

Требуется Bearer token (JWT). Через API key не работает.

Этот endpoint использует user auth (JWT), а не X-Api-Key.

Примеры

task-status

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

Ответы

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"
  }
}

Статус-коды

200

Статус задачи возвращён.

400

Отсутствует instance_id.

403

Доступ запрещён.

500

Task failed/unknown state.