Analytics & Observability
Analyze call quality, production evaluations, operational health, recordings, event streams, and external-write review activity across a workspace.
Workspace-level analytics, call management, recording access, and private-preview external-write proposal review.
Analytics
Usage summary: Event counts by type with daily breakdown
Call statistics: Volume and duration metrics
Event breakdown: Distribution by type and source
Data quality: Overall and by-source confidence distributions, review-pipeline fields, and daily confidence/event-volume trends
Call Intelligence
Per-call intelligence summaries are recorded at call end for analytics use. Fully analyzed records can include a rule-based quality score (0-100), emotion summary, latency metrics, conversation shape, tool performance, and operator data. risk_summary and safety_summary remain in the wire shape for compatibility but are empty in the current runtime; safety escalation is authored in the agent and its context graph rather than produced by a separate call-risk classifier. Some external voice runtimes persist only a terminal call envelope, so quality_score can be null and analysis summaries can be empty. See Voice Agent, Call Intelligence Persistence for field details and scoring rules.
Call Intelligence Analytics (5 Endpoints)
These workspace-scoped operations require viewer+ access. Quality distribution tiers are excellent (90-100), good (70-89), fair (50-69), and poor (0-49).
Call Quality
Call quality score trends, distribution, and summary statistics.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
301dPossible values: Successful Response
Call quality score trends, distribution, and summary over time.
Served from the live Delta projection analytics.source_call_intelligence.
Validation Error
Rate limit exceeded
GET /v1/{workspace_id}/analytics/call-quality HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"summary": {
"avg_quality_score": 1,
"p50_quality_score": 1,
"p95_quality_score": 1,
"total_calls": 1,
"escalation_rate": 1,
"avg_duration_seconds": 1
},
"trend": [
{
"date": "text",
"avg_quality": 1,
"call_count": 1,
"escalation_count": 1
}
],
"quality_distribution": {
"excellent_90_100": 1,
"good_70_89": 1,
"fair_50_69": 1,
"poor_0_49": 1
}
}Emotion Trends
Emotion distribution and valence/arousal trends.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
301dPossible values: Successful Response
Validation Error
Rate limit exceeded
GET /v1/{workspace_id}/analytics/emotion-trends HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}Latency
Voice latency metrics — p50/p95/p99 by component with trends.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
301dPossible values: Successful Response
Validation Error
Rate limit exceeded
GET /v1/{workspace_id}/analytics/latency HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}Tool Performance
Tool execution analytics — success rates, failure trends.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
301dPossible values: Successful Response
Validation Error
Rate limit exceeded
GET /v1/{workspace_id}/analytics/tool-performance HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}Operator Performance
Operator escalation stats and quality comparison.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
301dPossible values: Successful Response
Operator escalation performance and quality comparison over time.
Validation Error
Rate limit exceeded
GET /v1/{workspace_id}/analytics/operator-performance HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"summary": {
"total_calls": 1,
"escalated_count": 1,
"escalation_rate": 1,
"operator_handled_count": 1,
"avg_escalated_duration_seconds": 1,
"avg_escalated_quality_score": 1,
"avg_non_escalated_quality_score": 1
},
"trend": [
{
"date": "2026-01-01",
"total_calls": 1,
"escalated_count": 1
}
]
}Production Eval Quality
Reports channel-agnostic production-evaluation quality across voice, text, SMS, and email. When no verdicts exist, arrays are empty and rate fields are null rather than producing an error.
Production-eval pass-rate and score trends (channel-agnostic — voice, text, SMS, email).
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
301dPossible values: Successful Response
Production-eval quality: overall pass-rate/score, per-eval-key breakdown, and a trend.
The channel-agnostic quality surface. Returns zeroed shapes (empty by_eval_key
and trend, null rates) when no verdicts exist for the workspace/window — the
console renders an empty-state rather than erroring, so this ships safely ahead of
the eager-eval trigger being enabled in production.
Validation Error
Rate limit exceeded
GET /v1/{workspace_id}/analytics/eval-quality HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"summary": {
"eval_key": "text",
"total_evals": 1,
"judged": 1,
"pass_rate": 1,
"avg_score": 1
},
"by_eval_key": [
{
"eval_key": "text",
"total_evals": 1,
"judged": 1,
"pass_rate": 1,
"avg_score": 1
}
],
"trend": [
{
"date": "2026-01-01",
"total_evals": 1,
"judged": 1,
"pass_rate": 1,
"avg_score": 1
}
]
}Calls & Recordings
Call listing: Filter by date, status, and duration. Calls include the final state and, when computed, a quality score from call intelligence. Supports
continuation_tokenfor cursor-based pagination alongsideoffset.Call detail: Full call detail with turns, timeline, and playback data (proxied from the voice agent for rich conversation reconstruction)
Call intelligence: Terminal operational summary with quality breakdown, key moments, emotion, latency, conversation, tool, and operator data when available
Phone volume: Call volume per phone number over a time window
Recordings: Time-limited signed URLs for audio playback, plus recording metadata
Review Queue
The review queue API holds external write proposals awaiting a human decision: list pending proposals, inspect a proposal's payload, and approve or reject it. See the Review Queue guide for the lifecycle and the Review Queue API reference for endpoint schemas. Conversation-scoped integration approval is a different mechanism documented in Approval-Gated Integration Writes.
External write proposal review is in private preview and is available only in enabled workspaces and environments.
In the current Console, this connector proposal surface is labeled Outbound Write Approvals. The operator-shell Review Queue refers to patient-facing Surface approvals, not external write proposals.
Population Health Analytics
A layered epidemiology pipeline materializes six per-workspace analytics output tables for downstream risk stratification, dashboard visualizations, and explainable cohort analysis:
patient_condition_fact: exploded patient × condition fact with onset, age at onset, normalized code system, and cohort bucket.disease_trends_monthly: incident counts by code × month × cohort.disease_prevalence_current: active-condition prevalence with Wilson 95% confidence intervals, which stay reliable for small samples.disease_cohort_drivers: Standardized Prevalence Ratio (SPR - the ratio of a cohort's observed condition prevalence to the prevalence expected from the overall population) per(code, cohort)with Byar 95% confidence intervals. The canonical measure of whether a cohort over- or under-indexes for a condition.patient_condition_burden: per-patient Charlson Comorbidity Index (CCI - a weighted comorbidity score that predicts mortality risk from a patient's condition list; Quan 2005 ICD-10 mapping) and age-adjusted CCI (Charlson 1994). Feature-ready for risk models.condition_cooccurrence_pairs: association statistics for condition pairs - Jaccard similarity, lift, pointwise mutual information (PMI - how much more often two conditions co-occur than chance would predict), and chi-square.
All association and ratio tables emit a min_support_met flag at the standard small-cell suppression threshold (observed ≥ 5). Filter on it to avoid reporting unstable rates.
Methodology follows the standard epidemiology literature: Wilson (1927), Breslow & Day (1987), Charlson et al. (1987, 1994), Quan et al. (2005).
Platform Health Monitoring
These operations provide real-time visibility without querying the analytics warehouse. Both require viewer+ access and use the standard read-rate policy.
Connector Health
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
Server clock at query time (UTC).
ready = Lakebase projection returned rows; empty = no summary rows; unavailable = read failed.
Most recent platform.connector_health_summary synced_at value in this response.
GET /v1/{workspace_id}/sensorium/connector-health HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
Successful Response
{
"sources": [
{
"source": "text",
"events_per_minute": 1,
"events_last_hour": 1,
"events_last_24h": 1,
"last_ingested_at": "2026-01-01T00:00:00.000Z",
"freshness": "fresh"
}
],
"as_of": "2026-01-01T00:00:00.000Z",
"read_model_status": "ready",
"read_model_synced_at": "2026-01-01T00:00:00.000Z"
}Sense-to-Act Latency
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Window size in hours (1-168).
24Successful Response
Server clock at query time (UTC).
Total pairs across the window.
Median latency across the whole window; null if no pairs.
True when the underlying query hit the row cap; p50 is computed over the truncated sample.
falseValidation Error
GET /v1/{workspace_id}/sensorium/loop-latency HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"as_of": "2026-01-01T00:00:00.000Z",
"window_hours": 1,
"overall_count": 1,
"overall_p50_seconds": 1,
"sparkline": [
{
"hour": "2026-01-01T00:00:00.000Z",
"count": 1,
"p50_seconds": 1
}
],
"truncated": false
}Voice Judge
Audio-native quality evaluation can score eligible recorded calls across ten dimensions directly from stereo audio when the feature and required recording are available. Unlike post-interaction quality scoring, the Voice Judge evaluates the audio artifact and produces per-dimension scores with evidence for UI drill-down. The ten dimensions are also represented as aggregate built-in metrics in the metric store.
Pipeline Health
Read-only endpoints under /v1/{workspace_id}/pipeline/ provide connector observability for the pipeline dashboard: composite pipeline status, per-source health and history, outbound summaries and logs, entity resolution metrics, and event throughput. If live connector status is unavailable, stored source and event history remains distinguishable from live health data. See Connector Runner, Pipeline Observability for the full endpoint reference.
Workspace Health Aggregate
The compatibility-named command-center operation returns a composite workspace health snapshot; it is not a current Console page. Legacy Console routes redirect to Home.
Single-pane workspace health dashboard combining voice, pipeline, data quality, and identity metrics.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Successful Response
[]falseRate limit exceeded
GET /v1/{workspace_id}/command-center HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"workspace_id": "123e4567-e89b-12d3-a456-426614174000",
"voice": {
"active_calls": 0,
"active_escalated": 0,
"calls_today": 0,
"avg_quality_score_today": 1,
"escalation_rate_today": 0
},
"pipeline": {
"sources_total": 0,
"sources_healthy": 0,
"sources_degraded": 0,
"sources_failing": 0,
"events_last_hour": 0,
"outbound_pending": 0,
"outbound_failed": 0,
"connector_status": "unavailable"
},
"data_quality": {
"pending_reviews": 0,
"approval_rate_7d": 1,
"avg_confidence": 1,
"entities_total": 0,
"entities_merged_7d": 0
},
"identity": {
"active_api_keys": 0,
"active_sessions": 1,
"failed_auths_1h": 1,
"locked_accounts": 1,
"mfa_coverage_pct": 1
},
"alerts": [
{
"level": "info",
"code": "text",
"message": "text",
"section": "text"
}
],
"degraded_sections": [
"text"
],
"generated_at": "text",
"cached": false
}The cached field is true when the response reuses a recently generated snapshot and false when it was generated for the current request. The response defines six alert checks, but checks that depend on placeholder metrics do not establish outbound, confidence, or identity health. Permissions: viewer+.
Percentile Analytics
Advanced Call Metrics
Percentile-based call metrics: p50/p95/p99 for duration, quality, latency.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
301dPossible values: Filter by call direction: inbound or outbound
Successful Response
Validation Error
Rate limit exceeded
GET /v1/{workspace_id}/analytics/calls/advanced HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}Period Comparison
Period-over-period comparison of key call metrics.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
Start of current period
End of current period
Start of previous period
End of previous period
Successful Response
Validation Error
Rate limit exceeded
GET /v1/{workspace_id}/analytics/calls/comparison?current_from=2026-01-01¤t_to=2026-01-01&previous_from=2026-01-01&previous_to=2026-01-01 HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"ANY_ADDITIONAL_PROPERTY": "anything"
}Entity Intelligence & World Sync
Entity-level intelligence endpoints (relationship graph, provenance, lineage, duplicate detection, entity search) and the outbound world sync events endpoint are documented with the rest of the world model API.
Real-Time Event Stream
The Server-Sent Events stream carries real-time workspace updates.
Server-Sent Events stream for real-time workspace updates.
API key issued via POST /v1/{workspace_id}/api-keys. Pass the returned api_key value as a Bearer token.
SSE stream
Rate limit exceeded
GET /v1/{workspace_id}/events/stream HTTP/1.1
Host: api.platform.amigo.ai
Authorization: Bearer YOUR_SECRET_TOKEN
Accept: */*
{
"event_type": "call.started",
"call_sid": "text",
"direction": "inbound",
"service_id": "123e4567-e89b-12d3-a456-426614174000",
"caller_id": "text"
}Subscribes to the workspace event channel and streams events as they occur:
call.started
New call begins
call.ended
Call completes
call.escalated
Operator escalation triggered
pipeline.sync_completed
Data source poll finished
pipeline.error
Pipeline error detected
review.submitted
Reserved legacy review event type; external-write proposal decisions are audit-logged and do not emit this event
alert
Alert threshold crossed
Protocol details:
Media type:
text/event-streamHeartbeat: Comment every 30s to keep connection alive
Reconnection: Send
Last-Event-IDheader on reconnect for replay of recent eventsBackpressure: Oldest events dropped when the event buffer is full
Falls back to error event if the event system is unavailable
Permissions: viewer+.
Dashboards
Workspace-scoped analytics dashboards that can be rendered in the Console or embedded in external applications.
Dashboards are managed through CRUD endpoints under /v1/{workspace_id}/dashboards/. Each dashboard has a slug (URL-friendly identifier), title, description, and chart configuration. The list endpoint returns all dashboards for the workspace. The get-by-slug endpoint returns the full dashboard definition including data queries and chart layout.
The @amigo-ai/dashboards package provides an embeddable React component (DashboardEmbed) that renders a dashboard given a workspace ID and slug. The component supports two authentication modes: explicit API token or backend-for-frontend proxy (where the hosting application handles authentication and the component omits the token).
Last updated
Was this helpful?

