← Back to Documentation

Observability

Debug behavior without guessing. Timelines, transcripts, waveforms, and latency breakdowns for every call.

What You Get

Every call exposes detailed observability data:

Timeline

Chronological events: speech, reasoning, webhooks, MCP calls. See exactly when each component fired.

Transcript

Full conversation with timestamps and ASR confidence scores. Auto-generated summary included.

Latency Breakdown

Per-component timing: ASR, TTS, conversation agent, reasoning agent, webhooks, MCP. Find bottlenecks fast.

Waveform

Audio visualization showing speech vs. silence, interruptions, and turn-taking patterns.

Timeline

The timeline shows every event in chronological order:

Timeline Response
// GET /v1/calls/{id}/timeline
{
  "call_id": "call_abc123",
  "events": [
    {
      "type": "call_started",
      "timestamp": "2024-01-15T10:30:00.000Z"
    },
    {
      "type": "assistant_speech",
      "timestamp": "2024-01-15T10:30:01.500Z",
      "duration_ms": 2100,
      "content": "Hi, thanks for calling Acme Corp. How can I help you today?"
    },
    {
      "type": "user_speech",
      "timestamp": "2024-01-15T10:30:04.200Z",
      "duration_ms": 1800,
      "content": "I need to check on my order status"
    },
    {
      "type": "reasoning_started",
      "timestamp": "2024-01-15T10:30:06.100Z",
      "mode": "webhook"
    },
    {
      "type": "webhook_called",
      "timestamp": "2024-01-15T10:30:06.150Z",
      "url": "https://api.example.com/aployee",
      "duration_ms": 245
    },
    {
      "type": "reasoning_completed",
      "timestamp": "2024-01-15T10:30:06.400Z",
      "duration_ms": 300
    },
    {
      "type": "assistant_speech",
      "timestamp": "2024-01-15T10:30:06.800Z",
      "duration_ms": 3200,
      "content": "I can help with that. I see your order 12345 shipped yesterday..."
    }
  ]
}

Event Types

  • call_started / call_ended - Call lifecycle
  • user_speech / assistant_speech - Dialogue events
  • reasoning_started / reasoning_completed - Async reasoning
  • webhook_called / mcp_tool_called - External integrations
  • barge_in - User interrupted assistant
  • silence_detected - Extended silence
  • transfer_initiated - Call transfer started

Latency Breakdown

Understand where time is spent in each call:

Latency Response
// GET /v1/calls/{id}/latency
{
  "call_id": "call_abc123",
  "summary": {
    "total_duration_ms": 337000,
    "avg_response_latency_ms": 412,
    "p95_response_latency_ms": 650
  },
  "breakdown": {
    "asr": {
      "avg_ms": 85,
      "p95_ms": 120,
      "calls": 45
    },
    "conversation_agent": {
      "avg_ms": 180,
      "p95_ms": 290,
      "calls": 45
    },
    "reasoning_agent": {
      "avg_ms": 320,
      "p95_ms": 510,
      "calls": 12
    },
    "webhook": {
      "avg_ms": 245,
      "p95_ms": 380,
      "calls": 12
    },
    "tts": {
      "avg_ms": 95,
      "p95_ms": 140,
      "calls": 38
    }
  }
}

Components Measured

  • asr - Speech-to-text processing time
  • conversation_agent - Fast response generation
  • reasoning_agent - Async reasoning (when used)
  • webhook - Your webhook response time
  • mcp - MCP tool call duration
  • tts - Text-to-speech synthesis

Transcript

Get the full conversation with metadata:

Transcript Response
// GET /v1/calls/{id}/transcript
{
  "call_id": "call_abc123",
  "transcript": [
    {
      "role": "assistant",
      "content": "Hi, thanks for calling Acme Corp. How can I help you today?",
      "timestamp": "2024-01-15T10:30:01.500Z",
      "confidence": 1.0
    },
    {
      "role": "user",
      "content": "I need to check on my order status",
      "timestamp": "2024-01-15T10:30:04.200Z",
      "confidence": 0.95
    },
    {
      "role": "assistant",
      "content": "I can help with that. I see your order 12345 shipped yesterday via UPS. Would you like the tracking number?",
      "timestamp": "2024-01-15T10:30:06.800Z",
      "confidence": 1.0
    }
  ],
  "summary": "Customer inquired about order status. Order 12345 confirmed shipped."
}

Dashboard

The Aployee dashboard provides visual tools for each call:

  • Waveform View: Audio visualization with speech segments, silences, and interruptions highlighted
  • Timeline View: Scrollable event timeline with expandable details for each event
  • Latency Charts: Per-call and aggregate latency visualizations
  • Transcript Playback: Read transcript synced with audio playback

Debugging Tips

Slow Responses?

Check latency breakdown. If webhook is slow, optimize your backend. If reasoning_agent is slow, consider using builtin mode for simpler queries.

Wrong Transcriptions?

Check ASR confidence scores. Low scores indicate audio quality issues. Consider adjusting silence thresholds.

Awkward Timing?

Look at the waveform for barge-ins and silences. Adjust silence_timeout_ms if the assistant waits too long.

Unexpected Behavior?

Check the timeline for reasoning events. Your webhook or MCP tool may be returning unexpected data.

Event Webhooks

Get real-time notifications for call events:

  • call.started - Call connected
  • call.ended - Call completed with summary
  • call.transferred - Call handed off
  • call.failed - Call failed with error

Configure event webhooks in your organization settings to integrate with your CRM, analytics, or alerting systems.

Next steps