Heartbeats

One HTTP call, one finished run, for cron, GitHub Actions, n8n, Zapier, Make, or anything that can fire a single request. Heartbeats land in the same dashboard, alerts, and history as full SDK runs; upgrading to the SDK later does not migrate data.

Two surfaces

Endpoint Use when
GET /v1/ping Cron, wget, shell. Everything in the query string.
POST /v1/heartbeats JSON body with explicit timestamps, output, and richer metadata.
curl 'https://eu.ingest.agentping.io/v1/ping?key=ping_eu_<token>&agent=daily-summary&status=ok&cost_usd=0.084'

Or from an SDK: agentping.heartbeat("daily-summary", status="ok", cost_usd=0.084).

Status is ok (default), fail, timeout, or start (opens a long-running run; send ok/fail at the end and duration is the gap). See GET /v1/ping for the full parameter list.

Always use a ping token

Pass a ping_<region>_... token, never a full API key, in URL-based calls. A ping token is scoped to one agent and can only fire heartbeats, so a leak is contained to a falsified status for one job; a leaked API key is a full team compromise. Each agent issues its own token in settings (shown once at creation; after rotation the old token keeps working for 24 hours).

Runtime recipes: curl, cron, GitHub Actions, n8n, Make, Zapier, Claude Routines.