Skip to main content
FormBharo exposes analytics endpoints for both individual agents and entire workspaces. You can filter by time window, call status, and source to compare performance across different cohorts — for example, comparing completion rates between a weekday campaign and a weekend one, or between two versions of an agent script.

Agent analytics

Fetch performance stats for a single agent with GET /api/v1/agents/{agent_id}/analytics.
curl

Workspace analytics

Fetch aggregated stats across all agents in a workspace with GET /api/v1/workspaces/{workspace_id}/analytics. This endpoint is restricted to workspace admins.
curl
The workspace response includes the same top-level stats as the agent endpoint, plus a per-agent breakdown — an array where each entry contains the agent’s ID, name, and its own copy of the stats object. Use the breakdown to spot which agents are underperforming without making a separate request for each one.

What the stats mean

integer
Total number of calls started. Includes calls that are still in progress, completed, screened out, or failed.
integer
Calls that reached either complete or screened_out status. Both outcomes mean the agent reached a defined ending — not that the caller answered every question.
integer
Calls ended early because the caller’s answer matched a value in end_call_values. These are counted inside completed.
number
The ratio completed / attempted, expressed as a decimal between 0 and 1. Returns null when attempted is zero.
object
Average call length in seconds, plus a 95% confidence interval and the sample size used to compute it.
object
Average time in seconds from the end of a caller’s spoken turn to the agent’s first acknowledgement word. Lower is better — high values suggest the agent is slow to process speech.
object
Average time in seconds from the agent’s acknowledgement to the start of its full reply. Together with avg_ack_latency_secs, this gives you a complete picture of perceived voice latency.
object
Cost breakdown for the calls in the sample.
completed includes screened_out calls. If you want the count of calls that went all the way through every question, subtract screened_out from completed.
All average fields return null when there are no usable calls in the requested window. The ci_95 field within each average is null when the sample contains fewer than two calls — a confidence interval cannot be computed from a single data point.