---
title: "Upload Files for Speech to Text Bulk Job V1"
method: POST
path: "/speech-to-text/job/v1/upload-files"
tags: ["speechToTextJob"]
---

# Upload Files for Speech to Text Bulk Job V1

`POST /speech-to-text/job/v1/upload-files`

## Request

- Base URL: `https://api.sarvam.ai`
- URL: `https://api.sarvam.ai/speech-to-text/job/v1/upload-files`
- Auth: none declared. Required headers: `api-subscription-key`
- TypeScript: <https://skmtc.dev/sarvam/apis/endpoints/docs/speech-to-text/job/v1/upload-files/post.ts> (a function with typed inputs; its response is checked against the schema)

Generate presigned upload URLs for audio files that will be processed in a speech to text bulk job

## Headers

- `api-subscription-key` string, required

## Request body

- FilesRequest: Request body for bulk job upload/download URL generation. Both job_id and files are required for download.
  - `job_id` string, required: UUID of the bulk job returned from job initiation.
  - `files` string[], required: 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.

## Response `200`

Successful Response

- FilesUploadResponse
  - `job_id` string, required
  - `job_state` 'Accepted' | 'Pending' | 'Running' | 'Completed' | 'Failed', required
  - `upload_urls` object, required
  - `storage_container_type` 'Azure' | 'Local' | 'Google' | 'Azure_V1', required

## Other responses

- `400`: Bad Request
- `403`: Forbidden
- `422`: Unprocessable Entity
- `429`: Quota Exceeded
- `500`: Internal Server Error
- `503`: Service Overloaded

---

[API](https://skmtc.dev/sarvam/apis/endpoints.md) - [All operations](https://skmtc.dev/sarvam/apis/endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/sarvam/apis/endpoints/revisions/2b7f7955b147?raw)
