---
title: "Dashboard Pivot"
method: GET
path: "/core/dashboard/pivot"
tags: ["Dashboard"]
---

# Dashboard Pivot

`GET /core/dashboard/pivot`

## Request

- Base URL: `https://api.anyreach.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.anyreach.ai/core/dashboard/pivot`
- Auth: HTTP bearer

Per-group volume, share, resolution, containment and handle time.

One RPC call grouped by (dimension, status) answers all five columns. The
rates are computed HERE rather than in the browser for a reason that is not
tidiness: resolution and containment have different denominators —
containment divides by completed+transferred, not by everything — and a
client that reconstructs them from bucket counts will eventually pick the
obvious denominator and be quietly wrong.

## Query parameters

- `group_by` string: channel | direction | agent | label:<key>, where <key> is a single-valued label key; agents without it group as Unlabelled.
- `agent_id` string, nullable
- `created_after` string, date-time, nullable
- `created_before` string, date-time, nullable
- `period` string, nullable: Named window: today, mtd, qtd, ytd, or a count like 24h / 7d / 30d / 90d. Ignored when created_after is given. Defaults to 30 days.
- `channel` string, nullable
- `direction` string, nullable
- `timezone` string, nullable: IANA zone, e.g. America/New_York. Day buckets and named periods follow it. UTC if omitted.
- `exclude_duration` string, nullable: Leave out conversations by duration in seconds: comma-separated op:value rules, op lte or gte (e.g. lte:10,gte:3600). Never removes one without a duration, nor a transferred one unless keep_transferred is false.
- `exclude_turns` string, nullable: Leave out conversations by caller turns, as exclude_duration (e.g. lte:0). Never removes one without a turn count (email, text).
- `exclude_callers` string, nullable: Comma-separated caller numbers in international format to leave out; matches telephone conversations only.
- `keep_transferred` boolean: False applies exclude_duration and exclude_turns to transferred conversations too. By default a transferred call is always counted, however short.

## Headers

- `x-anyreach-org` string, nullable: Organization ID for user PATs (pat_ prefix tokens)

## Response `200`

Successful Response

- PivotRow[]
  - `key` string, required
  - `label` string, required
  - `conversations` integer, required
  - `share_percent` number, nullable
  - `resolved_percent` number, nullable
  - `containment_percent` number, nullable
  - `avg_duration_seconds` number, nullable

## Other responses

- `422`: Validation Error

---

[API](https://skmtc.dev/anyreach/apis/anyreach-api.md) - [All operations](https://skmtc.dev/anyreach/apis/anyreach-api/llms.txt) - [OpenAPI document](https://skmtc.dev/anyreach/apis/anyreach-api/revisions/2eddf40c8c93?raw)
