Get Job Status
curl --request GET \
--url https://api.vachana.ai/stt/v3/batch/jobs/{job_id} \
--header 'X-API-Key-ID: <api-key>'import requests
url = "https://api.vachana.ai/stt/v3/batch/jobs/{job_id}"
headers = {"X-API-Key-ID": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key-ID': '<api-key>'}};
fetch('https://api.vachana.ai/stt/v3/batch/jobs/{job_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"job_id": "019fa79e-81f9-7a8a-a446-6eff16ddec30",
"status": "COMPLETED",
"config": {
"model": "prisma-v2.5",
"mode": "transcribe",
"language_code": "en-IN",
"with_diarization": false,
"num_speakers": null,
"is_multi_channel": false,
"with_denoise": false,
"format": null,
"keyterms": null,
"topic": null,
"speaker_names": null
},
"progress": {
"total_files": 1,
"completed_files": 1,
"failed_files": 0,
"in_progress_files": 0,
"queued_files": 0,
"cancelled_files": 0
}
}Batch transcription
Get job status
Get batch job status and progress counters.
GET
/
stt
/
v3
/
batch
/
jobs
/
{job_id}
Get Job Status
curl --request GET \
--url https://api.vachana.ai/stt/v3/batch/jobs/{job_id} \
--header 'X-API-Key-ID: <api-key>'import requests
url = "https://api.vachana.ai/stt/v3/batch/jobs/{job_id}"
headers = {"X-API-Key-ID": "<api-key>"}
response = requests.get(url, headers=headers)
print(response.text)const options = {method: 'GET', headers: {'X-API-Key-ID': '<api-key>'}};
fetch('https://api.vachana.ai/stt/v3/batch/jobs/{job_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));{
"job_id": "019fa79e-81f9-7a8a-a446-6eff16ddec30",
"status": "COMPLETED",
"config": {
"model": "prisma-v2.5",
"mode": "transcribe",
"language_code": "en-IN",
"with_diarization": false,
"num_speakers": null,
"is_multi_channel": false,
"with_denoise": false,
"format": null,
"keyterms": null,
"topic": null,
"speaker_names": null
},
"progress": {
"total_files": 1,
"completed_files": 1,
"failed_files": 0,
"in_progress_files": 0,
"queued_files": 0,
"cancelled_files": 0
}
}Overview
Part of Batch transcription, which covers the whole flow, models, languages and limits. Get the current status and progress of a batch job. This response does not include transcript text. After a terminal status, call Get job files, thenGET each transcript_url.
Authentication
| Header | Required | Description |
|---|---|---|
X-API-Key-ID | Yes | Your Gnani API key |
Path parameters
In Try it, paste a real
job_id from Create job before clicking Send. Leaving the placeholder {job_id} in the URL returns 422.string
default:"019fa854-1db0-7e45-a026-7a6b09ff6d7c"
required
Job ID returned by Create job. Replace with your own
job_id before sending.Polling guidance
Live lifecycle observed:CREATED → STARTING → QUEUED → IN_PROGRESS → COMPLETED
| Status | Terminal | Next step |
|---|---|---|
COMPLETED | Yes | Call /files, then GET each transcript_url |
PARTIAL_FAILURE | Yes | Same — fetch successful files via /files |
FAILED | Yes | Inspect /files + error_message |
START_FAILED | Yes | Read cancel_reason |
CANCELLED | Yes | Done |
Example cURL
curl --request GET \
--url https://api.vachana.ai/stt/v3/batch/jobs/019fa79e-81f9-7a8a-a446-6eff16ddec30 \
--header 'X-API-Key-ID: <YOUR_API_KEY>'
Example — Python SDK
from gnani.stt import GnaniSTTBatchClient
client = GnaniSTTBatchClient()
job = client.get_job("<job_id>")
print(job.status, job.percent) # IN_PROGRESS 42
print(job.completed_files, "/", job.total_files)
job.wait(). It polls every 10 seconds, the minimum this page recommends:
job.wait(timeout=3600, on_progress=lambda j: print(j.status, j.percent))
wait() returns for COMPLETED and PARTIAL_FAILURE, and raises BatchJobFailedError for FAILED, START_FAILED, and CANCELLED. See the Python SDK.
Response
Success — completed (200)
{
"job_id": "019fa79e-81f9-7a8a-a446-6eff16ddec30",
"status": "COMPLETED",
"config": {
"model": "prisma-v2.5",
"mode": "transcribe",
"language_code": "en-IN",
"with_diarization": false,
"num_speakers": null,
"is_multi_channel": false,
"with_denoise": false,
"format": null,
"keyterms": null,
"topic": null,
"speaker_names": null
},
"progress": {
"total_files": 1,
"completed_files": 1,
"failed_files": 0,
"in_progress_files": 0,
"queued_files": 0,
"cancelled_files": 0
},
"cancel_reason": null,
"created_at": "2026-07-28T07:26:50.926489Z",
"started_at": "2026-07-28T07:26:52.421366Z",
"completed_at": "2026-07-28T07:27:24.621462Z",
"cancelled_at": null,
"updated_at": "2026-07-28T07:27:24.621676Z"
}
Success — Prisma v3.0 job (200)
For a prisma-v3.0 job, config echoes the Prisma v3.0 options:
{
"job_id": "0192c8f4-7c1e-7b3a-9f2d-5e8a1b7c4d21",
"status": "IN_PROGRESS",
"config": {
"model": "prisma-v3.0",
"mode": "transcribe",
"language_code": "hi-IN,en-IN",
"with_diarization": true,
"num_speakers": 2,
"is_multi_channel": false,
"with_denoise": false,
"bias_list": null,
"bias_score": null,
"format": "transcribe",
"keyterms": ["HDFC Bank", "EMI", "खाता नंबर"],
"topic": "Loan collection calls for a retail credit card portfolio",
"speaker_names": null
},
"progress": {
"total_files": 3,
"completed_files": 1,
"failed_files": 0,
"in_progress_files": 0,
"queued_files": 2,
"cancelled_files": 0,
"percent": 41
},
"cancel_reason": null,
"created_at": "2026-10-21T08:15:02.481Z",
"started_at": "2026-10-21T08:15:09.120Z",
"completed_at": null,
"cancelled_at": null,
"updated_at": "2026-10-21T08:16:40.002Z"
}
format, keyterms, topic and speaker_names are on every job’s config, and are null for jobs on other models. With prisma-v3.0, language_code is the value you sent ("indic-auto" is stored as "auto"), and bias_list sent as the older name of keyterms shows up in keyterms, with bias_list and bias_score null.
Success — start failed (200)
Returned when public URLs cannot be fetched:
{
"job_id": "019fa79c-ec88-770c-b498-371fc21fb40e",
"status": "START_FAILED",
"config": {
"model": "prisma-v2.5",
"mode": "transcribe",
"language_code": "en-IN",
"with_diarization": false,
"num_speakers": null,
"is_multi_channel": false,
"with_denoise": false,
"format": null,
"keyterms": null,
"topic": null,
"speaker_names": null
},
"progress": {
"total_files": 0,
"completed_files": 0,
"failed_files": 0,
"in_progress_files": 0,
"queued_files": 0,
"cancelled_files": 0
},
"cancel_reason": "All provided paths were invalid — nothing to process.",
"created_at": "2026-07-28T07:25:07.137907Z",
"started_at": null,
"completed_at": null,
"cancelled_at": null,
"updated_at": "2026-07-28T07:27:28.390415Z"
}
Error responses
404 Job not found{
"error": "JOB_NOT_FOUND",
"message": "Job 01900000-0000-7000-8000-000000000000 not found"
}
string
Current job status (
CREATED, QUEUED, IN_PROGRESS, COMPLETED, START_FAILED, …).object
Per-file counters: total, completed, failed, in progress, queued, cancelled.
percent is the overall progress, 0–100.string
Present for failures such as
START_FAILED.object
The config the job was created with, echoed back — including
language_code,
with_diarization, with_denoise, and bias_list / bias_score when set. It also
includes format, keyterms, topic and speaker_names, which are null unless the
job uses prisma-v3.0.Use cases
- Polling until a job reaches a terminal status
- Debugging
START_FAILEDviacancel_reason
Was this page helpful?