---
title: "Agent Health"
method: GET
path: "/core/dashboard/agent-health"
tags: ["Dashboard"]
---

# Agent Health

`GET /core/dashboard/agent-health`

## 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/agent-health`
- Auth: HTTP bearer

Per-agent volume, completion, containment and AHT for the window.

A sibling of GET /core/agents rather than an `include=health` parameter on
it: the roster and its health have different cache lifetimes (the roster
changes when someone edits an agent, the health numbers change constantly),
and keeping them separate lets the client refetch one without the other.

## Query parameters

- `agent_ids` string, nullable: Comma-separated agent ids. Omit for every agent.
- `labels` string, nullable: JSON label filter, as on GET /core/agents: only agents whose labels match, e.g. {"industry": ["Telecom"]}.
- `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

- AgentHealthItem[]
  - `agent_id` string, required
  - `agent_name` string, nullable
  - `conversations` integer, required
  - `completed` integer, required
  - `transferred` integer, required
  - `engaged` integer, required
  - `completion_rate` number, nullable
  - `containment_rate` number, nullable
  - `aht_seconds` number, nullable
  - `last_conversation_at` string, date-time, nullable
  - `health_score` number, nullable
  - `health_score_formula` string
  - `health_status` string, required

## 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)
