---
title: "Speech to Text (REST)"
method: POST
path: "/stt/v3"
tags: ["Speech-to-Text"]
---

# Speech to Text (REST)

`POST /stt/v3`

## Request

- Base URL: `https://api.vachana.ai`
- URL: `https://api.vachana.ai/stt/v3`
- Auth: API key in header `X-API-Key-ID`
- TypeScript: <https://skmtc.dev/gnani/apis/vachana-speech-to-text-api/docs/stt/v3/post.ts> (a function with typed inputs; its response is checked against the schema)

Convert speech audio to text using Vachana's state-of-the-art Speech-To-Text models.

## Features
- Supports 10 Indian languages with dedicated monolingual models
- Multilingual support for English and Hindi together
- Automatic audio format conversion

## Supported Languages
| Language | Code |
|----------|------|
| Bengali | `bn-IN` |
| English (India) | `en-IN` |
| Gujarati | `gu-IN` |
| Hindi | `hi-IN` |
| Kannada | `kn-IN` |
| Malayalam | `ml-IN` |
| Marathi | `mr-IN` |
| Punjabi | `pa-IN` |
| Tamil | `ta-IN` |
| Telugu | `te-IN` |

## Model Selection
- **Single language**: Uses the dedicated monolingual model for that language
- **Multiple languages**: Uses multilingual model (supports en-IN, hi-IN)

## Audio Constraints
- **Maximum duration**: 30 seconds (Ideal duration is 30 seconds)
- **Supported formats**: WAV, MP3, OGG, FLAC, AAC, M4A
- **Sample rate**: Automatically converted to 16000 Hz mono

## Response
Returns a JSON object containing:
- `success`: Operation status (boolean)
- `timestamp`: Request timestamp (format: YYYYMMDD_HHMMSS.mmm)
- `transcript`: The transcribed text

## Request body `multipart/form-data`

- BodySttDecodeSttV3Post
  - `audio_file` string, binary, required: Audio file to transcribe. Supported formats - WAV, MP3, OGG, FLAC, AAC, M4A. Maximum duration - 60 seconds (Ideal duration is 30 seconds).
  - `language_code` 'bn-IN' | 'en-IN' | 'gu-IN' | 'hi-IN' | 'kn-IN' | 'ml-IN' | 'mr-IN' | 'pa-IN' | 'ta-IN' | 'te-IN', required: Language code for transcription. Use one of the supported language codes. **Supported values**: `bn-IN`, `en-IN`, `gu-IN`, `hi-IN`, `kn-IN`, `ml-IN`, `mr-IN`, `pa-IN`, `ta-IN`, `te-IN`
  - `format` 'verbatim' | 'transcribe': Output format for the transcript. - `verbatim` *(default)* — Returns the raw spoken-form transcript as recognised by the ASR engine. No post-processing is applied. - `transcribe` — Enables Inverse Text Normalization (ITN). Spoken numeric expressions, currency, dates, times, and phone numbers are automatically converted to their written form (e.g. "five thousand rupees" → "₹5,000").
  - `itn_native_numerals` boolean: When `format=transcribe`, set to `true` to render digits in the native script of the target language instead of Western Arabic digits (0–9). For example, with `hi-IN`: "पाँच हज़ार रुपये" → `"₹५,०००"` instead of `"₹5,000"`. Has no effect when `format=verbatim`.

## Response `200`

Successful transcription

- STTResponse
  - `success` boolean: Indicates if the transcription was successful
  - `timestamp` string: Request timestamp in format YYYYMMDD_HHMMSS.mmm
  - `transcript` string: The transcribed text from the audio

## Other responses

- `400`: Bad Request
- `429`: Too Many Requests
- `500`: Internal Server Error
- `503`: Service Unavailable

---

[API](https://skmtc.dev/gnani/apis/vachana-speech-to-text-api.md) - [All operations](https://skmtc.dev/gnani/apis/vachana-speech-to-text-api/llms.txt) - [OpenAPI document](https://skmtc.dev/gnani/apis/vachana-speech-to-text-api/revisions/d9f838824278?raw)
