---
title: "Get team analytics"
method: GET
path: "/v1/analytics/team"
tags: ["Analytics"]
---

# Get team analytics

`GET /v1/analytics/team`

## Request

- Base URL: `https://api.slashy.com`
- URL: `https://api.slashy.com/v1/analytics/team`
- Auth: HTTP bearer

Response times, daily message volume and a per-inbox leaderboard: the numbers on the Team Analytics page. Covers the whole team, the same view the key's creator sees, unless the key is limited to certain members; then only their inboxes (`inboxes.team_overall` and ranks still cover the full team). Durations are in seconds.

**Scope:** `analytics.read`. **Rate limit class:** `analytics` (30/minute per key).

## Query parameters

- `days` integer
- `end_date` string, date
- `timezone` string

## Response `200`

OK

- TeamAnalytics: Durations are in seconds; a `null` duration means no qualifying replies.
  - `report` 'all', required
  - `team` object, required
    - `id` string, uuid, required
    - `name` string, required
  - `scope` object, required
    - `inbox_emails` string[], required
    - `all_team_inboxes` boolean, required
  - `timezone` string, required
  - `calculation` 'calendar', required
  - `metric_definitions` object, required: Plain-English definition of each metric.
  - `response_times` TeamResponseTimes, required
    - `team_id` string, uuid, required
    - `period` AnalyticsPeriod, required
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `days` integer, required
    - `previous_period` AnalyticsPeriod, required
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `days` integer, required
    - `calculation` 'calendar' | 'business_hours', required
    - `timezone` string, nullable, required
    - `reply_time` ResponseTimeMetric, required
      - `average_seconds` number, nullable, required
      - `median_seconds` number, nullable, required
      - `response_count` integer, required
      - `previous_average_seconds` number, nullable, required
      - `previous_median_seconds` number, nullable, required
      - `previous_response_count` integer, required
      - `change_seconds` number, nullable, required
      - `distribution` ResponseTimeBucket[], required
        - `key` 'under_5m' | '5m_to_30m' | '30m_to_2h' | '2h_to_4h' | 'over_4h', required
        - `label` string, required
        - `response_count` integer, required
        - `percentage` number, required
        - `previous_percentage` number, required
        - `change_percentage_points` number, nullable, required
    - `first_reply_time` ResponseTimeMetric, required
      - `average_seconds` number, nullable, required
      - `median_seconds` number, nullable, required
      - `response_count` integer, required
      - `previous_average_seconds` number, nullable, required
      - `previous_median_seconds` number, nullable, required
      - `previous_response_count` integer, required
      - `change_seconds` number, nullable, required
      - `distribution` ResponseTimeBucket[], required
        - `key` 'under_5m' | '5m_to_30m' | '30m_to_2h' | '2h_to_4h' | 'over_4h', required
        - `label` string, required
        - `response_count` integer, required
        - `percentage` number, required
        - `previous_percentage` number, required
        - `change_percentage_points` number, nullable, required
    - `unclassified_response_count` integer, required
    - `classification_coverage` number, nullable, required
    - `computed_at` string, date-time, required
  - `message_volume` TeamMessageVolume, required
    - `team_id` string, uuid, required
    - `timezone` string, required
    - `current` MessageVolumeSeries, required
      - `period` MessageVolumePeriod, required
        - `start` string, date, required
        - `end` string, date, required
        - `days` integer, required
      - `buckets` MessageVolumeBucket[], required
        - `date` string, date, required
        - `received` integer, required
        - `sent` integer, required
      - `received_total` integer, required
      - `sent_total` integer, required
    - `previous` MessageVolumeSeries, required
      - `period` MessageVolumePeriod, required
        - `start` string, date, required
        - `end` string, date, required
        - `days` integer, required
      - `buckets` MessageVolumeBucket[], required
        - `date` string, date, required
        - `received` integer, required
        - `sent` integer, required
      - `received_total` integer, required
      - `sent_total` integer, required
    - `computed_at` string, date-time, required
  - `inboxes` TeamAnalyticsInboxes, required
    - `period` AnalyticsPeriod, required
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `days` integer, required
    - `previous_period` AnalyticsPeriod, required
      - `start` string, date-time, required
      - `end` string, date-time, required
      - `days` integer, required
    - `computed_at` string, date-time, required
    - `team_overall` MemberMetrics, required
      - `first_reply_time` MemberResponseStat, required
        - `median_seconds` number, nullable, required
        - `p90_seconds` number, nullable, required
        - `response_count` integer, required
        - `change_seconds` number, nullable, required: Median change vs the previous equal period
      - `reply_time` MemberResponseStat, required
        - `median_seconds` number, nullable, required
        - `p90_seconds` number, nullable, required
        - `response_count` integer, required
        - `change_seconds` number, nullable, required: Median change vs the previous equal period
      - `sent` integer, required
    - `rank_scope` 'full_team', required
    - `rows` TeamAnalyticsInboxRow[], required
      - `first_reply_time` MemberResponseStat, required
        - `median_seconds` number, nullable, required
        - `p90_seconds` number, nullable, required
        - `response_count` integer, required
        - `change_seconds` number, nullable, required: Median change vs the previous equal period
      - `reply_time` MemberResponseStat, required
        - `median_seconds` number, nullable, required
        - `p90_seconds` number, nullable, required
        - `response_count` integer, required
        - `change_seconds` number, nullable, required: Median change vs the previous equal period
      - `sent` integer, required
      - `inbox_id` string, uuid, required
      - `user_id` string, uuid, required
      - `inbox_email` string, required
      - `name` string, nullable, required
      - `first_reply_rank` integer, nullable, required: Rank by median first reply time across the full team; `null` when the inbox sent no first reply.

## Other responses

- `400`: Bad request. `error` is one of: `invalid_arguments`.
- `401`: Missing, malformed, unknown, revoked or expired API key. `error` is one of: `invalid_api_key`, `api_key_revoked`, `api_key_expired`.
- `403`: The key is valid but may not make this call. `error` is one of: `browser_not_allowed`, `ip_not_allowed`, `not_enterprise`, `key_owner_inactive`, `insufficient_scope`, `no_readable_inboxes`, `forbidden`.
- `422`: A parameter is missing or invalid. The body lists each problem (not the `Error` shape).
- `429`: Too many requests. Wait `Retry-After` seconds, then retry. `error` is one of: `too_many_auth_failures`, `rate_limited`, `too_many_concurrent_requests`.
- `503`: Temporarily unavailable. Retry the same request later. `error` is one of: `invalid_inbox_scope`.

---

[API](https://skmtc.dev/slashy/apis/slashy-enterprise-api.md) - [All operations](https://skmtc.dev/slashy/apis/slashy-enterprise-api/llms.txt) - [OpenAPI document](https://skmtc.dev/slashy/apis/slashy-enterprise-api/revisions/49841c75ad9f?raw)
