Docs · Reference

Events API

Any language that can make an HTTPS request can send to Pagerless. The SDKs use this same API.

Send one error
curl -X POST https://events.pagerless.dev/v1/events \
  -H "Authorization: Bearer $PAGERLESS_KEY" \
  -H "Content-Type: application/json" \
  -d '{"events":[{"v":1,"id":"evt_2026_10_22_0001","type":"error","ts":'$(date +%s000)',"service":"api","route":"POST /checkout","status":500,"error":{"type":"StripeError","message":"card_declined rate spike"}}]}'

A valid batch returns 202. A missing or wrong key returns 401.

Endpoints

Base address https://events.pagerless.dev
PathBody
POST /v1/events{"events": [...]}, 1 to 500 events
POST /v1/heartbeat{"service", "env", "release"} or ?service=
POST /v1/checkins/<job>Empty means ok. See check-ins.
POST /v1/otlp/v1/logs, /v1/otlp/v1/traces, /v1/otlp/v1/metricsOTLP over HTTP, protobuf or JSON. See OpenTelemetry.
POST /v1/hooks/<tool>/<key>Alerts from 14 monitoring tools. See alert sources.
POST /v1/aws/snsSNS notifications. See CloudWatch.

Event fields

One event
FieldRequiredMeaning
vyesAlways 1
idyes8 to 64 characters; the idempotency key (a retry with the same id counts once)
typeyeserror, metric, heartbeat, deploy, custom, resolve or checkin
tsyesUnix time in milliseconds
serviceyesWhich service, for example api
envnoDefault production
releasenoCommit or version; lets the AI connect errors to a deploy
route, statusnoPOST /checkout, 500
errorno{type, message, stack?}
fingerprintnoYour own grouping key; computed if missing
count, window_snoPre-aggregated count over a window
metricno{name, value, unit?}
severity, titlenoFor custom events: wake, tell or log
tagsnoString map

Auth and limits

  • Authorization: Bearer <ingest key>. Keys look like pl_live_ plus 32 hex characters and can only write.
  • 1 MB per request, 500 events per batch, 600 requests per minute per key (429 with retry-after).
  • CORS is open, so the browser SDK can send directly.

Updated .

Free for you and one backup · 3 apps · no card

Sleep through the small stuff.

Run one command in your repo. Pagerless shows every change before it makes it.

npx pagerless connect