STT API
Endpoints для Speech-to-Text. Для server-to-server интеграции отправляйте X-Api-Key в каждом запросе.
Overview #
- 1
POST /api/v1/stt/post/для коротких аудио (sync). - 2
POST /api/v2/stt/post/для длинных аудио (async, возвращаетtask_id).
Удобнее CLI? npm-пакет aisha-ai оборачивает эти endpoints: npx aisha-ai tts / npx aisha-ai stt. aisha-ai на npm
API Key #
API Key
X-Api-Key: <api_key>Рекомендуется для server-to-server интеграций.
Транскрипция короткого аудио #
https://back.aisha.group/api/v1/stt/post/ Отправляете аудиофайл и получаете результат сразу (sync).
Аутентификация: Отправьте X-Api-Key. Public-запросы могут требовать reCAPTCHA.
- Поддерживаются аудио форматы mp3, wav, ogg, m4a (проверяется на сервере).
- При diarization аудио должно быть не короче 15 секунд.
Поля запроса #
audio обязательно file
Аудиофайл.
Пример: voice-note.mp3
language string
Supported: uz, en, ru. Default: uz.
Пример: uz
has_diarization boolean string
Флаг diarization.
Пример: false
has_offset boolean string
Флаг offsets.
Пример: false
is_summary boolean string
Флаг summary.
Пример: false
title string
Опциональное название.
Пример: meeting-voice-note
Примеры #
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' CLI (aisha-ai)
export AISHA_API_KEY=your_api_key
npx aisha-ai stt ./audio.wav Ответы #
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 сервис временно недоступен.
v1 history список #
https://back.aisha.group/api/v1/stt/get/?page=1&limit=10 Возвращает список транскрипций user'а с пагинацией.
Аутентификация: Требуется X-Api-Key.
- Также доступен 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' Ответы #
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 неверный или отсутствует.
Длинное аудио (async) #
https://back.aisha.group/api/v2/stt/post/ Отправляете длинное аудио. Возвращается task_id и PENDING.
Аутентификация: Требуется X-Api-Key.
- Max file size: 500MB.
Поля запроса #
audio обязательно file
Аудиофайл.
Пример: meeting-record.mp3
language string
Default: uz.
Пример: uz
has_diarization boolean string
Флаг diarization.
Пример: true
has_offset boolean string
Флаг offsets.
Пример: false
is_summary boolean string
Флаг summary.
Пример: true
is_meeting boolean string
Meeting mode flag.
Пример: false
title string
Опциональное название.
Пример: sales-call
Примеры #
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' Ответы #
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 Внутренняя ошибка.
v2 history список #
https://back.aisha.group/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' Ответы #
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 не найден.
v2 transcript detail #
https://back.aisha.group/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' Ответы #
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 не найден.
Task status polling #
https://back.aisha.group/task-status/{task_id}/?instance_id={id} Проверяет состояние async task. instance_id обязателен для проверки ownership.
Аутентификация: Требуется 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' Ответы #
Pending
{
"task_id": "task-123",
"status": "PENDING",
"transcript_status": "PENDING",
"message": "Task is still processing"
} Success
{
"task_id": "task-123",
"status": "SUCCESS",
"transcript_status": "SUCCESS",
"result": {
"transcript": "Hello world"
}
} Статус-коды #
200 Статус задачи возвращён.
400 Отсутствует instance_id.
403 Доступ запрещён.
500 Task failed/unknown state.