The ping API
A ping is a GET or POST to your check's URL. Every check has two URLs that do the same thing, so you can use whichever reads better in your code.
https://ping.pingark.com/ping/<id> # by UUID https://ping.pingark.com/ping/<project-ping-key>/<slug> # by slug, same behaviourCopy
A plain ping means success. Add a suffix to either URL to say more.
https://ping.pingark.com/ping/<id> # success: re-arms the deadline https://ping.pingark.com/ping/<id>/start # the run started, lets PingArk measure its duration https://ping.pingark.com/ping/<id>/fail # an explicit failure, alerts right away https://ping.pingark.com/ping/<id>/log # a log entry, a note on the timeline, never alerts https://ping.pingark.com/ping/<id>/7 # an exit code: 0 is success, anything else failsCopy
You can POST a body of up to 100 kB on any ping to attach logs or an exception trace, and it appears on the check timeline. On the check page, the uuid and slug toggle switches the example between both URL forms, and More examples shows ready-to-copy snippets for curl, Bash, Python, Ruby, Node.js, Go, PHP, C#, PowerShell, GitHub Actions, and the Laravel and JavaScript SDKs. Prefer a full walk-through? See the client library guides.
Both URL forms are secrets. Anyone with one can ping the check, so keep them out of public logs, and rotate a check's URL from its settings if one ever leaks.
Filtering rules
Each check has optional rules for noisier setups:
- Accepted methods. Accept HEAD, GET and POST, or switch to POST only so a scanner's GET cannot file a false ping.
- Content filtering. Match case-sensitive keywords in the POST body to classify a ping as start, success or failure, which is useful when a job always exits zero but prints "ERROR". If nothing matches, you choose whether the ping is ignored or treated as a failure. An explicit /start, /fail or /log always wins.
- Paused checks. Choose whether a ping to a paused check resumes it or is ignored.
A ping that a rule drops still returns 200, so your job never errors or retries. It just does not show up on the timeline.
How long history is kept
PingArk keeps your ping history for a number of days that depends on your plan, from 30 days on Free up to a year on the largest plan. Each check also keeps up to a plan based number of its most recent events. We keep your history for up to your plan window in days, or the most recent events up to that per-check cap, whichever comes first. The cap only matters for very high-frequency checks, such as one pinging every few seconds, and it keeps storage predictable so we can offer long day based retention. Your downtime history is not affected by this per-check event cap. If you move to a smaller plan, history beyond the new window is kept for a 30-day grace period before it is removed, so you have time to upgrade again or export it. The pricing page lists the days and the per-check event cap for every plan.