> ## Documentation Index
> Fetch the complete documentation index at: https://docs.powerdialer.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Analytics summary

> Read the acting user's call counts and rates for a range of calendar days.

`GET /analytics/summary` returns the acting user's call counts for a range of calendar days. "Connected" and "conversation" use the same definitions as the PowerDialer dashboard, so the numbers match what the user sees in the app.

## Query parameters

| Parameter | Format | Default | Notes |
| - | - | - | - |
| `startDate` | `YYYY-MM-DD` | 6 days before `endDate` | Inclusive calendar day in `timezone`. |
| `endDate` | `YYYY-MM-DD` | today in `timezone` | Inclusive. Must not be before `startDate`. |
| `timezone` | IANA name, e.g. `America/New_York` | `UTC` | Days are counted in this zone. |
| `conversationThresholdSeconds` | integer 1–3600 | the user's saved setting (120 if none) | Minimum talk time for a call to count as a conversation. |

The range may cover at most 366 days. Impossible dates such as `2026-02-30` answer `400`.

## Example

```bash theme={null}
curl "$BASE/analytics/summary?startDate=2026-10-01&endDate=2026-10-07&timezone=America/New_York" "${AUTH[@]}"
```

```json Response · 200 OK theme={null}
{
  "userId": "user_2abc...",
  "range": {
    "startDate": "2026-10-01",
    "endDate": "2026-10-07",
    "timezone": "America/New_York",
    "from": "2026-10-01T04:00:00.000Z",
    "to": "2026-10-08T04:00:00.000Z"
  },
  "conversationThresholdSeconds": 120,
  "calls": {
    "total": 184,
    "outbound": 181,
    "inbound": 3,
    "connected": 41,
    "conversations": 12,
    "voicemails": 57,
    "noAnswer": 72,
    "busy": 4,
    "failed": 2,
    "canceled": 1
  },
  "rates": { "connectRate": 0.2228, "conversationRate": 0.0652 },
  "talkTimeSeconds": 5310,
  "byStatus": { "Accepted": 41, "Voicemail": 57, "No answer": 72, "Busy": 4, "Failed": 2, "Canceled": 1, "Completed": 7 },
  "dispositions": { "Positive": 9, "Negative": 14, "Callback": 6, "NotDisposed": 155 }
}
```

<Note>The numbers above are illustrative; the shape and field names are exact.</Note>

## Field reference

| Field | Meaning |
| - | - |
| `calls.total` | Every call record for the user in the range, all directions. |
| `calls.outbound` / `calls.inbound` | Split of `total` by direction. |
| `calls.connected` | Calls a person answered (dashboard definition: accepted with talk time, or provider talk time and not voicemail). |
| `calls.conversations` | Connected calls with talk time at or above the threshold. |
| `calls.voicemails`, `noAnswer`, `busy`, `failed`, `canceled` | Counts of those provider outcomes. |
| `rates.connectRate` / `conversationRate` | `connected / total` and `conversations / total`, 0 to 1, four decimals. |
| `talkTimeSeconds` | Sum of talk time across all calls. |
| `byStatus` | Raw count per provider status, including statuses not broken out above. |
| `dispositions` | Count per disposition the user set; `NotDisposed` for calls without one. |
| `range.from` / `range.to` | The exact instants queried, `to` exclusive, for reconciliation. |

<Tip>Pass the user's timezone so day boundaries match their reports in the app.</Tip>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.