Skip to main content

Overview

Roark supports OpenTelemetry (OTel) tracing. Send your OTel trace data to Roark to see what happens under the hood of your Voice AI agent, debug latency, inspect tool usage and external API calls, and correlate call execution with your backend traces.

Features

  • LLM traces per call — View LLM spans, tool calls, and model invocations directly on the call detail page. Each call’s Tracing tab shows the full trace tree for that conversation, so you can quickly pinpoint where latency or failures occurred.
  • Central trace explorer — See all traces in one place. Filter by time range, custom tags, or search by span name and attributes. Use this to spot patterns across calls, compare runs, and troubleshoot recurring issues.

Roark Traces view showing agent turns with STT, LLM, and TTS spans

Endpoint and Protocol

All trace ingestion requests require authentication. Generate an API key in your Roark dashboard and use it in the Authorization: Bearer YOUR_ROARK_API_KEY header.

Setup Guide

1

Get an API key

Generate an API key in your Roark dashboard. Trace ingestion requires authentication via the Authorization: Bearer YOUR_ROARK_API_KEY header. Create an API key →
2

Choose your integration

Pick the platform you’re using and follow the corresponding setup section below:
  • LiveKit — instrument your LiveKit agent with OpenTelemetry
  • Pipecat — enable Pipecat’s built-in OTel and export to Roark
  • VAPI — traces sync automatically when calls are ingested
  • Custom integration — any other platform via OTLP HTTP

LiveKit

Instrument your LiveKit agent with OpenTelemetry and export traces to Roark. Configure your tracer with the livekit.room.id resource attribute — this is how Roark links your LiveKit room to its traces and shows them on the call detail page. See the LiveKit integration guide for the full webhook setup. Install the required packages:
Example: a simple LiveKit Agent entrypoint with OTel exporting to Roark:
Resource attributes:
If you’re also using the LiveKit webhook integration, you can set roark.skip in both room metadata and OTel resource attributes to skip both call processing and trace ingestion.

Pipecat

Enable Pipecat’s built-in OpenTelemetry and export spans to Roark. Configure the tracer provider before constructing PipelineTask, pass enable_tracing=True, and use the same call ID for the observer’s pipecat_call_id and the task’s conversation_id so Roark can link each call to its trace. See the Pipecat integration guide for the observer setup. Install the required packages:
Configure the tracer provider, then wire enable_tracing + matching IDs into the pipeline:
Resource and span attributes:
If you omit conversation_id / pipecat_call_id, Pipecat still emits traces and the observer still records the call — but Roark won’t be able to associate the two, so the Tracing tab on the call detail page will be empty.

VAPI

Traces sync automatically. Whenever a call from a selected agent is synced to Roark, its OpenTelemetry traces are synced too. No extra OTLP exporter or instrumentation is needed on your side. See the VAPI integration guide for step-by-step setup.
Make sure Public Logs are enabled in your Vapi dashboard. Roark requires public log access to ingest trace data from Vapi calls.

Custom Integration

For any other platform, use the OTLP HTTP trace exporter and point it to Roark’s OTel endpoint. Include the required Authorization: Bearer YOUR_ROARK_API_KEY header and attach the required resource attributes.

Correlating traces to a call or chat

If you submit calls or chats to Roark via the Customer API, tag your traces with roark.external_id so Roark can link each conversation to its trace automatically.
  1. When creating a call or chat via POST /call or POST /chat, supply the externalId field with a stable identifier from your own system (session ID, conversation ID, etc.). It must be unique within the project.
  2. On your OpenTelemetry traces, set roark.external_id to the same value — either as a resource attribute (propagates to every span in the service) or as a span attribute on the root span.
Roark looks up the matching trace in ClickHouse after the call/chat is created and backfills the trace ID, so the conversation appears in its Tracing tab automatically.
Resource attributes:
Once your integration is set up, you’re ready to send traces to Roark. You’ll be able to view them on the Traces page and directly within each call’s detail page.

What’s Next

Live monitoring

View and debug active calls

Metrics & reports

Define and analyze call metrics

Dashboards

Build observability views

API reference

Explore Roark API endpoints

Related: LiveKit integration · VAPI integration · Integrations overview