Skip to content

Read Speak AI voice agent engagement metrics

Workspace and per-agent call metrics: totals, completion rate, average duration, and an engagement funnel bucketed by how deep each conversation went.

Updated View as MarkdownAsk ClaudeOpen in ChatGPTllms.txt

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

GET/voice/analytics/funnel

Engagement 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.
Example request
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'
Response

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

GET/voice/analytics/overview

Analytics 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.
Example request
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'
Response

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

GET/voice/analytics/funnel/agent

Engagement 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.
Example request
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'
Response

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": []
}

Get an API key on the Speak AI developer page.

Navigation

Type to search…

↑↓ navigate↵ selectEsc close