Monitor ElevenLabs using OpenTelemetry
Shield360 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 Shield360 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-jsorelevenlabs)>= 1.0.0
Supported APIs
Section titled “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
Section titled “Prerequisites”- Install the ElevenLabs SDK yourself. Shield360 does not bundle it as a dependency.
- For TypeScript, call
shield360.init()before the ElevenLabs module is first loaded so OpenTelemetry can hook into the SDK at runtime.
TypeScript example
Section titled “TypeScript example”import shield360 from "shield360";
shield360.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
Section titled “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 |
Get started
Section titled “Get started”Open your command line or terminal and run:
pip install shield360npm install shield360npm install @elevenlabs/elevenlabs-jsThe elevenlabs package is also supported.
Perfect for existing applications - no code modifications needed:
# Configure via CLI argumentsshield360-instrument \ --service-name my-ai-app \ --environment production \ --otlp-endpoint YOUR_OTEL_ENDPOINT \ python your_app.py# Configure via environment variablesexport OTEL_SERVICE_NAME=my-ai-appexport OTEL_DEPLOYMENT_ENVIRONMENT=productionexport OTEL_EXPORTER_OTLP_ENDPOINT=YOUR_OTEL_ENDPOINT
# Run with zero code changesshield360-instrument python your_app.pyimport shield360
shield360.init(otlp_endpoint="YOUR_OTEL_ENDPOINT")Add the following two lines to your application code:
import shield360
shield360.init()Then, configure the your OTLP endpoint using environment variable:
export OTEL_EXPORTER_OTLP_ENDPOINT=YOUR_OTEL_ENDPOINTimport shield360 from "shield360"
shield360.init({ otlpEndpoint: "YOUR_OTEL_ENDPOINT" })Add the following two lines to your application code:
import shield360 from "shield360"
shield360.init()Then, configure the your OTLP endpoint using environment variable:
export OTEL_EXPORTER_OTLP_ENDPOINT=YOUR_OTEL_ENDPOINTReplace: YOUR_OTEL_ENDPOINT with the URL of your OpenTelemetry backend, such as http://127.0.0.1:4318 if you are using Shield360 and a local OTel Collector.
To send metrics and traces to other Observability tools, refer to the supported destinations.
For more advanced configurations and application use cases, visit the SDK configuration reference or TypeScript SDK reference.