Skip to main content
POST
Transcribe an English audio file

Authorizations

X-API-Key
string
header
required

API key used for authentication and usage tracking.

Body

multipart/form-data
upload_file
file
required

Audio file to transcribe. Must be non-empty. Supported formats: .3g2, .3ga, .3gp, .3gpp, .8svx, .aa3, .aac, .ac3, .act, .adts, .aif, .aifc, .aiff, .alac, .amb, .amr, .ape, .asf, .at3, .au, .avi, .avr, .awb, .bwf, .c2, .caf, .dss, .dts, .dtshd, .eac3, .ec3, .f4a, .f4b, .flac, .flv, .gsm, .iff, .m2a, .m2ts, .m4a, .m4b, .m4r, .m4v, .mka, .mkv, .mlp, .mmf, .mov, .mp+, .mp1, .mp2, .mp3, .mp4, .mpa, .mpc, .mpeg, .mpg, .mpga, .mpp, .mts, .mxf, .nist, .oga, .ogg, .ogx, .oma, .omg, .opus, .paf, .pvf, .qcp, .ra, .rf64, .rka, .rm, .rmvb, .sf, .shn, .snd, .sph, .svx, .tak, .thd, .ts, .tta, .vob, .voc, .vqf, .w64, .wav, .wave, .weba, .webm, .wma, .wmv, .wv. Maximum file size: 100 MB. .aac, .aiff, .flac, .mov, .mp3, .mp4, .ogg, .opus, .wav, .webm. Maximum file size: 100 MB.

time_stamps
boolean
default:false

When enabled, the response includes a words array giving the start and end time of every word in text, in seconds from the start of the file, with an alignment confidence where one was measured.

Timestamps are produced by aligning the final transcript against the audio, so the words always match text exactly. Every whitespace-separated token of text appears in words exactly once, in order; the per-word timing field says whether the span was fully measured, measured over a prefix, or bracketed between neighbours.

On the non-diarized path, word timings are available up to a maximum audio length configured per deployment (default one hour). Above it the transcript is returned normally and words_unavailable carries the audio_too_long_for_alignment reason. Treat the exact ceiling as environment-specific: read max_audio_seconds from that response rather than hard-coding a value.

Setting speaker_diarization=true removes the ceiling entirely, because each speaker turn is aligned separately.

speaker_diarization
boolean
default:false

Speaker diarization identifies different speakers in the audio. When enabled, the response includes an utterances array of time-ordered speaker turns with non-empty transcripts, each attributed to a speaker (e.g., 1, 2) with its timing, and text is the time-ordered concatenation of the utterance texts. The array may be empty when no transcribable speech is found.

Response

Transcription completed successfully.

text
string
required

The complete transcribed text from the audio file. Text includes automatic capitalization and punctuation. May be an empty string if no speech was recognized.

Example:

"Hello, how are you doing today?"

duration_ms
integer
required

The total duration of the processed audio in milliseconds.

Required range: x >= 0
Example:

14253

words
object[]

Word-level timings covering text, in document order. Present only when time_stamps is enabled and timings were produced; when they were not, words_unavailable is present instead. Absent otherwise, never null.

Every whitespace-separated token of text appears here exactly once, so words and text.split() have the same length and the same order. A word the aligner could not place fully is still returned, marked partial or estimated - see WordTime.timing.

Times are seconds from the start of the file, including when speaker_diarization is also enabled. Note this differs from utterances, whose start_ms and duration_ms are integer milliseconds.

words_unavailable
object

Why words is absent. Present only when time_stamps is enabled and words is absent; absent otherwise, never null. Exactly one of words and words_unavailable appears on a time_stamps=true request.

utterances
object[]

Time-ordered speaker turns with non-empty transcripts. Present only when speaker_diarization is enabled; may be an empty array when no transcribable speech is found.