Skip to main content
Real-time synthetic voice detection over WebSocket. Streams audio to the server and receives per-frame verdicts (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.
Unlike the batch endpoint, the streaming API does not use an X-API-Key header. The key must be in the query string at connection time.

Query parameters

For supported format values and format selection guidance, see Audio formats and preprocessing.

Connection flow

  1. Connect with api_key, audio_format, and (for raw formats) sample_rate and num_channels.
  2. Stream audio as binary WebSocket frames. Frames can be any size.
  3. Receive frame JSON messages as analysis windows complete.
  4. Send an empty text frame ("") to signal end of audio.
  5. Receive a done message with total duration and frame count.
  6. 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.