Track metrics with plain HTTP. No SDK. No config files. Copy, paste, done.
Track metrics without authentication. Uses MVP namespace to isolate data. Rate limited.
Public tracking endpoint for SOLO MVPs. No API key required.
curl -X POST https://api.ezstat.dev/api/public \
-H "Content-Type: application/json" \
-d '{"mvp": "myapp", "stat": "page_views", "count": 1}'mvp — MVP name used as namespace (required)stat — Stat name within the MVP (required)count — Counter increment value (use instead of value)value — Gauge value (use instead of count)t — Unix timestamp (optional)Same /ez, /c, /v endpoints. Change one URL and your existing code works.
The easiest way to track metrics.
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_xxx" \
-d "count=1"key — Stat name (required)ukey — Your API key (required)count — Counter value (required)t — Unix timestamp (optional)Track gauge/value metrics.
curl -X POST https://api.ezstat.dev/v \
-d "key=response_time" \
-d "ukey=ss_live_xxx" \
-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_xxx"Create a new stat.
curl -X POST https://api.ezstat.dev/api/v1/stats \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"name": "new_stat", "type": "counter"}'name — Stat name (required)type — counter or gauge (required)Increment a counter stat.
curl -X POST https://api.ezstat.dev/api/v1/stats/api_requests/count \
-H "Authorization: Bearer ss_live_xxx" \
-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_xxx" \
-H "Content-Type: application/json" \
-d '{"value": 142}'Get stat details with data points.
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_xxx"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_xxx"Generate a share token for public embedding.
curl -X POST https://api.ezstat.dev/api/v1/stats/api_requests/share \
-H "Authorization: Bearer ss_live_xxx"Revoke a share token.
curl -X DELETE https://api.ezstat.dev/api/v1/stats/api_requests/share \
-H "Authorization: Bearer ss_live_xxx"Get dashboard data with aggregated stats.
curl -X GET "https://api.ezstat.dev/api/v1/dashboard?range=24h" \
-H "Authorization: Bearer ss_live_xxx"range — 1h, 6h, 24h, 7d, or 30d (default: 24h)Export all user stats as CSV or JSON. Handles large datasets via chunking.
curl -X GET "https://api.ezstat.dev/api/v1/export?format=json" \
-H "Authorization: Bearer ss_live_xxx"Health check endpoint.
curl -X GET https://api.ezstat.dev/api/v1/healthList all alerts.
curl -X GET https://api.ezstat.dev/api/v1/alerts \
-H "Authorization: Bearer ss_live_xxx"Create a new alert.
curl -X POST https://api.ezstat.dev/api/v1/alerts \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"stat_name": "api_requests", "condition": ">", "threshold": 1000}'Delete an alert.
curl -X DELETE https://api.ezstat.dev/api/v1/alerts/alert-uuid \
-H "Authorization: Bearer ss_live_xxx"Public embeddable endpoints. Requires share token.
Get embeddable data for a stat.
curl -X GET "https://api.ezstat.dev/api/v1/embed/stat-uuid?token=share_token&range=24h"statId — Stat UUID (must be valid UUID format)token — Share token (required)range — 1h, 6h, 24h, 7d, 30dRequires Pro plan or above.
Run anomaly detection.
curl -X POST https://api.ezstat.dev/api/v1/anomalies/detect \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"sensitivity": "medium"}'sensitivity — low, medium, or high (required)List all detected anomalies.
curl -X GET https://api.ezstat.dev/api/v1/anomalies \
-H "Authorization: Bearer ss_live_xxx"Compute Pearson correlations.
curl -X POST https://api.ezstat.dev/api/v1/correlations/compute \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"range": "7d"}'Ask questions about your stats.
curl -X POST https://api.ezstat.dev/api/v1/query \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"query": "Which stats had anomalies yesterday?"}'Get AI-suggested alert thresholds.
curl -X GET https://api.ezstat.dev/api/v1/thresholds/suggest \
-H "Authorization: Bearer ss_live_xxx"Subscribe to daily digests.
curl -X POST https://api.ezstat.dev/api/v1/digest/subscribe \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"frequency": "daily", "timezone": "America/New_York"}'Unsubscribe from digests.
curl -X DELETE https://api.ezstat.dev/api/v1/digest/subscribe \
-H "Authorization: Bearer ss_live_xxx"Requires Team plan or above.
List all integrations.
curl -X GET https://api.ezstat.dev/api/v1/integrations \
-H "Authorization: Bearer ss_live_xxx"Create a new integration.
curl -X POST https://api.ezstat.dev/api/v1/integrations \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"type": "slack", "webhook_url": "https://hooks.slack.com/..."}'Delete an integration.
curl -X DELETE https://api.ezstat.dev/api/v1/integrations/int-uuid \
-H "Authorization: Bearer ss_live_xxx"List all API keys.
curl -X GET https://api.ezstat.dev/api/v1/auth/api-keys \
-H "Authorization: Bearer ss_live_xxx"Create a new API key.
curl -X POST https://api.ezstat.dev/api/v1/auth/api-keys \
-H "Authorization: Bearer ss_live_xxx" \
-H "Content-Type: application/json" \
-d '{"name": "My API Key"}'Revoke an API key.
curl -X DELETE https://api.ezstat.dev/api/v1/auth/api-keys/key-uuid \
-H "Authorization: Bearer ss_live_xxx"Create Stripe checkout session.
curl -X POST https://api.ezstat.dev/api/stripe/checkout \
-H "Content-Type: application/json" \
-d '{"priceId": "pro"}'Open billing portal.
curl -X POST https://api.ezstat.dev/api/billing/portalWorks with any language via plain HTTP.
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"