The Speak AI API exposes 3 analytics endpoints under the base URL https://api.speakai.co/v1. Every request needs the x-speakai-key and x-access-token headers described in Authentication.
What can you do with the analytics endpoints?
Speak AI groups these 3 endpoints under the analytics resource. Each entry below links to the full reference for that endpoint further down this page.
Engagement Funnel Summaries
/voice/analytics/funnelEngagement Funnel Summaries
The same bounce/brief/engaged/deep breakdown as Engagement Funnel For Agent, but as one summary row per agent across your whole workspace, sorted by deepRate descending. The response payload is a bare array directly on data – not an object, and not nested under a named key.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
since |
query | string | No | ISO date. Defaults to 30 days ago. |
curl -X GET 'https://api.speakai.co/v1/voice/analytics/funnel' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 OK
Response body, application/json.
| Field | Type | Description |
|---|---|---|
status |
string | One of: success . |
data |
object[] |
data – 7 more fields
| Field | Type |
|---|---|
agentId |
string |
agentName |
string |
totalConversations |
integer |
bounceRate |
integer |
briefRate |
integer |
engagedRate |
integer |
deepRate |
integer |
Example response, application/json.
{
"status": "success",
"data": [
{
"agentId": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
"agentName": "Support Agent",
"totalConversations": 80,
"bounceRate": 15,
"briefRate": 30,
"engagedRate": 40,
"deepRate": 15
}
]
}400 Invalid since date
Response body, application/json.
| Field | Type | Description |
|---|---|---|
status |
string | One of: failed . |
message |
string |
Analytics Overview
/voice/analytics/overviewAnalytics Overview
Workspace-level call metrics: totals, week-over-week counts, completion rate, average duration, a 14-day daily time series, and average post-call feedback rating. Optionally scope to one agentId. Unlike most endpoints in this API, the response payload sits directly on data, not nested under a named key.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
agentId |
query | string | No | Scope to one agent. Omit for the whole workspace. |
curl -X GET 'https://api.speakai.co/v1/voice/analytics/overview' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 OK
Response body, application/json.
| Field | Type | Description |
|---|---|---|
status |
string | One of: success . |
data |
object |
data – 8 more fields
| Field | Type | Description |
|---|---|---|
totalConversations |
integer | |
thisWeekCount |
integer | |
lastWeekCount |
integer | |
completionRate |
number | 0-1. Share of calls that reached status completed. |
avgDurationSeconds |
number | |
dailyCounts |
object[] | Last 14 days, oldest first, zero-filled for days with no calls. |
dailyCounts[].date |
string | |
dailyCounts[].count |
integer | |
averageRating |
number | Average post-call feedback rating (1-5). 0 if no feedback submitted yet. |
ratingCount |
integer |
Example response, application/json.
{
"status": "success",
"data": {
"totalConversations": 214,
"thisWeekCount": 31,
"lastWeekCount": 27,
"completionRate": 0.92,
"avgDurationSeconds": 138.4,
"dailyCounts": [
{
"date": "2026-07-19",
"count": 4
},
{
"date": "2026-07-20",
"count": 6
}
],
"averageRating": 4.3,
"ratingCount": 58
}
}Engagement Funnel For Agent
/voice/analytics/funnel/agentEngagement Funnel For Agent
Buckets one agent’s conversations by transcript turn count (bounce/brief/engaged/deep), each with average duration and sentiment split. Defaults to the last 30 days if since is omitted; since older than 365 days is floored to 365 days ago. The response payload sits directly on data, not nested under a named key.
Parameters
| Parameter | In | Type | Required | Description |
|---|---|---|---|---|
agentId |
query | string | Yes | Required. |
since |
query | string | No | ISO date. Defaults to 30 days ago. |
curl -X GET 'https://api.speakai.co/v1/voice/analytics/funnel/agent' \
-H 'x-speakai-key: sk_test_speak_0000000000000000' \
-H 'x-access-token: eyJhbGciOiJIUzI1NiJ9.test-access-token.0000000000'200 OK
Response body, application/json.
| Field | Type | Description |
|---|---|---|
status |
string | One of: success . |
data |
object | |
data.buckets |
object[] | Always 4 buckets, in order: Bounce (0-1 turns), Brief (2-5), Engaged (6-15), Deep (16+). |
data.totalConversations |
integer | |
data.since |
string (date-time) |
data.buckets – 7 more fields
| Field | Type |
|---|---|
label |
string |
minMessages |
integer |
maxMessages |
integer |
count |
integer |
percentage |
integer |
avgDurationSeconds |
number |
sentimentBreakdown |
object |
sentimentBreakdown.positive |
integer |
sentimentBreakdown.neutral |
integer |
sentimentBreakdown.negative |
integer |
sentimentBreakdown.unanalyzed |
integer |
Example response, application/json.
{
"status": "success",
"data": {
"buckets": [
{
"label": "Bounce (0-1)",
"minMessages": 0,
"maxMessages": 1,
"count": 12,
"percentage": 15,
"avgDurationSeconds": 8.2,
"sentimentBreakdown": {
"positive": 2,
"neutral": 8,
"negative": 2,
"unanalyzed": 0
}
}
],
"totalConversations": 80,
"since": "2026-07-01T00:00:00.000Z"
}
}400 Invalid since date
Response body, application/json.
| Field | Type | Description |
|---|---|---|
status |
string | One of: failed . |
message |
string |
404 Agent not found
Response body, application/json.
| Field | Type | Description |
|---|---|---|
status |
string | One of: failed . |
requestId |
string | |
code |
integer | |
message |
string | |
hints |
string[] |
Example response, application/json.
{
"status": "failed",
"code": 404,
"message": "Agent not found",
"hints": []
}Related pages
- API reference for the base URL, authentication, and the error format.
- Authenticate with the Speak AI API using access tokens
- Upload audio and video to Speak AI and read insights
- Create and update live transcription sessions
- Analyze text notes with the Speak AI text endpoints
Get an API key on the Speak AI developer page.