---
title: "Get Chat Analytics"
method: GET
path: "/analytics/chats"
tags: ["Analytics"]
---

# Get Chat Analytics

`GET /analytics/chats`

## Request

- Base URL: `https://api.openintake.ai` (the document declares no server; this is the origin it was published from)
- URL: `https://api.openintake.ai/analytics/chats`
- Auth: none declared

## Query parameters

- `period` 'today' | '7d' | '30d' | '90d' | 'custom'
- `start_date` string, date, nullable: First local day (period=custom only)
- `end_date` string, date, nullable: Last local day, inclusive (period=custom only)
- `bucket` 'day' | 'week' | 'month', nullable: Override the default bucket size
- `customer_id` string, uuid, nullable: Developers only: the customer to view

## Response `200`

Successful Response

- ChatAnalyticsResponse
  - `period` string, required
  - `bucket` string, required
  - `timezone` string, required
  - `start_date` string, date, required
  - `end_date` string, date, required: Inclusive last local day of the window
  - `available` boolean, required: Whether the firm had any chats in the window or the prior one
  - `business_hours_configured` boolean, required: False when after-hours uses the default Mon-Fri 9-5
  - `summary` ChatAnalyticsSummary, required
    - `chats` AnalyticsKpi, required: A headline number for the window plus its change vs the prior window. For counts ``delta`` is the raw difference; for rates (``value`` is a percentage) it is the change in percentage points. Rates are null when the denominator is 0, so the UI can show "—" instead of a fake 0%.
      - `value` number, nullable
      - `prior` number, nullable
      - `delta` number, nullable
    - `leads` AnalyticsKpi, required: A headline number for the window plus its change vs the prior window. For counts ``delta`` is the raw difference; for rates (``value`` is a percentage) it is the change in percentage points. Rates are null when the denominator is 0, so the UI can show "—" instead of a fake 0%.
      - `value` number, nullable
      - `prior` number, nullable
      - `delta` number, nullable
    - `lead_rate` AnalyticsKpi, required: A headline number for the window plus its change vs the prior window. For counts ``delta`` is the raw difference; for rates (``value`` is a percentage) it is the change in percentage points. Rates are null when the denominator is 0, so the UI can show "—" instead of a fake 0%.
      - `value` number, nullable
      - `prior` number, nullable
      - `delta` number, nullable
    - `contact_rate` AnalyticsKpi, required: A headline number for the window plus its change vs the prior window. For counts ``delta`` is the raw difference; for rates (``value`` is a percentage) it is the change in percentage points. Rates are null when the denominator is 0, so the UI can show "—" instead of a fake 0%.
      - `value` number, nullable
      - `prior` number, nullable
      - `delta` number, nullable
    - `after_hours` AnalyticsKpi, required: A headline number for the window plus its change vs the prior window. For counts ``delta`` is the raw difference; for rates (``value`` is a percentage) it is the change in percentage points. Rates are null when the denominator is 0, so the UI can show "—" instead of a fake 0%.
      - `value` number, nullable
      - `prior` number, nullable
      - `delta` number, nullable
    - `after_hours_rate` AnalyticsKpi, required: A headline number for the window plus its change vs the prior window. For counts ``delta`` is the raw difference; for rates (``value`` is a percentage) it is the change in percentage points. Rates are null when the denominator is 0, so the UI can show "—" instead of a fake 0%.
      - `value` number, nullable
      - `prior` number, nullable
      - `delta` number, nullable
  - `timeseries` ChatAnalyticsBucket[], required
    - `bucket_start` string, date-time, required: Bucket start as a naive datetime in the customer's timezone
    - `chats` integer, required
    - `leads` integer, required
  - `heatmap` AnalyticsHeatCell[], required
    - `weekday` integer, required: ISO weekday, 1=Monday .. 7=Sunday, in the customer's timezone
    - `hour` integer, required: Hour of day 0-23 in the customer's timezone
    - `count` integer, required
  - `top_pages` AnalyticsCount[], required: Site pages chats started on, by path ('/' is the home page)
    - `key` string, required
    - `count` integer, required

## Other responses

- `422`: Validation Error

## Changes

- **2026-10-09** `d61063451a04`: 1 breaking
  - removed the required property `recent_leads` from the response with the `200` status
- **2026-10-08** `376869b909f7`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/openintake/apis/openintake-api/changes/analytics/chats/get.md)

---

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