Track metrics with plain HTTP. No SDK. No config files. Copy, paste, done.
Same /ez, /c, /v endpoints. Change one URL and your existing code works.
The easiest way to track metrics. Use your API key from Settings.
curl -X POST https://api.ezstat.dev/ez \
-d "ezkey=YOUR_API_KEY" \
-d "stat=api_requests" \
-d "count=1"ezkey — Your API key from Settings (required)stat — Stat name (required)count — Counter value (optional, default: 1)value — Gauge value (use instead of count)t — Unix timestamp (optional)Track counter metrics using an API key.
curl -X POST https://api.ezstat.dev/c \
-d "key=api_requests" \
-d "ukey=ss_live_xxxxxxxxxxxxxxxxxxxx" \
-d "count=1"key — Stat name (required)ukey — Your API key (required)count — Counter value (required)t — Unix timestamp (optional)Track gauge/value metrics using an API key.
curl -X POST https://api.ezstat.dev/v \
-d "key=response_time" \
-d "ukey=ss_live_xxxxxxxxxxxxxxxxxxxx" \
-d "value=142"key — Stat name (required)ukey — Your API key (required)value — Numeric value (required)t — Unix timestamp (optional)New API with Bearer token auth. Generate keys in Settings.
List all stats for the authenticated user.
curl -X GET https://api.ezstat.dev/api/v1/stats \
-H "Authorization: Bearer ss_live_xxxxxxxxxxxxxxxxxxxx"Increment a counter stat.
curl -X POST https://api.ezstat.dev/api/v1/stats/api_requests/count \
-H "Authorization: Bearer ss_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"count": 1}'Record a value for a gauge stat.
curl -X POST https://api.ezstat.dev/api/v1/stats/response_time/value \
-H "Authorization: Bearer ss_live_xxxxxxxxxxxxxxxxxxxx" \
-H "Content-Type: application/json" \
-d '{"value": 142}'Get stat details with data points. Supports ?from= and ?to= date filters.
curl -X GET "https://api.ezstat.dev/api/v1/stats/api_requests?from=2026-03-01&to=2026-03-07" \
-H "Authorization: Bearer ss_live_xxxxxxxxxxxxxxxxxxxx"Delete a stat and all its data points. Irreversible.
curl -X DELETE https://api.ezstat.dev/api/v1/stats/api_requests \
-H "Authorization: Bearer ss_live_xxxxxxxxxxxxxxxxxxxx"Works with any language via plain HTTP. No SDK required.
import requests
requests.post("https://api.ezstat.dev/ez",
data={"ezkey": "YOUR_API_KEY",
"stat": "signups", "count": 1})fetch("https://api.ezstat.dev/ez", {
method: "POST",
body: new URLSearchParams({
ezkey: "YOUR_API_KEY",
stat: "page_views", count: "1"
})
});http.PostForm("https://api.ezstat.dev/ez",
url.Values{"ezkey": {"YOUR_API_KEY"},
"stat": {"requests"}, "count": {"1"}})curl -X POST https://api.ezstat.dev/ez \
-d "ezkey=YOUR_API_KEY" \
-d "stat=deploys" -d "count=1"sed -i 's/stathat.com/api.ezstat.dev/g' your-code/Need historical data migrated? Prepay any annual plan and we'll move your StatHat data for free. Concierge service — a human reviews every import. See annual plans →