Insights overview

The Reports › Insights overview: wallet balance, cost per message compared with the previous period of equal length, a daily series (spend, contacts touched, spend per contact, tool uses) and a bookings heatmap.

GET https://api.centerfy.ai/webhooks/inbound/analytics/overview

Headers

HeaderRequiredValueDescription
x-api-keyYesyour sub-account API key (cfy_…)Authenticates the request; or use Authorization: Bearer <key>.

Query parameters

NameTypeRequiredDefaultDescription
fromstring (YYYY-MM-DD)No—First day of the range (inclusive, local date). Defaults to 29 days before to (a 30-day range).
tostring (YYYY-MM-DD)No—Last day of the range (inclusive, local date). Defaults to today. The range can span at most 366 days.
timezonestringNo—IANA time zone for day boundaries, e.g. America/New_York (max 64 characters). Defaults to your company time zone, else UTC.
bookings_bystringNocreatedBucket the bookings heatmap by when appointments were created or when they are scheduled for. One of created, scheduled.

Example

curl -X GET "https://api.centerfy.ai/webhooks/inbound/analytics/overview?bookings_by=created" \
  -H "x-api-key: $CENTERFY_API_KEY"
import { CenterfyClient } from "@centerfy/sdk";

const centerfy = new CenterfyClient({ apiKey: process.env.CENTERFY_API_KEY! });

const result = await centerfy.analytics.overview({
  "bookings_by": "created"
});
console.log(result);
centerfy analytics overview '{"bookings_by":"created"}'

MCP tool: centerfy_analytics_overview (see MCP server)

Response

{
  "status": "success",
  "tz": "America/New_York",
  "from": "2026-10-04",
  "to": "2026-10-05",
  "bookings_by": "created",
  "capped": false,
  "wallet": {
    "balance": 42.5,
    "yesterday_end": 45.1
  },
  "cost_per_message": {
    "spend": 1.2,
    "messages": 60,
    "value": 0.02,
    "prev_spend": 0.9,
    "prev_messages": 50,
    "prev_value": 0.018
  },
  "daily": [
    {
      "day": "2026-10-04",
      "spend_total": 3.1,
      "contacts_touched": 12,
      "spend_per_contact": 0.2583,
      "tool_uses": 8
    },
    {
      "day": "2026-10-05",
      "spend_total": 0,
      "contacts_touched": 0,
      "spend_per_contact": null,
      "tool_uses": 0
    }
  ],
  "tool_uses_total": 8,
  "bookings_total": 3,
  "heatmap": [
    {
      "dow": 1,
      "hour": 10,
      "count": 2
    },
    {
      "dow": 3,
      "hour": 15,
      "count": 1
    }
  ]
}

Errors

  • 400 — if from/to aren’t real YYYY-MM-DD dates, from is after to, the range is over 366 days, or the timezone is unknown.
  • 401 — if unauthenticated.

Notes

daily has one entry per day in the range. Money values are rounded to 4 decimal places; value, prev_value and spend_per_contact are null when there is nothing to divide by. wallet.yesterday_end is the balance at the end of yesterday (null if unknown). Message spend covers SMS, email, WhatsApp, Facebook and Instagram; messages counts agent-sent messages. heatmap lists only non-empty cells: dow is the ISO weekday (1 = Monday … 7 = Sunday) and hour is the local hour 0–23; cancelled appointments are counted. Days run from local midnight to midnight in tz. capped is true when a data source exceeded 20,000 rows — narrow the range for exact figures.

© 2026 Centerfy AI. All rights reserved.