Keyterm Prompting
saaras:v4 only. Keyterms are supported only with model="saaras:v4", on the REST, Batch, and WebSocket streaming APIs (both the legacy /speech-to-text/ws and realtime /speech-to-text-realtime/ws endpoints).
Keyterms help Saaras v4 recognize important names, places, brands, and technical terms that may occur in an audio file, for example:
Keyterms bias recognition; they do not guarantee that a term will appear in the transcript.
Rules
Use mode="codemix" instead of mode="transcribe" when a keyterm such as PhonePe must remain in Latin script, the keyterms format is unchanged across all supported modes. See Choosing the transcription mode below.
Upgrade your SDK before using keyterms. Python: verified on sarvamai>=0.1.33a1 for REST, sarvamai>=0.1.33a3 for speech_to_text_job.create_job(). JavaScript: verified on sarvamai>=1.1.10-alpha.1 for speechToTextJob.createJob(), a fix for REST speechToText.transcribe() has not shipped to npm yet; until it’s released, use the JavaScript Batch example below, or the REST cURL/Python examples.
REST API
REST requests use multipart/form-data. Send keyterms as a JSON-encoded array in one form field.
Omit language_code to use automatic language detection.
Batch API
For batch jobs, keyterms is a normal JSON array inside job_parameters.
After creating the job, use the returned job ID to upload the audio, start the job, poll its status, and download the output using the standard Batch API workflow.
Batch with diarization
Add with_diarization. The same keyterms are applied while transcribing every audio chunk in the job, the downloaded result includes the full transcript and, when requested, speaker-attributed entries under diarized_transcript.
See Enable Speaker Diarization for the full diarization output format.
Streaming WebSockets
Both WebSocket endpoints accept keyterms as a query parameter on the connection URL, sent as a JSON-encoded (and URL-encoded) array:
The Python and JavaScript SDK connect() helpers do not expose keyterms yet, so use a raw WebSocket client and append the query parameter yourself:
Keyterms are set when the connection is opened and apply for the whole session; they cannot be changed mid-stream.
Choosing the transcription mode
The keyterms format is unchanged across all supported modes:
For example, use mode="codemix" instead of mode="transcribe" when a keyterm such as PhonePe must remain in Latin script.
Need help choosing between REST and Batch? See Which API to Use.