Skip to main content

Overview

Submit one or more audio files for transcription and receive a job_id immediately. Poll the status endpoint on a fixed interval until the job completes and transcripts are available. Ideal for long recordings, bulk files, or offline pipelines where you do not need a live response. For real-time transcription, see STT Realtime. For short clips under 60 seconds, see STT REST.

Endpoints

Limits & Specifications

View limits and supported formats

Supported Audio Formats

AAC · WAV · FLAC · ALAC · OGG (Vorbis) · OpusUse standard file extensions and MIME types (e.g. .m4a for AAC, .wav, .flac, .ogg).

Authentication

Send these headers on every request both submit and status calls.
Do not set Content-Type: application/json on the submit request. Use multipart/form-data. curl sets the correct boundary automatically when you use -F / --form.

Submit a Transcription Job

POST /stt/v3/batch/submit

Upload audio files and kick off an asynchronous transcription job. The response returns a job_id immediately. the files are not yet transcribed at this point.

Request — Form Fields

Supported Language Codes

The Gnani Prisma v2.5 API supports these 10 Indian languages

Example — curl

Response — 200 OK

Errors


Check Job Status

GET /stt/v3/batch/status/{job_id}

Poll this endpoint to check progress and retrieve transcription results once the job finishes. Call this once every 60 seconds per job_id. do not poll more frequently.

Path Parameter

Example — curl

Response — 200 OK

Job-Level Response Fields

Per-File Result Fields — results[]

Per-Segment Fields — results[].segments[]

Errors


Inverse Text Normalization (ITN)

When format=transcribe is passed in the form body, ITN runs on every file’s transcript after recognition — converting spoken-form numbers, currency, dates, times, and phone numbers into the compact written form a reader expects.

What ITN Normalizes

ITN recognizes six categories of spoken expressions. Every matching span is transformed; all other words pass through unchanged.
Whole numbers and positional ranks are formatted using Indian comma grouping (groups of 2 after the first 3 digits).
All Indian currency expressions — including paise fractions and lakh/crore scales — are formatted with the ₹ symbol and Indian comma grouping.
Indian time-of-day words (सुबह, दोपहर, शाम, रात) automatically map to 24-hour HH:MM output.
10-digit streams → mobile number; 6-digit streams → PIN. Repeat prefixes (double/डबल) are expanded.
A single file may contain segments with multiple entity types or blend Hindi and English. ITN normalizes each entity independently in one pass.

Native Script Digits — itn_native_numerals

By default, ITN outputs Western Arabic digits (0–9) regardless of language. When format=transcribe is set, you can additionally pass itn_native_numerals=true to render digits in the native script of the target language.
English always outputs Western Arabic digits. itn_native_numerals=true has no effect for en-IN.

What ITN Does Not Change

ITN intentionally preserves idiomatic and ambiguous phrases.
  • दो तीन (meaning a few) stays as text, not 2 or 3
  • कर दो / ले दो (imperative verbs) are kept as words, not treated as cardinal 2

Flow Summary

  1. SubmitPOST https://api.vachana.ai/stt/v3/batch/submit with X-API-Key-ID, optional X-API-Request-ID, and form fields audio_files, language_code, and optionally is_multi_channel, format, and itn_native_numerals.
  2. Save the job_id from the submit response.
  3. PollGET https://api.vachana.ai/stt/v3/batch/status/{job_id} (same auth headers) every 60 seconds until status is completed or failed and results is populated.