Create Job
curl --request POST \
--url https://api.vachana.ai/stt/v3/batch/jobs \
--header 'Content-Type: application/json' \
--header 'X-API-Key-ID: <api-key>' \
--data '
{
"config": {
"model": "gnani-prisma-v2.5",
"language_code": "en-IN",
"mode": "transcribe",
"with_diarization": false,
"is_multi_channel": false
},
"source": {
"type": "cloud_storage",
"auth": {
"mode": "public"
},
"paths": [
"https://cdn.example.com/audio/call-001.mp3"
]
}
}
'import requests
url = "https://api.vachana.ai/stt/v3/batch/jobs"
payload = {
"config": {
"model": "gnani-prisma-v2.5",
"language_code": "en-IN",
"mode": "transcribe",
"with_diarization": False,
"is_multi_channel": False
},
"source": {
"type": "cloud_storage",
"auth": { "mode": "public" },
"paths": ["https://cdn.example.com/audio/call-001.mp3"]
}
}
headers = {
"X-API-Key-ID": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key-ID': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
config: {
model: 'gnani-prisma-v2.5',
language_code: 'en-IN',
mode: 'transcribe',
with_diarization: false,
is_multi_channel: false
},
source: {
type: 'cloud_storage',
auth: {mode: 'public'},
paths: ['https://cdn.example.com/audio/call-001.mp3']
}
})
};
fetch('https://api.vachana.ai/stt/v3/batch/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"job_id": "019fa854-1db0-7e45-a026-7a6b09ff6d7c",
"status": "CREATED",
"created_at": "2026-07-28T10:45:12.769450Z",
"message": "Job created. Call POST /stt/v3/batch/jobs/{job_id}/start to begin processing.",
"total_files_accepted": null
}Create Job
Create a new batch transcription job with uploaded files, a ZIP, or public URLs.
POST
/
stt
/
v3
/
batch
/
jobs
Create Job
curl --request POST \
--url https://api.vachana.ai/stt/v3/batch/jobs \
--header 'Content-Type: application/json' \
--header 'X-API-Key-ID: <api-key>' \
--data '
{
"config": {
"model": "gnani-prisma-v2.5",
"language_code": "en-IN",
"mode": "transcribe",
"with_diarization": false,
"is_multi_channel": false
},
"source": {
"type": "cloud_storage",
"auth": {
"mode": "public"
},
"paths": [
"https://cdn.example.com/audio/call-001.mp3"
]
}
}
'import requests
url = "https://api.vachana.ai/stt/v3/batch/jobs"
payload = {
"config": {
"model": "gnani-prisma-v2.5",
"language_code": "en-IN",
"mode": "transcribe",
"with_diarization": False,
"is_multi_channel": False
},
"source": {
"type": "cloud_storage",
"auth": { "mode": "public" },
"paths": ["https://cdn.example.com/audio/call-001.mp3"]
}
}
headers = {
"X-API-Key-ID": "<api-key>",
"Content-Type": "application/json"
}
response = requests.post(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'POST',
headers: {'X-API-Key-ID': '<api-key>', 'Content-Type': 'application/json'},
body: JSON.stringify({
config: {
model: 'gnani-prisma-v2.5',
language_code: 'en-IN',
mode: 'transcribe',
with_diarization: false,
is_multi_channel: false
},
source: {
type: 'cloud_storage',
auth: {mode: 'public'},
paths: ['https://cdn.example.com/audio/call-001.mp3']
}
})
};
fetch('https://api.vachana.ai/stt/v3/batch/jobs', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"job_id": "019fa854-1db0-7e45-a026-7a6b09ff6d7c",
"status": "CREATED",
"created_at": "2026-07-28T10:45:12.769450Z",
"message": "Job created. Call POST /stt/v3/batch/jobs/{job_id}/start to begin processing.",
"total_files_accepted": null
}Overview
Create a new batch transcription job within your organization. The job is created inCREATED status with your audio accepted — it does not start transcription yet.
You can then start processing via the Start Job endpoint.
| Method | Best for | Content-Type |
|---|---|---|
| Direct upload / ZIP | Files on your machine or CI | multipart/form-data |
| Public URL | HTTPS links, including S3 presigned URLs | application/json |
Authentication
| Header | Required | Description |
|---|---|---|
X-API-Key-ID | Yes | Your Gnani Prisma v2.5 API key |
Request Body
Multipart upload
string
required
JSON string with STT configuration. Required fields:
model, language_code. Optional: mode, with_diarization, num_speakers, is_multi_channel.file
required
Audio file or ZIP archive. Repeat this field for multiple files. Max 100 files per job, 10 MB per file. ZIP up to 50 MB compressed.
string
Optional HTTPS webhook URL. When set, Gnani POSTs terminal job results (including
full_transcript) to this URL.Public URL (JSON)
| Field | Type | Required | Description |
|---|---|---|---|
config | object | Yes | STT config object |
source.type | string | Yes | "cloud_storage" |
source.auth.mode | string | Yes | "public" |
source.paths | string[] | Yes | Public HTTPS URLs |
callback_url | string | No | Webhook URL |
Example cURL
curl -X POST "https://api.vachana.ai/stt/v3/batch/jobs" \
-H "X-API-Key-ID: <YOUR_API_KEY>" \
-F 'config={"model":"gnani-prisma-v2.5","language_code":"en-IN","mode":"transcribe","with_diarization":false,"is_multi_channel":false};type=application/json' \
-F "files=@./customer_call.wav"
Response
Success (201)
{
"job_id": "019fa259-b084-71eb-94d7-ba4cdf2e64c6",
"status": "CREATED",
"total_files_accepted": 1,
"created_at": "2026-07-27T06:53:34.750193Z",
"message": "1 file(s) uploaded. Call POST /v1/jobs/{job_id}/start to begin processing."
}
job_id. Always start with /stt/v3/batch/jobs/{job_id}/start (even if the message mentions /v1/jobs/...).
Error responses
400 Unsupported language{
"error": "UNSUPPORTED_LANGUAGE",
"message": "Value error, This service does not support language_code 'xx-XX'. Supported languages: bn-BD, bn-IN, en-IN, hi-IN, kn-IN, ml-IN, mr-IN, ta-IN, te-IN"
}
{
"detail": {
"error_code": "MISSING_API_KEY",
"message": "Missing API key",
"status_code": 401
}
}
Use Cases
- Uploading one or many call recordings for offline transcription
- Sending a ZIP of customer audio for batch processing
- Pointing to public HTTPS / S3 presigned URLs without re-uploading files
Authorizations
Your Gnani Prisma v2.5 API key
Body
application/json
Was this page helpful?