Anam
Realtime photoreal personas with a managed voice + LLM pipeline or your own LLM. Clear published per-minute pricing with per-second billing.
Overview
Best for: Product teams that want predictable per-minute pricing and a polished managed persona with optional custom LLM.
At a glance
Conversation cap 3/5/10/120/120 min by plan. Price is Professional overage $0.11 (Enterprise listed $0.04). cara-4 is 1152x768 landscape or 768x1152 portrait. Idle time is billed.
User mic via Anam JS/Python SDK
Anam voices including custom voice, or audio passthrough
Multilingual support page exists; list not captured.
Not captured; Anam publishes a session performance page.
Not captured.
Not verified in this pass.
Features
- managed full pipeline
- bring your own LLM (CUSTOMER_CLIENT_V1 client-side LLM)
- custom avatar from photo in under 2 minutes (vendor)
- custom voice on all plans
- LiveKit integration
- spend cap setting
- concurrency endpoint
Pricing
| What | Price | Unit |
|---|---|---|
| Free | $0 | per month |
| Starter | $12 | per month |
| Explorer | $49 | per month |
| Growth | $299 | per month |
| Professional | $999 | per month |
| Enterprise | $0.04 | per minute |
Overage $0.11-$0.16; Starter $12/50 min = $0.24; Enterprise listed at $0.04
Free tier: 30 minutes per month, 1 concurrent session, 3 minute conversations.
Source: anam.ai
Setup
- Create an API key in Anam Lab.
- Pick avatarId, voiceId and llmId (or a saved personaId).
- Backend: POST /v1/auth/session-token with the persona config.
- Frontend: create the Anam client with the session token and stream to a video element.
- Stop streaming when the user leaves; set a spend cap in Account Settings.
Endpoint
POST https://api.anam.ai/v1/auth/session-token
Authentication
Authorization: Bearer <API key> on server; session token (JWT, 1 h) in browser
Quick start javascript
// Server-side
const r = 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: {
name: "Cara",
avatarId: "071b0286-4cce-4808-bee2-e642f1062de3",
voiceId: "de23e340-1416-4dd8-977d-065a7ca11697",
llmId: "a7cf662c-2ace-4de1-a21e-ef0fbf144bb7",
systemPrompt: "You are a helpful assistant.",
maxSessionLengthSeconds: 600,
},
}),
});
const { sessionToken } = await r.json();
// Browser (npm i @anam-ai/js-sdk)
import { createClient } from "@anam-ai/js-sdk";
const client = createClient(sessionToken);
await client.streamToVideoElement("persona-video");
// later: await client.stopStreaming();
Written from the current docs. Check the vendor's SDK version before you ship.
Warnings
Idle time is billed
Anam states silence, a muted mic or an idle avatar does not pause an active session; billing is per second until the session ends.
Short caps on low plans
Free conversations end at 3 minutes and Starter at 5; Explorer at 10. Plan for reconnects or upgrade for longer calls.
Avatar-only config is rejected
A session token with no voiceId and no audio passthrough on the default WebRTC transport returns HTTP 400.
429 can mean several things
A rejected start may be your org concurrency limit, vendor capacity or your spend cap. Read the error reason and back off instead of retry-looping.
Do not ship cara-4-latest
It is experimental and not recommended for production; pin cara-4.
Plus 9 warnings that apply to all avatars and live video APIs. See category warnings.
Limits
- Concurrent: 1 / 1 / 3 / 5 / 10 by plan; shared across all your sites
- Conversation length: 3 min (Free), 5 min (Starter), 10 min (Explorer), 2 h (Growth/Professional)
- Session token valid 1 hour
- Unused minutes expire monthly
Models and products
| Name | Status |
|---|---|
| cara-4 | GA |
| cara-3 | GA |
| cara-4-latest | Preview |
Docs and sources
Docs
Sources used
- anam.ai/pricing
- anam.ai/docs/introduction/models.md
- anam.ai/docs/resources/billing-and-limits.md
- anam.ai/docs/api-reference/sessions/create-session-token.md
JS SDK method names (createClient / streamToVideoElement) taken from SDK conventions, not re-read this pass; latency figures; regions.