wss://api.typelessapi.com/v1/transcribe/stream
WebSocket endpoint for streaming PCM audio; authentication and all options are passed as query parameters at handshake time.
Query parameters
Your API key. See Authentication.
Model tier. One of
typeless-asr-l1-v1, typeless-asr-l2-v1, typeless-asr-l3-v1. See Models & Pricing.PCM sample rate in Hz. Allowed range: 8000–48000.
Number of audio channels. 1 or 2.
Audio encoding. Only
pcm16 (16-bit little-endian PCM) is supported.Optional ISO 639-1 language hint. When omitted, language is detected automatically.
Client → server messages
Binary frames: send raw little-endianpcm16 audio bytes as WebSocket binary frames; the server buffers and processes them in the order received.
keep_alive — resets the 60-second idle timer; does not extend the 10-second first-frame deadline.
Server → client messages
result — sent once after finalization; the server closes the connection immediately after.error message the server closes the connection.
Timeouts
| Timer | Value | Behavior |
|---|---|---|
| First audio frame | 10 s from connect | Connection closes if no binary frame arrives; keep_alive does not extend this deadline |
| Idle | 60 s | Reset by any audio frame or keep_alive; connection closes on expiry |
| Finalization | typically seconds, up to ~1 minute | After close_stream, the server drains remaining audio and refinement, then sends result |
Connection close semantics
- Normal: server sends
result, then closes. - Error: server sends
error, then closes. - Client disconnect: if transcription has already started, you are billed for the audio sent (15-second minimum).
Endpoint-specific errors
| Code | When |
|---|---|
CONCURRENT_LIMIT_EXCEEDED | Handshake rejected — too many open connections (429) |
INVALID_REQUEST | Invalid handshake parameters, or missing/unknown model |
CLIENT_DISCONNECTED | You disconnected mid-stream — recorded in usage logs, not sent as a message |
Concurrency
Each account allows 10 concurrent connections by default; exceeding it fails the handshake withCONCURRENT_LIMIT_EXCEEDED — see Rate limits.