API Reference
Snow exposes ingestion APIs for getting data into Snow, and a Stats API for reading it back out. Most sites only need the tracking snippet, which calls the browser endpoint for you. Reach for an API when you need to send events from a server, identify a visitor, connect crawler telemetry, or read your numbers from another tool.
| Endpoint | Auth | Use it for |
|---|---|---|
POST /api/flake | None (public) | The raw page-view / event endpoint the browser snippet uses. |
POST /api/v1/events | API key | Sending events from your server or backend. |
POST /api/identify | API key | Attaching an identity, and optionally a Stripe customer, to a visitor. |
POST /api/beacon/hits | Beacon key | Sending crawler hits from a supported server integration. |
GET /api/v1/stats/* | API key | Reading totals, a daily series, and breakdowns. |
Choose an endpoint
Base URL
All endpoints live on your Snow collector. Throughout these docs that's:
https://api.snowanalytics.appReplace it with your own collector URL.
Authentication
/api/flake is public because the browser calls it. Every other endpoint uses
a bearer token in the Authorization header:
Authorization: Bearer YOUR_KEYA single API key (format snw_live_…), created and managed in the dashboard
under API keys, works for every endpoint whose scope
it carries:
| Endpoint | Key |
|---|---|
POST /api/v1/events | snw_live_… (events:write) |
POST /api/identify | snw_live_… (identify:write; legacy ski_… keys also accepted) |
GET /api/v1/stats/* | snw_live_… (stats:read, off by default) |
Send JSON with Content-Type: application/json. Keep keys secret. Treat them like
passwords, and revoke or rotate any that leak.
Reading data: a key reads stats only if you tick Read stats when you create it. Keys made for events, identify or crawlers cannot read anything.
Rate limits
Each endpoint is rate-limited. See Rate limits & errors for the limits and the error format.