synthetic, non-synthetic, or no-content) with confidence scores as analysis windows complete.
For a conceptual explanation of how detection works — including windowing, silence trimming, and the no-content verdict — see How synthetic voice detection works.
Endpoint
Authentication
Pass your API key as a query parameter when opening the connection.Query parameters
For supported format values and format selection guidance, see Audio formats and preprocessing.
Connection flow
- Connect with
api_key,audio_format, and (for raw formats)sample_rateandnum_channels. - Stream audio as binary WebSocket frames. Frames can be any size.
- Receive
frameJSON messages as analysis windows complete. - Send an empty text frame (
"") to signal end of audio. - Receive a
donemessage with total duration and frame count. - The connection closes automatically.
Server messages
Frame result
Sent each time an analysis window is complete.Done
Error
WebSocket close codes
An
error JSON message is sent before the connection closes (except on 1000).
Rate limits
- Concurrent connection limits apply per organization.
- Monthly usage limits (in audio hours) apply per organization.
- Connections that exceed limits are rejected during the WebSocket handshake with close code
4029.
Related
- How synthetic voice detection works — windowing, silence trimming, and scoring explained
- Audio formats and preprocessing — format options for the streaming endpoint
- Which API should I use? — batch vs streaming tradeoffs
- Authentication and rate limits