Aisha

TTS API

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

API v1 TTS Sync / Async

Overview #

  1. 1 Для генерации аудио отправьте transcript на POST /api/v1/tts/post/.
  2. 2 Если передать webhook_notification_url, запрос будет обработан async и вернет 202 Accepted.
  3. 3 Проверяйте результат через GET /api/v1/tts/status/{id}/ или history.

Удобнее 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 интеграций.

Создать аудио #

POST https://back.aisha.group/api/v1/tts/post/

Преобразует текст в аудио. Для language=uz используется built-in модель Gulnoza. Для en и ru параметры model, mood, speed не отправляются.

Аутентификация: Отправьте X-Api-Key. Public-запросы могут требовать reCAPTCHA.

  • Лимит: 1000 символов с API key, 500 символов для public-запроса.
  • speed: 0 или значение в диапазоне 0.5-2.0.
  • mood работает только для built-in Gulnoza. При voice_id параметр mood не используется.

Поля запроса #

transcript обязательно

string

Текст для озвучивания.

Пример: Assalomu alaykum

language

string

Поддерживается: uz, en, ru. Default: uz.

Пример: uz

model

string

Только для built-in потока uz. Сейчас доступна только одна модель: Gulnoza.

Пример: Gulnoza

mood

string

Только для built-in Gulnoza. Доступно 4 mood: Neutral, Cheerful, Happy, Sad. Для voice_id, en, ru не отправляется.

Пример: Neutral

speed

float

Только для потока uz. 0 означает default speed. Custom: 0.5-2.0.

Пример: 1.0

voice_id

integer

READY custom voice ID, принадлежащий user'у. Если используется voice_id, mood не отправляется.

Пример: 12

webhook_notification_url

string

Если задан, TTS запускается async.

Пример: https://example.com/webhooks/tts

Примеры #

Sync request

curl --request POST \
  --url https://back.aisha.group/api/v1/tts/post/ \
  --header 'X-Api-Key: your_api_key' \
  --header 'Accept-Language: uz' \
  --form 'transcript=Assalomu alaykum, bu AIsha TTS sinovi.' \
  --form 'language=uz' \
  --form 'model=Gulnoza' \
  --form 'mood=Neutral' \
  --form 'speed=1.0'

Async request

curl --request POST \
  --url https://back.aisha.group/api/v1/tts/post/ \
  --header 'X-Api-Key: your_api_key' \
  --form 'transcript=Webhook orqali qaytadigan sinov matni.' \
  --form 'language=uz' \
  --form 'webhook_notification_url=https://example.com/webhooks/tts'

CLI (aisha-ai)

export AISHA_API_KEY=your_api_key
npx aisha-ai tts "Salom dunyo" --model Gulnoza --out salom.wav

Ответы #

201 Created

Sync success

{
  "audio_path": "/media/tts_audios/request-id.wav"
}
202 Accepted

Async queued

{
  "id": 184,
  "task_id": "7d5f8779-9cb0-4230-9318-2f8c3c3f0e31",
  "status": "PENDING"
}

Статус-коды #

201

Аудио готово, вернулся `audio_path`.

202

Async task поставлен в очередь.

400

Ошибка transcript, language, model или speed.

401

Для custom voice нужна авторизация.

402

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

503

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

Проверить статус #

GET https://back.aisha.group/api/v1/tts/status/{id}/

Возвращает состояние async TTS task.

Аутентификация: Отправьте X-Api-Key.

  • Возможные статусы: PENDING, SUCCESS, FAILED.

Примеры #

Status request

curl --request GET \
  --url https://back.aisha.group/api/v1/tts/status/184/ \
  --header 'X-Api-Key: your_api_key'

Ответы #

200 OK

Pending

{
  "id": 184,
  "status": "PENDING",
  "task_id": "7d5f8779-9cb0-4230-9318-2f8c3c3f0e31"
}
200 OK

Completed

{
  "id": 184,
  "status": "SUCCESS",
  "task_id": "7d5f8779-9cb0-4230-9318-2f8c3c3f0e31",
  "audio_path": "/media/tts_audios/request-id.wav",
  "characters": 42
}

Статус-коды #

200

Статус получен.

403

Нет доступа к record другого user'а.

404

TTS record не найден.

История #

GET https://back.aisha.group/api/v1/tts/get/?page=1&limit=10

Возвращает paginated историю TTS audio текущего user'а.

Аутентификация: Требуется X-Api-Key.

  • Response приходит в формате count, next, previous, results.

Примеры #

History request

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

Ответы #

200 OK

Paginated success

{
  "count": 1,
  "next": null,
  "previous": null,
  "results": [
    {
      "id": 184,
      "transcript": "Assalomu alaykum, bu AIsha TTS sinovi.",
      "audio_url": "/media/tts_audios/request-id.wav",
      "model": "Gulnoza",
      "mood": "Neutral",
      "created_at": "2026-05-04T10:15:30Z"
    }
  ]
}

Статус-коды #

200

History получена.

403

API key неверный или не отправлен.