Transcribe audio
Start a speech-to-text transcription.
In async mode (default), returns immediately with {started: true}.
Poll /api/v1/transcription/progress for status and results.
In sync mode (sync=true), blocks until transcription completes and
returns the result directly. When output_format=srt and
return_timestamps=true, returns an SRT subtitle file instead of JSON.
sync?SyncWait for transcription to complete and return the result directly
falseoutput_format?Output FormatResponse format when sync=true. 'srt' returns SubRip subtitles (requires return_timestamps=true)
"json""json""srt"application/json- body
audio_base64*Audio Base64Base64-encoded audio (WAV)
language?|Force language (auto-detect if null)
return_timestamps?Return TimestampsReturn word-level timestamps via forced aligner
falsereference_text?|Original text for punctuation restoration (e.g. from history)
asr_family?|ASR model family (e.g. 'Qwen3-ASR', 'Parakeet v3', 'Orukeet'). Used for routing; mostly informational on Modal-direct path.
asr_quality?|ASR variant id within the family (e.g. 'standard', 'higher_quality', 'parakeet_v3', 'orukeet'). Subprocess loads this variant on demand if it differs from the currently-loaded one.
num_speakers?|Pin the exact diarization speaker count. Auto-detect (with trivial-cluster merging) if null.
diarization_engine?|Speaker detection engine. The saved preference is used if null.
Transcription started (async) or completed (sync).
- response
started*StartedWhether the transcription was started
reason?|Reason if transcription could not start
curl -X POST 'http://127.0.0.1:8100/api/v1/transcription/start' \ -H 'Content-Type: application/json' \ -d '{ "audio_base64": "UklGRi4AAABXQVZFZm10IBAAAA..."}'{ "started": true, "reason": "string"}