Overview
Per-App analytics for the dashboard Overview: KPIs, funnel, failures, deliveries, devices, templates, heatmap, and MAU usage, bucketed in the App's timezone.
Delivered and failed counts per local day (App timezone, YYYY-MM-DD), zero-filled, plus the range totals.
Authorization
SessionAuth Path Parameters
App ID
Query Parameters
7d, 14d, 30d, 90d, or custom (default 14d)
Custom range start, YYYY-MM-DD (required when range=custom)
Custom range end (inclusive), YYYY-MM-DD (required when range=custom; from <= to, at most 366 days)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/apps/string/overview/deliveries"{ "delivered": 0, "failed": 0, "range": "string", "series": [ { "date": "string", "delivered": 0, "failed": 0 } ]}Active devices (subscribed, not deleted, seen in the last 30 days; not range-scoped) split by platform, country, app version, permission (granted/denied/provisional/not_determined) and OS major version. Country/version/OS keep the top 5 plus "other" (which also holds unknown values; its OS platform is null). below_min_version counts devices on an app version below the App's min_rich_push_version (0 when unset; unknown versions are not counted).
Authorization
SessionAuth Path Parameters
App ID
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/apps/string/overview/devices"{ "active": 0, "below_min_version": 0, "by_app_version": [ { "count": 0, "key": "string" } ], "by_country": [ { "count": 0, "key": "string" } ], "by_os": [ { "count": 0, "key": "string", "platform": "android" } ], "by_permission": [ { "count": 0, "key": "string" } ], "min_rich_push_version": "string", "platform": { "android": 0, "ios": 0 }}Failed deliveries in the range (total) and the top 6 reason codes parsed from last_error: the APNs reason, the FCM errorCode, worker codes (provider_not_configured, app_disabled, device deleted) as-is, or "unknown".
Authorization
SessionAuth Path Parameters
App ID
Query Parameters
7d, 14d, 30d, 90d, or custom (default 14d)
Custom range start, YYYY-MM-DD (required when range=custom)
Custom range end (inclusive), YYYY-MM-DD (required when range=custom; from <= to, at most 366 days)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/apps/string/overview/failures"{ "range": "string", "reasons": [ { "code": "string", "count": 0, "provider": "fcm" } ], "total": 0}Sent → delivered → opened → clicked counts for the range, overall and per device platform. Opened counts a delivered delivery with an opened or clicked event.
Authorization
SessionAuth Path Parameters
App ID
Query Parameters
7d, 14d, 30d, 90d, or custom (default 14d)
Custom range start, YYYY-MM-DD (required when range=custom)
Custom range end (inclusive), YYYY-MM-DD (required when range=custom; from <= to, at most 366 days)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/apps/string/overview/funnel"{ "funnel": { "all": { "clicked": 0, "delivered": 0, "opened": 0, "sent": 0 }, "android": { "clicked": 0, "delivered": 0, "opened": 0, "sent": 0 }, "ios": { "clicked": 0, "delivered": 0, "opened": 0, "sent": 0 } }, "range": "string"}168 weekday×hour cells (weekday 0 = Monday, hour 0–23, App timezone), zero-filled. sent = delivered deliveries dispatched in that cell; opened = those with an opened or clicked event.
Authorization
SessionAuth Path Parameters
App ID
Query Parameters
7d, 14d, 30d, 90d, or custom (default 14d)
Custom range start, YYYY-MM-DD (required when range=custom)
Custom range end (inclusive), YYYY-MM-DD (required when range=custom; from <= to, at most 366 days)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/apps/string/overview/heatmap"{ "cells": [ { "hour": 0, "opened": 0, "sent": 0, "weekday": 0 } ], "range": "string", "timezone": "string"}Sent count, delivery rate (delivered/sent), open rate (opened/delivered) and CTR (clicked/delivered) for the range, each with the previous equal-length window, a delta (% for sent, null when prev is 0; percentage points for rates, null when the previous denominator is 0) and a per-day series in the App's timezone. Rates are 0–100 with one decimal.
Authorization
SessionAuth Path Parameters
App ID
Query Parameters
7d, 14d, 30d, 90d, or custom (default 14d)
Custom range start, YYYY-MM-DD (required when range=custom)
Custom range end (inclusive), YYYY-MM-DD (required when range=custom; from <= to, at most 366 days)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/apps/string/overview/kpis"{ "kpis": { "ctr": { "delta": 0, "prev": 0, "series": [ 0 ], "value": 0 }, "delivery_rate": { "delta": 0, "prev": 0, "series": [ 0 ], "value": 0 }, "open_rate": { "delta": 0, "prev": 0, "series": [ 0 ], "value": 0 }, "sent": { "delta": 0, "prev": 0, "series": [ 0 ], "value": 0 } }, "range": "string"}Top 5 templates by CTR (clicked/delivered) among those with at least 100 deliveries in the range, with open rate and the previous window's CTR (null when it had no deliveries). has_more is true when more templates qualify. Ad-hoc notifications are excluded.
Authorization
SessionAuth Path Parameters
App ID
Query Parameters
7d, 14d, 30d, 90d, or custom (default 14d)
Custom range start, YYYY-MM-DD (required when range=custom)
Custom range end (inclusive), YYYY-MM-DD (required when range=custom; from <= to, at most 366 days)
Response Body
application/json
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/apps/string/overview/templates"{ "has_more": true, "range": "string", "templates": [ { "ctr": 0, "delivered": 0, "name": "string", "open_rate": 0, "prev_ctr": 0, "template_id": "string" } ]}The App's rolling 30-day MAU against its Company plan's MAU limit, with the billing cycle (from renewal date and billing interval) and a linear end-of-cycle projection (mau × cycle_days / elapsed_days). plan_is_top_tier is true when the plan has the highest price in the catalog. 404 billing_unavailable on self-hosted deployments; license-server failures surface like the billing endpoints.
Authorization
SessionAuth Path Parameters
App ID
Response Body
application/json
application/json
application/json
application/json
application/json
curl -X GET "https://example.com/v1/apps/string/overview/usage"{ "cycle_days": 0, "limit": 0, "mau": 0, "plan": "string", "plan_is_top_tier": true, "projected_mau": 0, "renews_at": "string", "thresholds": [ 0 ]}