Observability API Overview

The RubricHQ Observability API lets you push call data from any AI platform into RubricHQ for analysis — voice calls (Vapi, Retell, ElevenLabs, custom telephony) and text/GenAI sessions (LLM chat, function-calling agents).

Base URL

https://api.rubrichq.io/api/public/v1

What you can do

EndpointDescription
POST /callsIngest a call (recording URL and/or transcript)
GET /callsList all ingested calls
GET /calls/{id}Get call details and computed metrics

Call types

observation_typeUse forMetrics computed
voice (default)Phone calls, Vapi, Retell, ElevenLabsAudio metrics (latency, silence, interruptions, WPM) + LLM metrics
textGenAI / LLM chat sessions, function-calling agentsLLM metrics only (no audio required)

How analysis works

When you POST a call:

  1. Transcript metrics run immediately — if you provide a transcript, LLM-based metrics run right away
  2. Audio metrics run async — if observation_type is voice and you provide a recording_url, RubricHQ downloads the audio and runs standard audio metrics in the background
  3. Poll for results — check GET /calls/{id} until analysis_status is "computed"
POST /calls → analysis_status: "pending"
↓ (seconds to minutes)
GET /calls/{id} → analysis_status: "computed"

Transcript roles

All transcript turns must use one of these roles — any other value is rejected with 422:

RoleMeaning
AI AssistantThe AI system being evaluated
UserThe caller, customer, or simulated tester
Function CallA tool/function invoked by the AI
Function Call ResultThe response returned from a tool call

IDs you need

Before ingesting calls you need two IDs from your RubricHQ dashboard:

  • agent_id — from AI Testing Agent → select your agent → URL shows the ID
  • client_id — from Settings → Workspace → shown as Workspace ID