Aisha

STT API

Speech-to-Text endpoints. For server-to-server integrations, send X-Api-Key with each request.

Get API key Contact team Base URL https://back.aisha.group
API v1 API v2 STT

Overview #

  1. 1 POST /api/v1/stt/post/ for short audio (sync).
  2. 2 POST /api/v2/stt/post/ for long audio (async, returns task_id).

Prefer a CLI? The aisha-ai npm package wraps these endpoints: npx aisha-ai tts / npx aisha-ai stt. aisha-ai on npm

API Key #

  • API Key

    X-Api-Key: <api_key>

    Recommended for server-to-server integrations.

Short-audio transcription #

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

Upload a short audio file and get the result immediately (sync).

Authentication: Send X-Api-Key. Public requests may require reCAPTCHA.

  • Supported formats: mp3, wav, ogg, m4a (validated on the server).
  • With diarization enabled, audio must be at least 15 seconds.

Request fields #

audio required

file

Audio file.

Example: voice-note.mp3

language

string

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

Example: uz

has_diarization

boolean string

Speaker diarization flag.

Example: false

has_offset

boolean string

Return segment offsets.

Example: false

is_summary

boolean string

Generate summary.

Example: false

title

string

Optional title.

Example: meeting-voice-note

Examples #

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

Responses #

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 codes #

200

Result returned.

400

Missing audio or invalid format.

402

Insufficient balance.

403

Duration limit or access issue.

503

STT service temporarily unavailable.

v1 history list #

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

Returns the user's transcripts with pagination.

Authentication: Requires X-Api-Key.

  • The alias /api/v1/stt/audios/ is also available.

Examples #

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'

Responses #

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 codes #

200

History returned.

403

API key is invalid or missing.

Long-audio transcription (async) #

POST https://back.aisha.group/api/v2/stt/post/

Upload a long audio file. The response includes task_id and PENDING status.

Authentication: Requires X-Api-Key.

  • Max file size: 500MB.

Request fields #

audio required

file

Audio file.

Example: meeting-record.mp3

language

string

Default: uz.

Example: uz

has_diarization

boolean string

Speaker diarization flag.

Example: true

has_offset

boolean string

Offsets flag.

Example: false

is_summary

boolean string

Summary flag.

Example: true

is_meeting

boolean string

Meeting mode flag.

Example: false

title

string

Optional title.

Example: sales-call

Examples #

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'

Responses #

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 codes #

200

Task created.

400

Missing audio or file too large.

401

API key is missing or invalid.

403

Balance or access error.

500

Internal error.

v2 history list #

GET https://back.aisha.group/api/v2/stt/get/

Returns the transcript history list (paginated).

Authentication: Requires X-Api-Key.

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

Examples #

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'

Responses #

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 codes #

200

History/detail returned.

401

API key is missing or invalid.

404

Transcript not found.

v2 transcript detail #

GET https://back.aisha.group/api/v2/stt/get/{id}/

Returns status and result for a single transcript.

Authentication: Requires X-Api-Key.

  • When status=SUCCESS, the transcript result is included.

Examples #

v2 detail

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

Responses #

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 codes #

200

Detail returned.

401

API key is missing or invalid.

404

Transcript not found.

Task status polling #

GET https://back.aisha.group/task-status/{task_id}/?instance_id={id}

Checks async task state. instance_id is required for ownership verification.

Authentication: Requires Bearer token (JWT). Not available via API key.

  • This endpoint uses user auth (JWT), not X-Api-Key.

Examples #

task-status

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

Responses #

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 codes #

200

Task status returned.

400

instance_id missing.

403

Access denied.

500

Task failed/unknown state.