Skip to Content
RCS Panel APIDashboard stats

Dashboard stats

Two endpoints power the RCS Panel dashboard — one returns aggregate KPIs, the other a per-day series for the chart at the top of the page.

GET /api/v1/rcs/stats GET /api/v1/rcs/stats/daily?from=YYYY-MM-DD&to=YYYY-MM-DD

KPIs

GET /api/v1/rcs/stats
{ "success": true, "stats": { "total_broadcasts": 12, "total_recipients": 184320, "total_sent": 175430, "total_delivered": 0, "total_read": 0, "total_failed": 8890, "broadcasts_running": 1, "broadcasts_completed": 9, "broadcasts_cancelled": 1, "broadcasts_failed": 1 }, "wallet": { "balance": 4250.50, "per_message_price": 0.95, "sends_remaining": 4474 }, "bot_name": "acme_promotions" }

total_delivered and total_read stay at zero in v1 — the delivery status webhook routing for RCS-panel customers is a follow-up sprint.

Daily series

GET /api/v1/rcs/stats/daily?from=2026-05-13&to=2026-05-27

from and to are both optional. Defaults to the last 14 days. Max window is 90 days — anything wider is clamped.

{ "success": true, "from": "2026-05-13", "to": "2026-05-27", "series": [ { "date": "2026-05-13", "sent": 0, "spend": 0.0 }, { "date": "2026-05-14", "sent": 2105, "spend": 1999.75 }, { "date": "2026-05-15", "sent": 0, "spend": 0.0 }, , { "date": "2026-05-27", "sent": 18324, "spend": 17407.80 } ] }

Every day in the window gets a row — even when you didn’t send anything — so the chart line stays continuous.

spend is the sum of rcs_wallet_billing_logs.cost for that day, which is what the wallet was actually debited (not what was invoiced).