Skip to main content
The Sayna API surface is intentionally focused: health checks, voice discovery, one-shot synthesis, LiveKit token + room management helpers, recording downloads, and SIP runtime controls. All request/response schemas live inside /api-reference/openapi.yaml and are rendered below via Mintlify’s API Playground.

Download the spec

Keep the OpenAPI file in sync with the server using cargo run --features openapi -- openapi -o docs/openapi.yaml.

Authentication

All REST endpoints honor the settings described in the Authentication guide. When AUTH_REQUIRED=true, include a bearer token in the Authorization header. The playground lets you set this header once via the sidebar.

Endpoints covered

  • GET / – health check
  • GET /voices – provider catalog
  • POST /speak – one-shot synthesis with caching
  • POST /livekit/token – mint LiveKit JWTs for participants
  • GET /livekit/rooms – list rooms scoped to the authenticated tenant
  • GET /livekit/rooms/{room_name} – fetch room details + participants
  • DELETE /livekit/participant – remove a participant from a room
  • POST /livekit/participant/mute – mute/unmute a participant track
  • GET /recording/{stream_id} – download a completed session recording
  • POST /sip/call – initiate an outbound SIP call
  • GET /sip/hooks – read the SIP webhook forwarding table
  • POST /sip/hooks – upsert SIP webhook forwarding entries
  • DELETE /sip/hooks – remove SIP webhook forwarding entries
  • POST /sip/transfer – transfer a SIP participant to a new destination
See the WebSocket guide for streaming message schemas and LiveKit orchestration.