Youragent has a voice.Now give it a face.

Add a face to your ElevenLabs agent with Anam's real-time avatars. Connect your agent on the server and stream synchronized audio and video through the Anam SDK, with ElevenLabs v3 expression cues brought to life by Cara 4.

See it for yourself

Start a voice conversation, then flip the switch and watch how the avatar stays in sync without restarting the session or rebuilding your ElevenLabs agent.

Voice only Voice + Anam Reveal the face
elevenlabs-agent-demo
Ready
Talk to the agent firstStart an audio-only conversation with your microphone.
Preview of Evelyn, the ElevenLabs demo avatar
elevenlabs-agent-demo · voice agent

KEEP EXPLORING

Build more with Anam + ElevenLabs

ELEVENLABS AGENTS · SERVER-SIDE

From voice agent to video agent in a few lines.

Server-side integration reference. Use Coding Agents to adapt these snippets to your app or create a project.

// Server: keep both API keys private
// Prerequisite: set the ElevenLabs agent's input audio format to PCM 16000 Hz.
// agentId and avatarId must be validated by your /api/anam-session route.
const signedUrlResponse = await fetch(
  `https://api.elevenlabs.io/v1/convai/conversation/get-signed-url?agent_id=${encodeURIComponent(agentId)}`,
  { headers: { "xi-api-key": process.env.ELEVENLABS_API_KEY } },
);
if (!signedUrlResponse.ok) throw new Error("Could not authorize ElevenLabs agent");
const { signed_url: signedUrl } = await signedUrlResponse.json();


const response = await fetch("https://api.anam.ai/v1/auth/session-token", {
  method: "POST",
  headers: {
    Authorization: `Bearer ${process.env.ANAM_API_KEY}`,
    "Content-Type": "application/json",
  },
  body: JSON.stringify({
    personaConfig: {
      avatarId,
      avatarModel: "cara-4",
      directorNotes: { presetStyle: "warm", expressivity: 0.5 },
    },
    environment: {
      elevenLabsAgentSettings: {
        signedUrl,
        agentId,
      },
    },
  }),
});
if (!response.ok) throw new Error("Could not create Anam session");
const { sessionToken } = await response.json();
// Return { sessionToken } from your /api/anam-session route.

Add a face to your ElevenLabs agent.

Keep your current speech, language model, and voice stack. Add a synchronized avatar in a few lines.

Make every customer interaction feel face-to-face.

Create interactive avatars for your business, product, website, training, support, or sales workflow.

Anam interactive avatar

Talk to this avatar