> ## Documentation Index
> Fetch the complete documentation index at: https://docs.talking-avatar.dev/llms.txt
> Use this file to discover all available pages before exploring further.

# Production checklist

> What to check before your Realistic Avatars integration goes live.

## Security

* [ ] The API key is in your server's secrets (for example `TALKING_AVATAR_API_KEY`), never in browser code, a mobile app or a repository.
* [ ] Your `/avatar` route is behind your app's authentication, so only your users can watch a conversation.
* [ ] You use a separate API key per environment (development, staging, production), so you can revoke one without affecting the others.

## Lifecycle and billing

* [ ] There's exactly one `LiveAvatar` per conversation.
* [ ] You call `close()` when the conversation ends, the user leaves, or anything fails.
* [ ] You handle `LiveAvatarError` from `start()` and the `close` event, and your voice agent keeps working without the avatar.
* [ ] [Auto top-up](https://docs.talking-avatar.dev/dashboard/billing.md#auto-top-up) is on, or you watch your balance, so sessions don't stop with `4002`.
* [ ] A [monthly spending limit](https://docs.talking-avatar.dev/dashboard/billing.md#monthly-spending-limit) caps what a bug could cost.

## Audio

* [ ] The `sampleRate` matches your TTS audio exactly.
* [ ] You send raw PCM16 mono, not MP3, Opus or WAV with headers.
* [ ] The voice plays only through the avatar, never twice.
* [ ] Barge-in calls `clear()`, and your agent's transcript is truncated to `heardMs`.

## The page

* [ ] `connect()` runs from a click or tap, so the browser lets the voice play.
* [ ] You handle the `muted` status: show a button that calls `view.unmute()`.
* [ ] You `disconnect()` the view when the conversation UI goes away (for example, on React unmount).
* [ ] The container has a size. The 16:9 video fits inside it without cropping.

## Networks

* [ ] For users behind strict corporate firewalls, you pass your own TURN server in `iceServers`:

```js theme={null}
new LiveAvatarView({
  container,
  endpoint: "/avatar",
  iceServers: [
    { urls: "stun:stun.example.com:3478" },
    { urls: "turn:turn.example.com:3478", username: "user", credential: "secret" },
  ],
});
```

## Disclosure

* [ ] Where the law requires it, and whenever people might otherwise be misled, you tell your users that they are talking to an AI. See the [Terms of Service](https://talking-avatar.dev/terms#acceptable-use).


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.