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.