Skip to content

HTTP API reference

Base URL for everything below is your deployment origin, e.g. https://backpulse.aniicrite.dev.

One check owns one secret ping key, shown in the dashboard. Three signals, each a request to the check’s URL:

Terminal window
curl -X POST https://backpulse.aniicrite.dev/ping/<key>/start
curl -X POST https://backpulse.aniicrite.dev/ping/<key>/success
curl -X POST https://backpulse.aniicrite.dev/ping/<key>/fail

backupctl sends these for you, with duration and exit status attached. Ingestion is rate-limited per check (60/minute by default) — abuse control, not a quota you’ll hit.

The landing pages submit here. Accepts JSON (Content-Type: application/json) or a native HTML form (application/x-www-form-urlencoded):

Terminal window
curl -X POST https://backpulse.aniicrite.dev/commitments \
-H 'Content-Type: application/json' \
-d '{"signer_name":"Dev Owner","email":"dev@example.com","company":"Example",
"wedge":"backup","monitor_count":3,"accepted":true}'

JSON gets {"ok": true}. A browser form gets a 303 redirect to /joined/; a rejected form gets a styled error page, never a raw dump. Re-submitting the same email and wedge is a no-op — accepted evidence can’t be overwritten. wedge is backup or kubernetes, monitor_count is 1–100000, and the priced acceptance flag is required.

Terminal window
curl https://backpulse.aniicrite.dev/healthz # "ok", or 503 when the DB is down

Checks, channels, and API keys are managed through the dashboard (session cookie) or the /api/v1/ surface (API key via Authorization: Bearer or X-API-Key). Create keys under Settings; every programmatic call carries one.