Batch mode
Batch mode provides asynchronous transcription for large or complex jobs that require processing multiple files or lengthy recordings.
Key features
- Parallel processing Processes multiple files simultaneously
- Asynchronous operation Provides asynchronous operation — no need to wait for completion
- Large-scale support Handles long recordings and large file batches
- Multi-speaker support Supports multi-speaker and multi-channel audio
Each audio file generates its own transcript that saves to a corresponding output location.
How it works
Batch mode processing runs asynchronously and enables you to transcribe multiple files in a single API call. This mode is ideal for workflows that involve multi-channel audio or large file collections.
Input
The API supports three input modes.
| Mode | Description |
|---|---|
SINGLE | A single audio file. Inferred when the URI points to a single file. |
PREFIX | All files under a shared S3 prefix/container. Supports glob filters to include or exclude files. |
MANIFEST | An explicit list of file URIs. Maximum 1,000 files per manifest. |
Output
The API supports three output layouts.
| Layout | Description |
|---|---|
SINGLE | Use the output URI as a single transcript file path (single-file mode). |
ADJACENT | Place output transcript next to the input file (same directory). |
PREFIX | Use the output URI as the base directory for all transcripts. |
Audio formats
WAV, MP3, M4A, and MP4
Transcription options
These options control transcription language, segmentation mode and channel separation.
| Parameter | Type | Default | Description |
|---|---|---|---|
language | string | — | Language code (e.g., en-US). See language abbreviations. |
segmentation_mode | string | "auto" | Voice Activity Detection (VAD) mode. Set "none" to disable. |
word_time_offsets | boolean | false | Include word-level timestamps. |
channel_separation | boolean | false | Transcribe stereo channels separately. |
Batch jobs
Create a batch job
To create a new batch transcription job, use this endpoint:
POST /aiservices/scribe/jobs
You can optionally include a reference_id for tracking and a notifications object with a webhook_url to receive status updates.
Example request (cURL)
This cURL example submits a batch transcription job from S3 and defines the output location and settings. The response returns a job ID and status so you can track processing.
curl -X POST https://api.zoom.us/v2/aiservices/scribe/jobs \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"input": {
"mode": "PREFIX",
"source": "S3",
"uri": "s3://acme-bucket/audio/2025/11/",
"filters": {
"include_globs": ["**/*.wav", "**/*.mp3"],
"exclude_globs": ["**/tmp/**"]
},
"auth": {
"aws": {
"access_key_id": "AKIA...",
"secret_access_key": "wJalrX...",
"session_token": "FwoGZXIvYXdzE..."
}
}
},
"output": {
"destination": "S3",
"uri": "s3://acme-bucket/transcripts/2025/11/",
"layout": "PREFIX"
},
"config": {
"language": "en-US",
"word_time_offsets": true,
"channel_separation": true
},
"reference_id": "import-2025-11"
}'
Response (201)
{
"job_id": "job_abc123",
"state": "QUEUED",
"submitted_at": "2026-01-05T18:34:12Z"
}
Batch job endpoints
Three additional endpoints are available to manage batch jobs.
| Action | Description | Endpoint |
|---|---|---|
| Get batch job status | Check the current status and progress summary of a specific job. | GET /aiservices/scribe/jobs/{jobId} |
| List batch jobs | View all batch jobs, optionally filtered by state. | GET /aiservices/scribe/jobs?state=QUEUED&page_size=50&next_page_token=... |
| Cancel batch job | Cancel a job that is in QUEUED or PROCESSING state. | DELETE /aiservices/scribe/jobs/{jobId} |
Per-file processing status
| Action | Description | Endpoint |
|---|---|---|
| List batch job files | Retrieve per-file status with pagination. | GET /aiservices/scribe/jobs/{jobId}/files?page_size=200&next_page_token=... |