Ekha Docs
Getting started
- Login with Discord
- Add website (domain + timezone)
- Copy tracker snippet
- Paste before
</head> - Visit site, check dashboard
Installation
<script defer src="http://localhost:10000/tracker.js" data-site="ek_YOUR_SITE_ID"></script>
Tracking API
POST http://localhost:10000/api/v1/event
Content-Type: application/json
{"site":"ek_...","path":"/news/foo","referrer":"https://facebook.com/"}
Stats API
Authorization: Bearer ek_live_...
GET /api/v1/sites/{site}/summary
GET /api/v1/sites/{site}/timeseries?days=30
GET /api/v1/sites/{site}/pages
GET /api/v1/sites/{site}/referrers
GET /api/v1/sites/{site}/devices
GET /api/v1/sites/{site}/countries
GET /api/v1/sites/{site}/realtime
Errors
Errors use {"error":{"code":"...","message":"...","request_id":"..."}}. Codes: bad_request, unauthorized, forbidden, not_found, validation_failed, rate_limited, internal_error, service_unavailable.
Privacy
No analytics cookies. Short-lived pseudonymous visitor buckets only. Raw events deleted within 72h. See /privacy.
FAQ
Does Ekha slow my site? No — the tracker is deferred, uses sendBeacon, and fails silently.
Multiple sites? Yes, first-class.
How fresh are stats? The tracker records instantly; read APIs are cached very briefly (about a minute for totals, seconds for realtime).