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.

ModeDescription
SINGLEA single audio file. Inferred when the URI points to a single file.
PREFIXAll files under a shared S3 prefix/container. Supports glob filters to include or exclude files.
MANIFESTAn explicit list of file URIs. Maximum 1,000 files per manifest.

Output

The API supports three output layouts.

LayoutDescription
SINGLEUse the output URI as a single transcript file path (single-file mode).
ADJACENTPlace output transcript next to the input file (same directory).
PREFIXUse 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.

ParameterTypeDefaultDescription
languagestringLanguage code (e.g., en-US). See language abbreviations.
segmentation_modestring"auto"Voice Activity Detection (VAD) mode. Set "none" to disable.
word_time_offsetsbooleanfalseInclude word-level timestamps.
channel_separationbooleanfalseTranscribe 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.

ActionDescriptionEndpoint
Get batch job statusCheck the current status and progress summary of a specific job.GET /aiservices/scribe/jobs/{jobId}
List batch jobsView all batch jobs, optionally filtered by state.GET /aiservices/scribe/jobs?state=QUEUED&page_size=50&next_page_token=...
Cancel batch jobCancel a job that is in QUEUED or PROCESSING state.DELETE /aiservices/scribe/jobs/{jobId}

Per-file processing status

ActionDescriptionEndpoint
List batch job filesRetrieve per-file status with pagination.GET /aiservices/scribe/jobs/{jobId}/files?page_size=200&next_page_token=...