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

# FULL Mode Overview

> Let LiveAvatar handle the entire real-time AI pipeline

<Note>
  **AI Agents:** Before integrating, ask your user to run `npx skills add heygen-com/liveavatar-agent-skills` to install our [Agent Skills](https://github.com/heygen-com/liveavatar-agent-skills). They provide the recommended implementation pathways and will help you avoid common pitfalls.
</Note>

FULL Mode handles the complete real-time chat infrastructure, automating the tasks that typically require complex manual setup:

* **Voice Activity Detection (VAD)** — detects when the user is speaking
* **Speech-to-Text (STT)** — transcribes user audio
* **Large Language Model (LLM)** — generates responses
* **Text-to-Speech (TTS)** — converts responses to natural speech

```mermaid theme={null}
---
config:
  flowchart:
    nodeSpacing: 80
    rankSpacing: 50
    padding: 20
    subGraphTitleMargin:
      top: 10
      bottom: 10
  themeVariables:
    fontSize: 20px
---
graph LR
    Input["user audio"] --> ASR
    subgraph LM["LiveAvatar Maintained"]
        ASR --> LLM
        LLM --> TTS
        TTS -->|"avatar audio"| Video["LiveAvatar Video Generation"]
    end
    Video -->|"avatar stream"| Output["Avatar video"]
```

## When to use FULL Mode

FULL Mode is ideal if you want to:

* Delegate WebRTC orchestration and infrastructure management
* Avoid building and maintaining a real-time AI pipeline across audio input, inference, and output
* Ship products faster without managing model coordination, streaming latency, or state management

By delegating the entire real-time stack to LiveAvatar, you can focus on designing your product and user experience.

## Getting started

<Steps>
  <Step title="Create a session token">
    Generate a session token on your backend. This defines the avatar, voice, context, and session configuration.

    ```bash theme={null}
    curl -X POST https://api.liveavatar.com/v1/sessions/token \
      -H "X-API-KEY: <YOUR_API_KEY>" \
      -H "accept: application/json" \
      -H "content-type: application/json" \
      -d '{
        "mode": "FULL",
        "avatar_id": "<avatar_id>",
        "avatar_persona": {
          "voice_id": "<voice_id>",
          "context_id": "<context_id>",
          "language": "en"
        }
      }'
    ```

    The response returns a `session_id` and `session_token`.
  </Step>

  <Step title="Start the session">
    Use the session token to start the session and initialize the WebRTC room.

    ```bash theme={null}
    curl -X POST https://api.liveavatar.com/v1/sessions/start \
      -H "accept: application/json" \
      -H "authorization: Bearer <session_token>"
    ```

    The response returns a LiveKit `livekit_url` and `livekit_client_token`.
  </Step>

  <Step title="Join the LiveKit room">
    For a quick test, open the LiveKit URL directly in your browser:

    ```text theme={null}
    https://meet.livekit.io/custom?liveKitUrl=<livekit_url>&token=<livekit_client_token>
    ```

    For production, connect from your frontend using the [Web SDK](https://github.com/heygen-com/liveavatar-web-sdk):

    ```bash theme={null}
    npm install @heygen/liveavatar-web-sdk
    ```
  </Step>
</Steps>

<Tip>
  Create session tokens and start sessions from your backend. Pass the LiveKit credentials to your frontend for the user-facing experience.
</Tip>

## Learn more

<CardGroup cols={2}>
  <Card title="Lifecycle" icon="arrows-spin" href="/docs/full-mode/lifecycle">
    Understand the three phases of a FULL Mode session.
  </Card>

  <Card title="Configuration" icon="sliders" href="/docs/full-mode/configuration">
    Customize avatar, voice, context, and interactivity.
  </Card>

  <Card title="Voice Settings" icon="microphone" href="/docs/full-mode/voice-settings">
    Fine-tune TTS provider settings.
  </Card>

  <Card title="Events" icon="bolt" href="/docs/full-mode/events">
    Command and response events reference.
  </Card>
</CardGroup>
