Quickstart
Capture your first agent run in 60 seconds. Create a team, drop in one of the paths below, and watch the run land in your dashboard.
1. Get your API key
Create a team at agentping.io/register, choose eu or us data
residency, and copy your key from the agent settings page:
apk_<region>_...: team API key, for the SDK.ping_<region>_...: per-agent token, safe in URLs (cron, curl). See Authentication.
Pick your path
There are two ways to send your first run. Pick the one that matches how your agent runs today; you can mix and match later.
- Path A if you call Anthropic or OpenAI from your own code.
- Path B if your agent is a scheduled job with no SDK, or anything else that can make an HTTP call.
Path A: SDK auto-instrumentation
Install the SDK, call init(), and instrument your provider. Every Anthropic
or OpenAI call inside a run is captured automatically, with tokens, latency,
and cost.
pip install "agentping-sdk @ git+https://github.com/agent-ping/agent-ping-python.git"
npm install github:agent-ping/agent-ping-typescript
Then put your team key in the environment the agent runs in:
export AGENTPING_API_KEY=apk_eu_... # the team key from step 1
import agentping, anthropic
agentping.init() # reads AGENTPING_API_KEY
agentping.instrument_anthropic() # capture every Anthropic call
client = anthropic.Anthropic()
with agentping.run("support-triage", customer_id="acme",
goal="Triage the ticket and route it to the right queue"):
client.messages.create(
model="claude-sonnet-4-5",
max_tokens=512,
messages=[{"role": "user", "content": "summarise this ticket"}],
)
The run closes when the block exits. The goal is optional but worth
setting: it tells evaluations what the run was supposed to achieve, and
the review is much sharper with it.
Check it landed: open your dashboard and look at the activity feed. You
should see one run named support-triage with status ok, a token count, and
a cost figure, usually within a second of the block exiting. If it is there,
you are done; Spend is attributing cost and Pulse is tracking freshness from
this point on. If it is not, check that AGENTPING_API_KEY is set in the
process that ran the agent.
Calling a different provider, or going through a framework? Report the call
yourself with r.event("llm_call", {...}) (the token counts are on the
response object your provider returns) and cost is computed server-side from
the same rate card. See Runs and events.
Path B: Webhook heartbeats
No SDK, or a scheduled job that just needs to prove it ran? Send one HTTP call
per run with a ping_ token. Everything goes in the query string, so it drops
straight into a cron line, an n8n HTTP node, or a CI step. The response is OK.
curl 'https://eu.ingest.agentping.io/v1/ping?key=ping_eu_...&agent=nightly-report&status=ok'
Send eu or us credentials to the matching region host. For a richer payload
(cost, timestamps, metadata) use the JSON POST /v1/heartbeats.
Check it landed: the curl response is OK, and the dashboard activity
feed shows a run named nightly-report with status ok and the timestamp the
ping arrived. That single line is your heartbeat baseline; once you set the
agent's expected schedule, Pulse pages you when a window passes silently.
A missed call inside the expected schedule window raises a freshness alert in Pulse. See curl, cron, GitHub Actions, n8n, Make, Zapier, and Claude Routines.
Next: Runs and events for the data model.