Skip to content

Stats API

Query summary, timeseries, breakdown and realtime analytics with a scoped API key.

Read the main analytics views with a key that has stats:read.

  1. Set the connection values. SITE_ID is the numeric ID returned by GET /sites.

    Terminal window
    export SUPERMETRY_URL="https://analytics.example.com"
    export SUPERMETRY_API_KEY="replace-with-your-key"
    export SITE_ID="1"
  2. Request headline metrics for the last 30 days.

    Terminal window
    curl --fail-with-body "$SUPERMETRY_URL/api/public/v1/stats/summary?site_id=$SITE_ID&period=30d&metrics=visitors,pageviews" \
    -H "Authorization: Bearer $SUPERMETRY_API_KEY"
  3. Request a daily series, a page breakdown and realtime activity.

    Terminal window
    curl --fail-with-body "$SUPERMETRY_URL/api/public/v1/stats/timeseries?site_id=$SITE_ID&period=7d&interval=day&metrics=visitors,pageviews" \
    -H "Authorization: Bearer $SUPERMETRY_API_KEY"
    curl --fail-with-body "$SUPERMETRY_URL/api/public/v1/stats/breakdown?site_id=$SITE_ID&period=30d&dimension=page&metrics=visitors,pageviews&limit=10" \
    -H "Authorization: Bearer $SUPERMETRY_API_KEY"
    curl --fail-with-body "$SUPERMETRY_URL/api/public/v1/realtime?site_id=$SITE_ID" \
    -H "Authorization: Bearer $SUPERMETRY_API_KEY"
  4. Parse stats responses by columns, rows, totals and meta. A breakdown response follows this verified shape:

    {
    "columns": ["page", "visitors", "pageviews"],
    "rows": [{"page": "/docs", "visitors": 42, "pageviews": 77}],
    "totals": {"visitors": 42, "pageviews": 77},
    "meta": {"sources_used": ["rollup"], "cached": false, "imported_included": false}
    }

    Realtime returns active_visitors, visitors_last_30m, 30 visitors_per_minute entries, breakdown arrays and recent_activity.

What you should see: each request returns 200; stats return rows and totals, while realtime returns current visitor counts and activity.