Skip to main content

Analytics

The analytics endpoints return computed insights so an agent does not have to list and aggregate records itself. They are read-only (any key works) and report money per currency — amounts are never converted across currencies, so figures are always accurate.

Spend summary

GET /api/v1/analytics/summary
Only active subscriptions contribute to byCurrency, byCategory, and upcomingRenewals. Totals are grouped by currency; do not sum across currencies.

Duplicate detection

GET /api/v1/analytics/duplicates Returns groups of non-cancelled subscriptions that share a normalized name (case- and whitespace-insensitive) — a strong signal of duplicate tracking or double billing.
This matches by name only; overlapping but differently named services are not detected.

Optimization candidates

GET /api/v1/analytics/optimizations Returns factual candidates with no invented discount rates:
  • monthlyToAnnual — active monthly subscriptions with their current annualized cost (yearlyAtCurrentRate = monthlyAmount × 12).
  • aboveAverageInCurrency — subscriptions whose monthly-equivalent cost exceeds twice the average for their currency.
Present these figures to the user and let them decide; the API reports current costs, not negotiated savings.