Skip to main content

Parameters (both endpoints)

Older names (itn, lm, gender, hotwords, hotword_set, hotwords_score) are still accepted; when both are sent, the name above wins. Hints work in Turkish; other languages answer 400 to hints / hint_context.

File: POST /v1/audio/transcriptions

Any common format (WAV, MP3, …); resampled to 16 kHz. Long files are cut at quiet points and joined. Instead of uploading, file_url=https://… lets the server download the file (see below). For long recordings (calls, meetings) send webhook_url and get the result later: Asynchronous transcription and webhooks.
With diarize=true the reply also has segments: [{"speaker": "S1", "start": 0.4, "end": 3.1, "text": "..."}].

Live: WS /v1/stream

Client → server
  • Binary frames: raw PCM, 16 kHz, mono, signed 16-bit little-endian; ~100 ms per frame (3 200 bytes). Telephony audio (8 kHz μ-law/A-law) must be converted to 16 kHz PCM first.
  • Text frame {"event": "flush"}: the client’s VAD says the person stopped → final text now (optional; the server also ends a sentence after ~0.8 s of silence).
  • Text frame {"event": "end"}: call finished → last final, usage, then the server closes.
Server → client (JSON text frames) segment increases by one after each final. Send the final text to the language model, show partial only as live text. Close codes: 1013 server busy (live-call limit reached; retry after ~1 s) · 4400 bad parameter (e.g. language) · 1000 normal end.

Python example