// docs

API Documentation

Track metrics with plain HTTP. No SDK. No config files. Copy, paste, done.

// legacy compatible

Drop-in StatHat API

Same /ez, /c, /v endpoints. Change one URL and your existing code works.

POST/ez

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"

Parameters

  • ezkeyYour API key from Settings (required)
  • statStat name (required)
  • countCounter value (optional, default: 1)
  • valueGauge value (use instead of count)
  • tUnix timestamp (optional)
POST/c

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"

Parameters

  • keyStat name (required)
  • ukeyYour API key (required)
  • countCounter value (required)
  • tUnix timestamp (optional)
POST/v

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"

Parameters

  • keyStat name (required)
  • ukeyYour API key (required)
  • valueNumeric value (required)
  • tUnix timestamp (optional)
// modern rest api

Bearer Token API

New API with Bearer token auth. Generate keys in Settings.

GET/api/v1/stats

List all stats for the authenticated user.

curl -X GET https://api.ezstat.dev/api/v1/stats \
  -H "Authorization: Bearer ss_live_xxxxxxxxxxxxxxxxxxxx"
POST/api/v1/stats/:name/count

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}'
POST/api/v1/stats/:name/value

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/api/v1/stats/:name

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/api/v1/stats/:name

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"
// integration

Quick Start

Works with any language via plain HTTP. No SDK required.

Python
import requests
requests.post("https://api.ezstat.dev/ez",
  data={"ezkey": "YOUR_API_KEY",
        "stat": "signups", "count": 1})
Node.js
fetch("https://api.ezstat.dev/ez", {
  method: "POST",
  body: new URLSearchParams({
    ezkey: "YOUR_API_KEY",
    stat: "page_views", count: "1"
  })
});
Go
http.PostForm("https://api.ezstat.dev/ez",
  url.Values{"ezkey": {"YOUR_API_KEY"},
    "stat": {"requests"}, "count": {"1"}})
cURL
curl -X POST https://api.ezstat.dev/ez \
  -d "ezkey=YOUR_API_KEY" \
  -d "stat=deploys" -d "count=1"
// migration

Switching from StatHat

1.Sign up at ezstat.dev and grab your API key from Settings.
2.Find-and-replace your StatHat URL:
sed -i 's/stathat.com/api.ezstat.dev/g' your-code/
3.Replace your StatHat email/key with your EzStat API key.
4.Deploy. Stats auto-create on first POST. Done.

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 →