Skip to content

Numbers — API endpoints

  • https://numbers.streamercatalyst.com

The StreamerCatalyst dashboard calls the session endpoints same-origin through https://streamercatalyst.com/m/numbers/* (for example /m/numbers/api/channels/:id/overview reaches /api/channels/:id/overview here). That proxy forwards the session cookie over a Cloudflare service binding and never forwards /internal/*.

Path Method Auth Description
/privacy/opt-out GET Public Viewer analytics opt-out page; its start, callback, confirm and revoke steps use an identity-only Twitch sign-in. Rate-limited per IP.
/api/channels/:id/overview GET Session cookie KPI overview totals (today / stream / 7d / 30d) per metric.
/api/channels/:id/metrics GET Session cookie Time-series metric buckets (?metric=&range=).
/api/channels/:id/live-totals GET Session cookie Current subscriber and follower totals, read live from Twitch.
/api/channels/:id/sessions GET Session cookie Recent stream sessions, incl. avg/peak viewers (?limit=).
/api/channels/:id/sessions/:sessionId GET Session cookie Session detail — viewer-count snapshot series + avg/peak summary.
/api/channels/:id/sessions/:sessionId/people GET Session cookie Who is behind a session’s follows, subs, resubs, gifted subs and bits.
/api/channels/:id/subscribers GET Session cookie Live subscriber list (paginated, enriched with resub months).
/api/channels/:id/subscribers/tier-metrics GET Session cookie Tier distribution, type breakdown, and tier-progression insights (?range=).
/api/channels/:id/subscribers/retention GET Session cookie Tenure, retention, loyalty cohorts, and anniversaries (?range=).
/api/channels/:id/acquisition GET Session cookie Acquisition-source breakdown (?range=); /recent lists the latest rows (?limit=).
/api/channels/:id/raids/* GET Session cookie Raid analytics — overview, incoming, outgoing, reciprocity, conversion, sources, network, insights (?range=).
/api/channels/:id/journey/* GET Session cookie Cross-source engagement funnel, per-source comparison, and behavior archetypes (?range=).
/api/channels/:id/patterns/* GET Session cookie Temporal, contextual, and event-driven conversion patterns (?range=).
/api/channels/:id/behavior/* GET Session cookie Multi-session attendance and content-preference analytics (?range=).
/api/channels/:id/hype-train-records GET Session cookie Hype-train all-time-high records (own + shared).
/api/channels/:id/hype-trains GET Session cookie Completed Hype Trains, newest first, grouped by stream (?limit=).
/api/channels/:id/events/recent GET Session cookie Unified recent-events feed (?limit=&types=).
/api/channels/:id/goals GET/PUT/DELETE Session cookie Merged goal config; PUT/DELETE …/goals/:metric sets or clears one metric’s override (incl. plus_points).
/api/channels/:id/plus GET Session cookie Plus Program estimate; PUT …/plus/config sets the adjustment offset (broadcaster or Lead Mod).
/api/channels/:id/charity GET Session cookie Charity campaign and its total; POST …/charity/backfill imports past donations from Twitch.
/api/channels/:id/streaks GET/PUT/DELETE/PATCH Session cookie Goal-streak summary and per-metric streak-goal management.
/api/channels/:id/ask GET/POST Session cookie Ask about your data: GET reports eligibility and remaining quota, POST answers one question as a server-sent event stream.
/api/channels/:id/audience/:userId DELETE Session cookie Remove one viewer’s audience-analytics rows for this channel.
/api/channels/:id/eventsub GET Session cookie This channel’s live EventSub subscriptions, read from Twitch (the platform creates and deletes them).
/api/channels/:id/widget/token GET Session cookie The Numbers widget token; POST …/widget/token/rotate replaces it.
/api/widget/:channelId/data GET Widget token Numbers widget data (?token=&type=&metric=&window=).
/internal/eventsub POST Service binding (internal) EventSub fan-out receiver (internal, from eventsub-router).
/internal/billing/downgrade POST Service binding (internal) Tier-downgrade handler (internal).
  • Session cookie endpoints require an active StreamerCatalyst session (set at login via the platform Worker). A channel-scoped route (/api/channels/:id/…) answers only for the session’s own channel, and a read-only admin masquerade may read but not change anything.
  • Widget token endpoints are what OBS browser sources and overlays call. The channel’s widget token, passed as ?token=, is the credential: the channel comes from the token, and a token that does not match the channel in the URL is refused. Treat a URL that carries it like a password; rotating the token from the dashboard invalidates every URL with the old one.
  • Public endpoints require no authentication.
  • Service binding endpoints are for other StreamerCatalyst Workers, called over Cloudflare service bindings with a shared internal token. They are not a public API.