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

# ElevenLabs Agents

> Monitor and evaluate your ElevenAgents voice agents in Openlayer

![ElevenLabs Agents integration for Openlayer](https://mintcdn.com/openlayer-44/an8dvolPkfE9uJ64/images/integrations/elevenlabs_hero.png?fit=max\&auto=format\&n=an8dvolPkfE9uJ64\&q=85\&s=79f0fa788f18a10bd5db905352611057)

Openlayer integrates with [ElevenLabs Agents](https://elevenlabs.io/agents)
(ElevenAgents) to help you monitor, evaluate, and improve your voice agents.

The integration connects to the ElevenLabs API with an API key you provide,
automatically discovers your agents, and periodically syncs every completed
conversation — including the **call recording**, ElevenLabs' own **call
analysis**, the full **transcript**, per-turn **LLM usage and cost**, and tool
calls — so your voice agents get the same tests, metrics, and tracing as any
other pipeline in Openlayer.

## How it works

Openlayer connects to your ElevenLabs account and automatically:

1. **Discovers your agents**: finds every ElevenAgents agent visible to your
   API key, on connect and on each sync.
2. **Creates projects and data sources**: each enabled agent gets its own
   Openlayer project and inference pipeline, with no manual setup required.
3. **Syncs conversations**: periodically pulls new conversations. Each agent
   turn becomes a row (so per-response tests work out of the box), and the
   turns of one call are grouped into a **session**.
4. **Attaches the recording**: the whole-call audio and ElevenLabs' call
   analysis are attached to the session, powering the session page's
   [Audio view](#the-audio-view).

The integration is **pull-based**: Openlayer reaches out to the ElevenLabs
API, so it never requires inbound access or webhooks. Only **completed**
conversations are ingested — calls still in progress are picked up on a later
sync once they finish, no matter how long they run. Re-syncing the same
conversation is idempotent, so overlapping syncs and backfills never create
duplicates.

> [!NOTE]
>
> All access is **read-only**. Openlayer lists conversations, reads their
> transcripts and analysis, and downloads recordings. It never modifies your
> ElevenLabs agents or data.

## Prerequisites

One thing: an **ElevenLabs API key**.

1. In ElevenLabs, go to your profile → **API keys**.
2. Create a key. If you restrict its permissions, it needs read access to
   **Conversational AI** (conversations and audio).
3. Copy the key — you'll paste it into Openlayer below.

If your ElevenLabs workspace uses data residency, copy the key from that
workspace. Residency workspaces have their own keys, so the key must match the
region you select in Openlayer.

Openlayer stores the key encrypted and uses it only for the syncs described
above.

## Setup guide

### Step 1: Navigate to the integration

In your Openlayer workspace, go to **Settings** → **Integrations** and find
the **ElevenLabs Agents** card. Click **Enable**.

![The Openlayer Integrations page, searched for ElevenLabs, with the ElevenLabs Agents card and its Enable button](https://mintcdn.com/openlayer-44/i_IVq7qGt9U6VbHF/images/integrations/elevenlabs_integrations_page.png?fit=max\&auto=format\&n=i_IVq7qGt9U6VbHF\&q=85\&s=1269cc3ad3158b80b5dda330078e4621)

### Step 2: Connect your account

Paste your ElevenLabs API key into the connect form. If your workspace uses
data residency, select its **Region**:

* **Global** (default)
* **EU data residency**
* **India data residency**
* **Singapore data residency**

The key must belong to the selected region. Click **Test connection** to
verify the key before saving, then **Connect**.

On connect, Openlayer immediately discovers every agent visible to the key
and lists them on the **Agents** tab.

### Step 3: Configure sync settings

Once connected, the **Overview** shows the region for the connection. To
switch regions, disconnect and reconnect with the matching region and API
key. Your existing imported projects, pipelines, and data are preserved.

Control how data flows:

* **Periodic sync**: toggle automatic syncing on or off. You can also click
  **Sync now** at any time.
* **Sync frequency**: every 15 minutes, every 30 minutes, or hourly.
* **Store call recordings**: when on (the default), the conversation audio is
  attached to each session. Turn it off for transcript-only ingestion — see
  [Audio storage and privacy](#audio-storage-and-privacy).

![The General tab of a connected ElevenLabs integration in Openlayer, with the overview and the Periodic sync, Sync frequency, and Store call recordings settings](https://mintcdn.com/openlayer-44/i_IVq7qGt9U6VbHF/images/integrations/elevenlabs_connected.png?fit=max\&auto=format\&n=i_IVq7qGt9U6VbHF\&q=85\&s=af052413abdf112cc7cb567f2ca48301)

### Step 4: Enable agents

On the **Agents** tab, turn on the switch for each agent you want to monitor.
The Enable dialog lets you choose between:

* **Create new project** (default): Openlayer creates a project named
  `ElevenLabs - <agent name>` with a default inference pipeline linked to the
  agent.
* **Map to existing project**: route the agent's conversations into a project
  you already have.

Enabling queues an immediate sync, so data starts flowing right away. The
agents table shows each agent's linked project and how many conversations
have been synced.

![The Agents tab of the ElevenLabs integration in Openlayer, listing three agents with their linked projects, status, last sync, and synced conversations](https://mintcdn.com/openlayer-44/i_IVq7qGt9U6VbHF/images/integrations/elevenlabs_agents.png?fit=max\&auto=format\&n=i_IVq7qGt9U6VbHF\&q=85\&s=52bab0460d41792a7a1abbf6e721c250)

## Monitoring in Openlayer

Every synced conversation appears in the agent's project as a **session**
whose rows are the agent's turns. Each turn carries the user's utterance, the
agent's reply, latency, token usage, per-turn LLM cost, and any tool calls or
knowledge-base retrievals as trace steps.

### The Audio view

Sessions with a recording open in the **Audio view**. The main pane contains
the recording, call analysis, and call metadata, with the transcript alongside:

![Audio view of an ElevenLabs support call in Openlayer: the session recording waveform, the call analysis for a delivery address change, call metadata, and the timestamped transcript](https://mintcdn.com/openlayer-44/3n_T0gAV1fwn_DFx/images/integrations/elevenlabs_audio_view.png?fit=max\&auto=format\&n=3n_T0gAV1fwn_DFx\&q=85\&s=6a4b590b7a570b2c8109f466d214bbe9)

* **Session recording**: seek by clicking or dragging the waveform, press
  Space to play or pause, choose a playback speed, and download the recording
  from the section header.
* **Call analysis**: ElevenLabs' own summary and evaluation of the call.
* **Metadata**: beneath call analysis, view the call's Date, Call duration,
  Call status, Termination reason, Language, and ElevenLabs cost.
* **Transcript**: follow the conversation by speaker and timestamp, search it,
  and download it as plain text. When audio is present, click a timestamped
  line to seek the recording to that point.

The **Conversational** and **Table** views show the same session as
turn-by-turn traces, and every Openlayer feature — tests, metrics, AI
summaries — works on voice sessions like any other data.

> [!TIP]
>
> You'll see two costs. The **ElevenLabs cost** in the metadata section is
> ElevenLabs' billed price for the whole call (speech recognition, voice
> synthesis, platform, and LLM). The cost in the session header is Openlayer's
> standard **LLM-only** cost computed from token usage — the same metric used
> for every other pipeline, so it stays comparable across integrations. The
> call's duration and its recording's length can also differ slightly: a call
> stays open after the last audio.

### Backfill historical data

To import conversations that occurred before the integration was connected
(or before an agent was enabled), open the agent's options menu and click
**Backfill**. Choose:

* **All available history**: re-sync every conversation ElevenLabs still
  retains for the agent.
* **Custom start date**: sync conversations from a specific date forward.

Duplicates are skipped automatically, so backfills are safe to run at any
time.

### Run evaluations

With conversations flowing in, you can:

* [Create tests](https://docs.openlayer.com/tests/overview.md) to score response quality per turn or per
  session
* Track safety and compliance metrics on transcripts
* Monitor latency, token-usage, and cost trends
* Compare agent behavior across versions

## Audio storage and privacy

Transcripts pass through your workspace's standard PII redaction before they
are stored, including ElevenLabs' free-text call analysis. **Audio cannot be
redacted**: recordings are stored exactly as ElevenLabs provides them.

If storing raw call audio doesn't fit your data policies, turn **Store call
recordings** off in the integration settings — conversations then ingest with
transcripts and analysis only, and the Audio view simply omits the player.

Data imported into Openlayer is retained until you delete it in Openlayer;
deleting a conversation on the ElevenLabs side does not remove the copy
already ingested.

## Disconnecting

To disconnect the ElevenLabs integration:

1. Go to **Settings** → **Integrations** → **ElevenLabs Agents**
2. Click **Remove ElevenLabs from workspace**

This stops all syncs and deletes the connection and discovered-agent records.
Existing data already imported into Openlayer (projects, pipelines, sessions,
recordings) is preserved.

## Troubleshooting

| Symptom | Likely cause | Fix |
| - | - | - |
| Test connection fails with an authentication error or 401 | Key is invalid, revoked, lacks Conversational AI access, or belongs to a different region than the selected **Region** | Check the key's permissions and select the region where the key was created, then reconnect |
| Connection shows an authentication error after working | The API key was rotated or revoked in ElevenLabs | Update the key in the integration settings; syncing resumes on the next run |
| **0 agents discovered** | The key belongs to a workspace with no ElevenAgents agents | Verify the agent exists under the same ElevenLabs account, then click **Refresh agents** |
| A call doesn't appear after finishing | ElevenLabs is still processing it — only **completed** conversations ingest | Wait for the next periodic sync, or click **Sync now** |
| Recording missing on a session | The call produced no audio, audio was deleted in ElevenLabs, or **Store call recordings** was off when it synced | Check the conversation in ElevenLabs; re-sync via **Backfill** after enabling recordings |
| Per-turn cost is \$0 for some turns | The agent uses a custom or unrecognized LLM | Expected for unknown models. ElevenLabs' own billed price is always available as **ElevenLabs cost** on the session |
| A conversation has fewer turns than in ElevenLabs | Turns where the agent produced no spoken output are skipped | Expected. Aborted or unspoken generations don't become rows; their cost is still reflected in the session's ElevenLabs cost |


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