Program performance summary
GET /analytics/summary| Scope | analytics:read |
| Customer session token | Not accepted: call from your server with an API key |
| Rate limit class | read (limits) |
| Idempotency key | Not used |
| MCP tool | charm_get_analytics_summary |
The dashboard’s aggregations in one response: members, points, attributed revenue, rewards, tier distribution, plus monthly revenue and enrollment series for trend questions. Defaults to the last 30 days; period_days=0 means all time, and an inclusive from/to date range (YYYY-MM-DD) wins over the preset. points.outstanding_liability is null — never 0 — when the shop has no reward with a fixed cash value, because gifts and percentage discounts cost whatever the cart costs and a point cannot be priced; points.outstanding_liability_unit is then points, and the real exposure is points.outstanding_points.
Parameters
Section titled “Parameters”| Name | In | Type | Description |
|---|---|---|---|
period_days (optional) | query | integer | Window length in days, 0–365. 0 = all time. Default 30. |
from (optional) | query | string | Window start (YYYY-MM-DD, inclusive). Requires to. |
to (optional) | query | string | Window end (YYYY-MM-DD, inclusive). Requires from. |
Response 200
Section titled “Response 200”Returns AnalyticsSummary.
| Field | Type | Description |
|---|---|---|
window | object | |
currency_code | string or null | (nullable) |
members | object | |
points | object | |
revenue | object | |
rewards | object | |
tier_distribution | object | |
revenue_series_granularity | string: day, month | |
revenue_series | array of object | |
enrollment_series | object |
{ "window": { "start": "2026-09-01T00:00:00.000Z", "end": "2026-10-01T00:00:00.000Z", "days": 1 }, "currency_code": "EUR", "members": { "total": 1, "active_in_period": 1, "active_rate_percent": 1, "new_in_period": 1, "pending": 1 }, "points": { "earned_in_period": 120, "redeemed_in_period": 1, "redemption_rate_percent": 1, "outstanding_points": 120, "outstanding_liability": 1, "outstanding_liability_unit": "money" }, "revenue": { "attributed_revenue": 1, "attributed_order_count": 1, "average_order_value": 1, "discounts_given": 1, "perk_savings": 1, "cashback_issued": 1, "roi_ratio": 1 }, "rewards": { "redeemed_in_period": 1 }, "tier_distribution": {}, "revenue_series_granularity": "day", "revenue_series": [ { "month": "2026-09", "attributed_revenue": 1, "discounts_given": 1 } ], "enrollment_series": { "granularity": "month", "buckets": [ { "period": "lifetime", "enrollments": 1 } ] }}Example
Section titled “Example”curl -X GET "https://charm.appfleece.app/api/v1/analytics/summary" \ -H "Authorization: Bearer chrm_live_..."Errors
Section titled “Errors”unauthorized · invalid_token · insufficient_scope · access_required · validation_error · rate_limited
Every error body carries code, message, request_id and a doc_url pointing at the matching entry in the error catalog.