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

# EU AI Act Compliance

> Product controls for biometric emotion recognition and AI disclosure, relevant to EU AI Act configuration of PALs and conversations.

Deploying conversational AI in the EU is your responsibility. Tavus provides configuration so you can align your Tavus setup with obligations that apply to your use case. This page is general product guidance, not legal advice. What you need depends on intended purpose, the signals you process, deployment context, and whether you act as a provider or a deployer. Confirm fit with your own counsel.

## Requirements relevant to conversational AI

The EU AI Act includes several rules that often matter for real-time conversational video:

* **Biometric emotion inference in workplace and education.** Systems generally should not infer a person's emotions or intentions from biometric data such as facial expression or voice characteristics in workplace and education deployments. Limited exceptions can apply (for example some medical or safety uses).
* **Inform people they are interacting with AI.** Provide a clear and distinguishable disclosure at the start of the first interaction, unless it is already obvious in context that the participant is interacting with an AI system.
* **Emotion recognition when it is permitted.** Where emotion recognition is used outside a prohibited context, the deployer may still need to inform people exposed to the system that emotion recognition is operating.

Official text and guidance for the regulation live outside Tavus documentation. Use this page for how product knobs relate to those topics.

## What Tavus provides

1. A conversation-level `policy` parameter you can set to `eu` for European participants (or whenever you want the `auto` path below).
2. PAL-level fields (`emotion_recognition`, `disclosure_type`, `verbal_disclosure`, `visual_disclosure`) that either follow `policy` when left on `auto`, or stay pinned to an explicit value.

## The `policy` parameter

Set on [`POST /v2/conversations`](/api-reference/conversations/create-conversation):

```json theme={null}
{
  "face_id": "r90bbd427f71",
  "pal_id": "pcb7a34da5fe",
  "policy": "eu"
}
```

When `policy` is `eu`, PAL fields left on `auto` resolve for that conversation as follows:

* `disclosure_type: auto` → the PAL delivers verbal and visual AI disclosure (same as `always` for that call)
* `emotion_recognition: auto` → behaves like `limited` (Raven-1 does not attach biometric-derived emotion)

Any explicit setting (`full`, `limited`, `always`, `off`) is left as you set it. `policy` never overrides an explicit choice.

You choose the value per conversation. When *you* create the conversation (API, your backend, or the create call behind an embed), pass the value you intend. Tavus does not geolocate the caller on that path. On Tavus Deployments, Tavus may set `policy` from visitor IP.

## AI disclosure

Configure spoken and on-screen AI disclosure at the top level of the PAL:

* `disclosure_type` — `always`, `auto` (default), or `off`.
* `verbal_disclosure` and `visual_disclosure` — fully customizable strings. `verbal_disclosure` is spoken before the greeting; `visual_disclosure` is the on-screen banner shown while that line plays. Leave either empty to use Tavus defaults: **"Just a note, I am an AI system, not a person."** (verbal) and **"You are interacting with an AI system."** (visual).

| `disclosure_type` | Behavior                                                                                                                        |
| ----------------- | ------------------------------------------------------------------------------------------------------------------------------- |
| `always`          | Always speak `verbal_disclosure` before the greeting and show `visual_disclosure` on screen.                                    |
| `auto` (default)  | Apply the disclosure only when `policy` is `eu`.                                                                                |
| `off`             | Never deliver a Tavus-built-in disclosure. Use only when you have determined your own disclosure path (or that none is needed). |

Example PAL that discloses automatically when `policy` is `eu`:

```json theme={null}
{
  "pal_name": "Acme EU Agent",
  "system_prompt": "You are a helpful support agent for Acme.",
  "pipeline_mode": "full",
  "default_face_id": "r90bbd427f71",
  "disclosure_type": "auto"
}
```

## Biometric emotion recognition

Configure whether Raven attaches emotion from face and voice on the [perception layer](/sections/conversational-video-interface/pal/perception) via `emotion_recognition`.

| Value            | Behavior                                                                                                                  |
| ---------------- | ------------------------------------------------------------------------------------------------------------------------- |
| `full`           | Raven-1 attaches biometric emotion analysis.                                                                              |
| `limited`        | Raven-1 does not attach any biometric-derived emotion. Other cues (spoken content, objects, activity) still flow through. |
| `auto` (default) | Follows `policy` — `limited` when `policy` is `eu`, otherwise `full`.                                                     |

### When emotion recognition is on

If you use `full` (or otherwise enable biometric emotion analysis) outside a restricted context, you may still need to tell participants that emotion recognition is operating. Tavus does not ship a separate banner dedicated only to emotion recognition. Use custom `verbal_disclosure` / `visual_disclosure` copy, copy in your own product, or another channel you control if you need that notice.

### Google Meet / Zoom PALs

Google Meet / Zoom PALs join calendar-invited meetings, where the meeting organizer is not necessarily an EU participant. If you conclude that biometric emotion analysis is appropriate for that deployment, you can pin emotion recognition to `full`:

```json theme={null}
{
  "layers": {
    "perception": {
      "perception_model": "raven-1",
      "emotion_recognition": "full"
    }
  }
}
```

## End-to-end example

Create the PAL once with `auto` defaults, then pass `policy: "eu"` on conversations where you want those auto fields to resolve as described above:

```json Create PAL theme={null}
POST /v2/pals
{
  "pal_name": "Support Agent",
  "system_prompt": "You are a helpful support agent.",
  "pipeline_mode": "full",
  "default_face_id": "r90bbd427f71",
  "disclosure_type": "auto",
  "layers": {
    "perception": {
      "perception_model": "raven-1",
      "emotion_recognition": "auto"
    }
  }
}
```

```json Create conversation with policy eu theme={null}
POST /v2/conversations
{
  "pal_id": "pcb7a34da5fe",
  "face_id": "r90bbd427f71",
  "policy": "eu"
}
```

## Related

* [Perception layer](/sections/conversational-video-interface/pal/perception) — full reference for `emotion_recognition` and Raven-1 audio and visual analysis.
* [Component library: Server](/sections/conversational-video-interface/component-library/server#passing-policy-eu-on-create) — passing `policy` via `@tavus/cvi-ui`, and setting it in your handler when the browser path is not enough.
