FaceMode is in private beta. Access is granted through the waitlist at
console.facemode.io. Approved beta
testers receive 3,600 free credits (60 minutes - 1 credit = 1 second of
streamed avatar video), up to 10 minutes per session, one concurrent session.
Credit purchases are disabled while the beta runs - top-ups for extra
credits open once FaceMode reaches general availability.
Key capabilities
Audio in, avatar video out
Feed PCM audio from any source - a TTS engine, a voice agent, or your own
audio pipeline - and get back a lip-synced talking-head avatar video stream.
Your WebRTC room
FaceMode joins a LiveKit or Daily room you control and publishes the
avatar video and audio tracks. Your viewers watch with the same client
SDKs they already use.
Built for conversation
960ms audio-to-frame latency target, fast enough for live back-and-forth
dialogue and barge-in interactions.
Natural idle
Between utterances the avatar plays a natural idle animation with subtle
eye blinks and body sway instead of freezing, with a smooth crossfade into
and out of speech.
Fits into your existing stack
FaceMode is a new layer on top of the voice pipeline you already run - not a replacement for any part of it. Your STT, LLM, TTS, and orchestration stay exactly as they are. Point the audio your stack already produces at FaceMode and it adds a face on top.How it works
Your backend creates a session over REST, receives a room plus a one-time WebSocket credential, and streams audio to your FaceMode session. FaceMode renders the avatar and publishes it into your room, where your frontend subscribes like any other remote participant.FaceMode does not create or manage your room. You supply the room URL and a
token that lets FaceMode join and publish. Browser viewers join the same
room with their own separately issued token.
Audio sources
Sessions declare aninputProvider that tells FaceMode what kind of audio to
expect. Supported values: deepgram, gemini, gnani, elevenlabs,
openai, cartesia, sarvam, or custom for anything else that produces
PCM audio.
Two ways to integrate
Agent framework plugins
If you already build on LiveKit Agents or Pipecat, install the FaceMode plugin for your framework. The plugin creates the session, opens the ingestion WebSocket, speaks the wire protocol, and reconnects on transport drops. You keep writing agent code; the plugin handles the avatar plumbing.Direct REST + WebSocket API
For every other stack, your backend drives the API directly:POST /api/sessionsreturns the room and a one-timewsToken.- Open the session WebSocket with the
facemode.<wsToken>subprotocol. - Send
start, then stream binary PCM audio frames. - Close with
end_session, then end the REST session.
Where to next
Quickstart
Go from API key to a talking avatar in your room in one session.
Authentication
How API keys and session WebSocket tokens work, and how to keep them safe.
Integrations
Plugin guides for LiveKit Agents (Python and JS) and Pipecat.
API reference
Every REST endpoint and WebSocket message, with request and response shapes.