Fast mode provides synchronous transcription for individual audio files. The response returns immediately after the transcription completes.
Capabilities
- Processes one audio file at a time
- Returns results after transcription completes
- Optimized for short recordings
- Supports language detection, model selection, custom vocabulary, and Text Polishing (
en-USonly, without language detection)
Fast mode accepts mono or stereo audio. With channel_separation=false, stereo audio is mixed down to mono and a single transcript is returned. With channel_separation=true, each channel is recognized independently and each segment includes a channel tag.
Audio requirements
- Formats: WAV, MP3, M4A, MP4, and WebM
- Channels: Mono or stereo
- Sample rate: At least 8 kHz; 16 kHz or greater is recommended
- Maximum duration: 2 hours
- Maximum file size for URL input: 300 MB
- Maximum request body size when sending audio as a data URL: 2 MB
Transcription options
These options control recognition. For full descriptions, see Speech configuration.
| Parameter | Type | Default | Description |
|---|---|---|---|
language | string | en-US | Language code, such as en-US. See Speech configuration for supported languages. |
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. |
diarization | boolean | false | Identify speakers and add a speaker tag to each transcript segment. |
model | string | Automatic | Select a compatible recognition model. For multilingual recognition, use zoom-scribe-multilingual or whisper, the same IDs used in Live mode. |
language_detection | object | — | Detect the input language once or continuously. Omit model when mode is once. |
profanity_filter | boolean | false | Filter profanity when supported by the selected model. |
text_polishing | object | — | Whether to return polished text. enabled boolean defaults to false. See Text Polishing. |
vocabulary | object | — | Apply an inline phrase list to this request. |
vocabulary_id | string | — | Apply a persistent Vocabulary Asset. |
For model and language options, see Speech configuration. For vocabulary options, see Custom vocabulary.
Audio transcription
Use this endpoint to send an audio file for synchronous transcription:
POST /aiservices/scribe/transcribe
Example request (cURL)
This cURL example sends an audio file to the Scribe API and returns a transcription:
curl -X POST https://api.zoom.us/v2/aiservices/scribe/transcribe \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"file": "https://example.com/path/clip.mp3",
"config": {
"language": "en-US",
"model": "zoom-scribe-en",
"word_time_offsets": true,
"channel_separation": false,
"diarization": true
},
"outputs": {
"text_polishing": {
"enabled": true
}
}
}'
Response (200)
{
"request_id": "3f2b8c1e-7a4d-4e9b-b6f0-1c5d8a2e9b47",
"duration_sec": 27.4,
"result": {
"text_display": "Um, welcome everyone. Let's get started.",
"segments": [
{
"start": 0.0,
"end": 5.2,
"channel": 0,
"speaker": "Speaker 1",
"text": "Um, welcome everyone. Let's get started.",
"words": [
{ "word": "Welcome", "start": 0.0, "end": 0.4 },
{ "word": "everyone", "start": 0.41, "end": 0.9 }
]
}
]
},
"outputs": {
"text_polishing": {
"text": "[Speaker 1] Welcome everyone. Let's get started."
}
},
"model": "zoom-scribe-en"
}
Text Polishing is optional. When enabled, it does not replace the transcript under result. See Text Polishing.