# 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. ```shell 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) ```json { "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=...` |