Skip to main content
FaceMode is a real-time AI talking-head avatar video API. You stream audio in, and FaceMode streams out lip-synced avatar video of a digital avatar speaking that audio, published directly into a WebRTC room you own. Use it anywhere a voice needs a face: conversational AI agents, virtual assistants, interactive kiosks, and live avatar experiences.
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 an inputProvider 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:
  1. POST /api/sessions returns the room and a one-time wsToken.
  2. Open the session WebSocket with the facemode.<wsToken> subprotocol.
  3. Send start, then stream binary PCM audio frames.
  4. Close with end_session, then end the REST session.
Any language that can open a WebSocket works. The full flow is in the quickstart, and every message is documented in the WebSocket protocol reference.

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.