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

# Team performance

> See what each teammate did in a period: leads assigned, messages sent, escalations resolved and overdue, and the median first reply after an escalation.

This report answers "how is my team doing?". It returns one row per teammate with what that person did in the period. For what is waiting right now, use [Inbox summary](/docs/en/api/inbox/get-inbox-summary).

## Choose the period

| Rule | Detail |
| - | - |
| Default | The last 30 days, ending now. |
| `date_from` | Start of the period, inclusive. Without it, the period starts 30 days before `date_to`. |
| `date_to` | End of the period, **exclusive**. To include all of September 30, send `2026-10-01`. |
| Format | `YYYY-MM-DD` is read as midnight UTC. An ISO 8601 date-time with an offset is also accepted. |
| Limit | At most 92 days. An empty, reversed, or longer period returns 400 `invalid_date_range`. |

`period` in the response echoes the exact bounds used, in UTC.

## What each number means

| Field | What it counts |
| - | - |
| `leads_assigned_now` | Leads assigned to the person right now. Not limited by the period. |
| `leads_assigned_in_range` | Distinct leads assigned to the person during the period. |
| `human_messages` | Messages the person sent to leads during the period, on any channel. Failed sends do not count. |
| `escalations_resolved` | Escalations resolved during the period. The person who resolved the case gets the credit, or the lead's owner when no resolver was recorded. |
| `escalations_overdue` | Escalations on the person's leads that passed the expected response time during the period. |
| `escalations_answered` | Escalations created during the period on the person's leads that got a reply from a person. |
| `median_first_reply_minutes` | Median minutes from an escalation to the first reply from a person. `null` when none was answered. |

Escalations and assigned leads use the lead's **current** owner. If a lead changed hands, its history moves with it.

## Who is listed

* Every active teammate, even with zeros.
* Former members, partners, and Nexor support staff only when they did something in the period.
* `unattributed` counts messages that no teammate can take credit for: `business_app_messages` were sent from the WhatsApp Business App through Coexistence, and `other_human_messages` were sent by a person who is not a current teammate.

## Filter by task

Add `workflow_id` to count only leads active in that task (`workflow` in the API), and the messages and escalations on those leads.

## Before you start

* MCP keys need `reports:read`. Full-access REST keys need nothing else.
* Errors return a stable code in `error`, such as `invalid_date_range` or `workflow_not_found`. Map the code to your own copy.
* An AI connected to the [Nexor MCP server](/docs/en/api/mcp-server) reads the same report with the `get_team_performance` tool.


## API Specification

The full API specification for this endpoint is available in the [documentation index](https://docs.getnexor.ai/llms.txt).
