Using a coding agent? Paste this prompt directly in your voice agent codebase to jumpstart your Cekura OTel integration.
Overview
OpenTelemetry (OTel) tracing gives you deep visibility into your voice agent’s execution - every LLM call, TTS request, STT transcription, and tool invocation captured as spans with timing, token usage, and metadata. Once traces are flowing into Cekura, you can:- View span timelines and waterfall diagrams for each call
- Identify latency bottlenecks (slow LLM responses, TTS delays)
- Track token usage and model performance across calls
- Debug tool call failures with full input/output context
Using Pipecat? The Cekura Python SDK instruments your pipeline automatically - no manual setup needed. See the Pipecat Tracing guide.
Prerequisites
- A Cekura account with an API key
- An Agent ID or Project ID from the Cekura dashboard
- Python 3.8+ (examples use Python, but any OTel-compatible language works)
Install Dependencies
- gRPC (Recommended)
- HTTP
Endpoints
Authentication
Every request to the OTel endpoint requires two headers:
* Provide either
x-cekura-agent-id or x-cekura-project-id.
These are passed as exporter headers (HTTP) or gRPC metadata, not as span attributes.
Setup
1
Configure the OTel exporter
Set up the exporter with your Cekura credentials:
- gRPC
- HTTP
2
Instrument your agent code
Create spans around each service call in your agent. Use the span names from the naming conventions for best results in the Cekura UI.
3
Capture the trace ID
Extract the trace ID from your root span - you’ll need this to correlate the trace with the call log in Cekura.
4
Send the trace ID with your call log
When sending the call log to Cekura via the Send Calls API, include the Once the call log is submitted with a
trace_id field. This links the OTel trace to the call in the dashboard.trace_id, the trace will be visible in the call details page in the Cekura dashboard.Span Naming Conventions
Cekura recognizes these span names and renders them with specialized UI:
Custom span names work too - they just won’t have specialized styling in the UI.
For workflows that require audit-grade explainability — capturing the reasoning behind individual agent decisions, not just pass/fail outcomes — see Decision-Level Reasoning and Explainability in the FAQ.
Example: Full Voice Agent
Here’s a complete example showing a voice agent with OTel tracing and Cekura integration:Next Steps
- Pipecat Tracing - auto-instrumentation for Pipecat agents
- Send Calls API - full API reference for the observe endpoint
- Custom Metrics - evaluate agent performance from your call data
- Cekura MCP Server - use MCP tools to create tests, run simulations, and monitor production calls directly from your IDE or AI assistant