Sarvam speechToTextTranslateJob API
The speechToTextTranslateJob API from Sarvam — 5 operation(s) for speechtotexttranslatejob.
The speechToTextTranslateJob API from Sarvam — 5 operation(s) for speechtotexttranslatejob.
openapi: 3.1.0
info:
title: Endpoints chat speechToTextTranslateJob API
version: 1.0.0
servers:
- url: https://api.sarvam.ai
description: Production
tags:
- name: speechToTextTranslateJob
paths:
/speech-to-text-translate/job/v1:
post:
operationId: initialise
summary: Initiate Speech to Text Translate Bulk Job V1
description: Create a new speech to text translate bulk job and receive a job UUID and storage folder details for processing multiple audio files with translation. Set `job_parameters.input_audio_codec` when uploads are raw PCM (`pcm_s16le`, `pcm_l16`, or `pcm_raw`); the API auto-detects other formats. PCM must be 16 kHz.
tags:
- speechToTextTranslateJob
parameters:
- name: ptu_id
in: query
required: false
schema:
type:
- integer
- 'null'
- name: api-subscription-key
in: header
required: true
schema:
type: string
- name: api-subscription-key
in: header
description: 'Your unique subscription key for authenticating requests to the Sarvam AI Speech-to-Text API.
[Here are the steps to get your api key](https://docs.sarvam.ai/api-reference-docs/authentication#obtaining-your-api-subscription-key)'
required: false
schema:
type: string
default: ''
responses:
'202':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/BulkJobInitResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'429':
description: Quota Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'503':
description: Service Overloaded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/BulkJobInitRequestV1_SpeechToTextTranslateJobParameters_'
/speech-to-text-translate/job/v1/upload-files:
post:
operationId: get-upload-links
summary: Upload Files for Speech to Text Translate Bulk Job V1
description: Generate presigned upload URLs for audio files that will be processed in a speech to text translate bulk job
tags:
- speechToTextTranslateJob
parameters:
- name: ptu_id
in: query
required: false
schema:
type:
- integer
- 'null'
- name: api-subscription-key
in: header
required: true
schema:
type: string
- name: api-subscription-key
in: header
description: 'Your unique subscription key for authenticating requests to the Sarvam AI Speech-to-Text API.
[Here are the steps to get your api key](https://docs.sarvam.ai/api-reference-docs/authentication#obtaining-your-api-subscription-key)'
required: false
schema:
type: string
default: ''
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/FilesUploadResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'429':
description: Quota Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'503':
description: Service Overloaded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FilesRequest'
/speech-to-text-translate/job/v1/{job_id}/start:
post:
operationId: start
summary: Start Speech to Text Translate Bulk Job V1
description: Start processing a speech to text translate bulk job after all audio files have been uploaded
tags:
- speechToTextTranslateJob
parameters:
- name: job_id
in: path
description: The unique identifier of the job
required: true
schema:
type: string
- name: ptu_id
in: query
required: false
schema:
type:
- integer
- 'null'
- name: api-subscription-key
in: header
required: true
schema:
type: string
- name: api-subscription-key
in: header
description: 'Your unique subscription key for authenticating requests to the Sarvam AI Speech-to-Text API.
[Here are the steps to get your api key](https://docs.sarvam.ai/api-reference-docs/authentication#obtaining-your-api-subscription-key)'
required: false
schema:
type: string
default: ''
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/JobStatusResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'429':
description: Quota Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'503':
description: Service Overloaded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/speech-to-text-translate/job/v1/{job_id}/status:
get:
operationId: get-status
summary: Get Speech to Text Translate Bulk Job V1 Status
description: 'Retrieve the current status and details of a speech to text translate bulk job, including progress and file-level information.
**Rate Limiting Best Practice:** To prevent rate limit errors and ensure optimal server performance, we recommend implementing a minimum 5-millisecond delay between consecutive status polling requests. This helps maintain system stability while still providing timely status updates.'
tags:
- speechToTextTranslateJob
parameters:
- name: job_id
in: path
description: The unique identifier of the job
required: true
schema:
type: string
- name: api-subscription-key
in: header
required: true
schema:
type: string
- name: api-subscription-key
in: header
description: 'Your unique subscription key for authenticating requests to the Sarvam AI Speech-to-Text API.
[Here are the steps to get your api key](https://docs.sarvam.ai/api-reference-docs/authentication#obtaining-your-api-subscription-key)'
required: false
schema:
type: string
default: ''
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/JobStatusResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'429':
description: Quota Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'503':
description: Service Overloaded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
/speech-to-text-translate/job/v1/download-files:
post:
operationId: get-download-links
summary: Download Files for Speech to Text Translate Bulk Job V1
description: 'Generate presigned download URLs for the translated transcription output files of a completed speech to text translate bulk job.
**Required body fields:** `job_id` and `files` (array of output filenames such as `"0.json"`). Obtain filenames from the job status response after the job completes.
**Method:** POST only (GET returns 405).'
tags:
- speechToTextTranslateJob
parameters:
- name: ptu_id
in: query
required: false
schema:
type:
- integer
- 'null'
- name: api-subscription-key
in: header
required: true
schema:
type: string
- name: api-subscription-key
in: header
description: 'Your unique subscription key for authenticating requests to the Sarvam AI Speech-to-Text API.
[Here are the steps to get your api key](https://docs.sarvam.ai/api-reference-docs/authentication#obtaining-your-api-subscription-key)'
required: false
schema:
type: string
default: ''
responses:
'200':
description: Successful Response
content:
application/json:
schema:
$ref: '#/components/schemas/FilesDownloadResponse'
'400':
description: Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'403':
description: Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'422':
description: Unprocessable Entity
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'429':
description: Quota Exceeded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'500':
description: Internal Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
'503':
description: Service Overloaded
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorMessage'
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/FilesRequest'
components:
schemas:
ErrorDetails:
type: object
properties:
message:
type: string
description: Message describing the error
code:
$ref: '#/components/schemas/ErrorCode'
description: Error code for the specific error that has occurred. Refer to the error code documentation for more details.
request_id:
type: string
default: ''
description: 'Unique identifier for the request. Format: date_UUID4'
required:
- message
- code
title: ErrorDetails
BaseJobParameters:
type: object
properties: {}
title: BaseJobParameters
ErrorMessage:
type: object
properties:
error:
$ref: '#/components/schemas/ErrorDetails'
description: Error details
required:
- error
title: ErrorMessage
TaskDetail:
type: object
properties:
inputs:
type: array
items:
$ref: '#/components/schemas/TaskFileDetails'
outputs:
type: array
items:
$ref: '#/components/schemas/TaskFileDetails'
state:
$ref: '#/components/schemas/TaskState'
error_message:
type:
- string
- 'null'
exception_name:
type:
- string
- 'null'
title: TaskDetail
JobState:
type: string
enum:
- Accepted
- Pending
- Running
- Completed
- Failed
title: JobState
SpeechToTextTranslateJobParameters:
type: object
properties:
prompt:
type:
- string
- 'null'
description: Prompt to assist the transcription
model:
$ref: '#/components/schemas/Sarvam_Model_API_SpeechToTextTranslateModel'
description: "Model to be used for speech to text translation.\n\n- **saaras:v2.5** (default): Translation model that translates audio from any spoken Indic language to English.\n - Example: Hindi audio → English text output\n\nFor the latest model (saaras:v3), use the `/speech-to-text` endpoint with `mode=\"translate\"`."
with_diarization:
type: boolean
default: false
description: "Enables speaker diarization, which identifies and separates different speakers in the audio.\n When set to true, the API will provide speaker-specific segments in the response.\n Note: This parameter is currently in Beta mode."
num_speakers:
type:
- integer
- 'null'
description: Number of speakers to be detected in the audio. This is used when with_diarization is set to true.
input_audio_codec:
$ref: '#/components/schemas/Sarvam_Model_API_InputAudioCodec'
description: Audio codec/format of uploaded files. The API automatically detects most formats; for PCM files (pcm_s16le, pcm_l16, pcm_raw), you must specify this parameter. PCM files are supported only at 16kHz sample rate.
title: SpeechToTextTranslateJobParameters
FilesDownloadResponse:
type: object
properties:
job_id:
type: string
job_state:
$ref: '#/components/schemas/JobState'
download_urls:
type: object
additionalProperties:
$ref: '#/components/schemas/FileSignedURLDetails'
storage_container_type:
$ref: '#/components/schemas/StorageContainerType'
required:
- job_id
- job_state
- download_urls
- storage_container_type
title: FilesDownloadResponse
Sarvam_Model_API_SpeechToTextTranslateModel:
type: string
enum:
- saaras:v2.5
description: "Model to be used for speech to text translation.\n\n- **saaras:v2.5** (default): Translation model that translates audio from any spoken Indic language to English.\n - Example: Hindi audio → English text output\n\nFor the latest model (saaras:v3), use the `/speech-to-text` endpoint with `mode=\"translate\"`."
title: Sarvam_Model_API_SpeechToTextTranslateModel
BulkJobCallback:
type: object
properties:
url:
type: string
description: Webhook url to call upon job completion
auth_token:
type: string
default: ''
description: Authorization token required for the callback Url
required:
- url
title: BulkJobCallback
BulkJobInitResponse:
type: object
properties:
job_id:
type: string
description: Job UUID.
storage_container_type:
$ref: '#/components/schemas/StorageContainerType'
description: Storage Container Type
job_parameters:
$ref: '#/components/schemas/BaseJobParameters'
job_state:
$ref: '#/components/schemas/JobState'
required:
- job_id
- storage_container_type
- job_parameters
- job_state
title: BulkJobInitResponse
TaskState:
type: string
enum:
- Success
- API Error
- Internal Server Error
title: TaskState
StorageContainerType:
type: string
enum:
- Azure
- Local
- Google
- Azure_V1
title: StorageContainerType
FilesUploadResponse:
type: object
properties:
job_id:
type: string
job_state:
$ref: '#/components/schemas/JobState'
upload_urls:
type: object
additionalProperties:
$ref: '#/components/schemas/FileSignedURLDetails'
storage_container_type:
$ref: '#/components/schemas/StorageContainerType'
required:
- job_id
- job_state
- upload_urls
- storage_container_type
title: FilesUploadResponse
TaskFileDetails:
type: object
properties:
file_name:
type: string
file_id:
type: string
required:
- file_name
- file_id
title: TaskFileDetails
JobStatusResponse:
type: object
properties:
job_state:
$ref: '#/components/schemas/JobState'
description: Job State
created_at:
type: string
description: Created At
updated_at:
type: string
description: Updated At
job_id:
type: string
description: Job Id
total_files:
type: integer
default: 0
description: Total Files
successful_files_count:
type: integer
default: 0
description: Success Count
failed_files_count:
type: integer
default: 0
description: Failed Count
storage_container_type:
$ref: '#/components/schemas/StorageContainerType'
description: Storage Container Type
error_message:
type: string
default: ''
description: Error Message
job_details:
type: array
items:
$ref: '#/components/schemas/TaskDetail'
description: Job details at file level.
required:
- job_state
- created_at
- updated_at
- job_id
- storage_container_type
title: JobStatusResponse
BulkJobInitRequestV1_SpeechToTextTranslateJobParameters_:
type: object
properties:
job_parameters:
$ref: '#/components/schemas/SpeechToTextTranslateJobParameters'
description: Job Parameters for the bulk job
callback:
oneOf:
- $ref: '#/components/schemas/BulkJobCallback'
- type: 'null'
description: Parameters for callback URL
required:
- job_parameters
title: BulkJobInitRequestV1_SpeechToTextTranslateJobParameters_
FileSignedURLDetails:
type: object
properties:
file_url:
type: string
file_metadata:
type:
- object
- 'null'
additionalProperties:
description: Any type
required:
- file_url
title: FileSignedURLDetails
FilesRequest:
type: object
properties:
job_id:
type: string
description: UUID of the bulk job returned from job initiation.
files:
type: array
items:
type: string
description: 'Required. Output filenames to download (e.g. "0.json"). Get these from the job status response: job_details[].outputs[].file_name after the job completes.'
required:
- job_id
- files
description: Request body for bulk job upload/download URL generation. Both job_id and files are required for download.
title: FilesRequest
Sarvam_Model_API_InputAudioCodec:
type: string
enum:
- wav
- x-wav
- wave
- mp3
- mpeg
- mpeg3
- x-mp3
- x-mpeg-3
- aac
- x-aac
- aiff
- x-aiff
- ogg
- opus
- flac
- x-flac
- mp4
- x-m4a
- amr
- x-ms-wma
- webm
- pcm_s16le
- pcm_l16
- pcm_raw
description: Audio codec/format of the input file. Our API automatically detects all codec formats, but for PCM files specifically (pcm_s16le, pcm_l16, pcm_raw), you must pass this parameter. PCM files are supported only at 16kHz sample rate.
title: Sarvam_Model_API_InputAudioCodec
ErrorCode:
type: string
enum:
- invalid_request_error
- internal_server_error
- unprocessable_entity_error
- insufficient_quota_error
- invalid_api_key_error
- authentication_error
- rate_limit_exceeded_error
- not_found_error
title: ErrorCode
securitySchemes:
ApiKeyAuth:
type: apiKey
in: header
name: api-subscription-key
HTTPBearer:
type: http
scheme: bearer