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

# Monitor ElevenLabs using OpenTelemetry

OpenLIT uses OpenTelemetry Auto-Instrumentation to help you monitor LLM applications built using Audio and Speech models from ElevenLabs. This includes tracking performance, costs, voice inputs and settings, and how users interact with the application.

Auto-instrumentation means you don't have to set up monitoring manually for different LLMs, frameworks, or databases. By simply adding OpenLIT in your application, all the necessary monitoring configurations are automatically set up.

The integration is compatible with

* ElevenLabs Python SDK client `>= 1.4.0`
* ElevenLabs TypeScript SDK client (`@elevenlabs/elevenlabs-js` or `elevenlabs`) `>= 1.0.0`

## Supported APIs

| SDK            | Instrumented methods                                                         |
| -------------- | ---------------------------------------------------------------------------- |
| **TypeScript** | `ElevenLabsClient.textToSpeech.convert`, `.stream`, `.convertWithTimestamps` |
| **Python**     | `TextToSpeechClient.convert` and `AsyncTextToSpeechClient.convert`           |

TypeScript covers more TTS methods than Python. Python instruments `.convert` only (sync and async).

## Prerequisites

* Install the ElevenLabs SDK yourself. OpenLIT does not bundle it as a dependency.
* For TypeScript, call `openlit.init()` **before** the ElevenLabs module is first loaded so OpenTelemetry can hook into the SDK at runtime.

## TypeScript example

```typescript theme={null}
import openlit from "openlit";

openlit.init({ otlpEndpoint: "YOUR_OTEL_ENDPOINT" });

import { ElevenLabsClient } from "@elevenlabs/elevenlabs-js";

const client = new ElevenLabsClient({ apiKey: process.env.ELEVENLABS_API_KEY! });
const audio = await client.textToSpeech.convert("voice-id", {
  text: "Hello",
  modelId: "eleven_multilingual_v2", // also accepts model_id / model
});
```

## Configuration

| Option                                  | Behavior                                                                        |
| --------------------------------------- | ------------------------------------------------------------------------------- |
| `captureMessageContent`                 | Gates `gen_ai.input.messages` / `gen_ai.output.messages` on spans and in events |
| `disableEvents`                         | Suppresses all inference events                                                 |
| `disableMetrics`                        | Global — metrics instruments are not set up                                     |
| `disabledInstrumentors: ['elevenlabs']` | Disables this instrumentation                                                   |

<Note>
  On the Python SDK, inference events are only emitted when `capture_message_content` is enabled. On the TypeScript SDK, inference events are emitted when `disableEvents` is `false`, regardless of `captureMessageContent` (message fields within the event are still gated by content capture).
</Note>

## Get started

<Steps>
  <Step title="Install OpenLIT">
    Open your command line or terminal and run:

    <Tabs>
      <Tab title="Python">
        ```shell theme={null}
        pip install openlit
        ```
      </Tab>

      <Tab title="Typescript">
        ```shell theme={null}
        npm install openlit
        npm install @elevenlabs/elevenlabs-js
        ```

        The `elevenlabs` package is also supported.
      </Tab>
    </Tabs>
  </Step>

  <Step title="Initialize OpenLIT in your Application">
    <Tabs>
      <Tab title="Python">
        <Tabs>
          <Tab title="Zero Code Instrumentation">
            Perfect for existing applications - no code modifications needed:

            <Tabs>
              <Tab title="Via CLI Arguments">
                ```bash theme={null}
                # Configure via CLI arguments
                openlit-instrument \
                  --service-name my-ai-app \
                  --environment production \
                  --otlp-endpoint YOUR_OTEL_ENDPOINT \
                  python your_app.py
                ```
              </Tab>

              <Tab title="Via Environment Variables">
                ```bash theme={null}
                # Configure via environment variables
                export OTEL_SERVICE_NAME=my-ai-app
                export OTEL_DEPLOYMENT_ENVIRONMENT=production
                export OTEL_EXPORTER_OTLP_ENDPOINT=YOUR_OTEL_ENDPOINT

                # Run with zero code changes
                openlit-instrument python your_app.py
                ```
              </Tab>
            </Tabs>

            <Info>
              **Perfect for**: Legacy applications, production systems where code changes need approval, quick testing, or when you want to add observability without touching existing code.
            </Info>
          </Tab>

          <Tab title="One-Line Instrumentation">
            <Tabs>
              <Tab title="Via Function Parameters">
                ```python theme={null}
                import openlit

                openlit.init(otlp_endpoint="YOUR_OTEL_ENDPOINT")
                ```
              </Tab>

              <Tab title="Via Environment Variables">
                Add the following two lines to your application code:

                ```python theme={null}
                import openlit

                openlit.init()
                ```

                Then, configure the your OTLP endpoint using environment variable:

                ```shell theme={null}
                export OTEL_EXPORTER_OTLP_ENDPOINT=YOUR_OTEL_ENDPOINT
                ```
              </Tab>
            </Tabs>
          </Tab>
        </Tabs>
      </Tab>

      <Tab title="Typescript">
        <Tabs>
          <Tab title="One-Line Instrumentation (SDK)">
            <Tabs>
              <Tab title="Via Function Parameters">
                ```typescript theme={null}
                import openlit from "openlit"

                openlit.init({ otlpEndpoint: "YOUR_OTEL_ENDPOINT" })
                ```
              </Tab>

              <Tab title="Via Environment Variables">
                Add the following two lines to your application code:

                ```typescript theme={null}
                import openlit from "openlit"

                openlit.init()
                ```

                Then, configure the your OTLP endpoint using environment variable:

                ```shell theme={null}
                export OTEL_EXPORTER_OTLP_ENDPOINT=YOUR_OTEL_ENDPOINT
                ```
              </Tab>
            </Tabs>
          </Tab>
        </Tabs>
      </Tab>
    </Tabs>

    **Replace:** `YOUR_OTEL_ENDPOINT` with the URL of your OpenTelemetry backend, such as `http://127.0.0.1:4318` if you are using OpenLIT and a local OTel Collector.

    To send metrics and traces to other Observability tools, refer to the [supported destinations](/latest/sdk/destinations/overview).

    For more advanced configurations and application use cases, visit the [OpenLIT Python repository](https://github.com/openlit/openlit/tree/main/sdk/python) or [OpenLIT Typescript repository](https://github.com/openlit/openlit/tree/main/sdk/typescript).
  </Step>
</Steps>

***

<CardGroup cols={3}>
  <Card title="Quickstart: LLM Observability" href="/latest/sdk/quickstart-ai-observability" icon="bolt">
    Production-ready AI monitoring setup in 2 simple steps with zero code changes
  </Card>

  <Card title="Configuration" href="/latest/sdk/configuration" icon="bolt">
    Configure the OpenLIT SDK according to you requirements.
  </Card>

  <Card title="Destinations" href="/latest/sdk/destinations/overview" icon="link">
    Send telemetry to Datadog, Grafana, New Relic, and other observability stacks
  </Card>
</CardGroup>

<Card title="Zero-code observability with the OpenLIT Controller" icon="tower-broadcast" href="/latest/controller/overview">
  Discover and instrument LLM traffic across Kubernetes, Docker, and Linux using eBPF — no code changes required.
</Card>
