Skip to content

Integrations & Endpoints

Is there an API?

There is no management API yet. You cannot currently create, update, list or delete monitors programmatically, and there is no user-facing API token feature.

What Pingniner does expose is ingest endpoints — URLs that accept data into the platform. There are two kinds, and only the first is intended for you to call directly:

EndpointCalled byPurpose
Heartbeat pingYour codeReport that a scheduled job ran
Agent ingestThe agentReport server and workstation metrics

If you need a management API, say so in a support ticket — demand is what decides what gets built.

Heartbeat ping

This is the endpoint you will actually integrate with. Full documentation with code examples for cron, PHP, Python, Ruby, Node.js, Perl and Bash is on the Heartbeats page; this is the reference.

Endpoint

GET https://ingest.pingniner.com/api/heartbeat/{key}

{key} is the heartbeat monitor's ID, shown on its Overview page.

Optional query parameters

ParameterTypeDescription
runtimenumberHow long the job took, in seconds
memorynumberPeak memory used, in MB
messagestringA short note, URL-encoded

Example

sh
curl -fsS -m 10 --retry 5 -o /dev/null \
  "https://ingest.pingniner.com/api/heartbeat/YOUR_KEY?runtime=42&memory=128&message=Backup%20complete"

Response

json
{ "success": true, "message": "Received successfully" }

An unknown key returns:

json
{ "success": false, "message": "Heartbeat not found" }

Authentication: none. The key in the URL is the credential.

Pingniner also records the source IP address and user agent of each ping, both visible in the heartbeat's history.

TIP

Call the ping URL after your job succeeds, not at the start. A heartbeat that fires before the work happens only proves the job started.

Agent ingest

These endpoints exist for the agent and are documented for completeness. You should not need to call them yourself — install the agent instead.

POST https://ingest.pingniner.com/api/server/{key}
POST https://ingest.pingniner.com/api/workstation/{key}

{key} is the server or workstation monitor's key. The body is a JSON payload produced by the systeminformation library — see What the Agent Collects for the fields.

Authentication: none. The key in the URL is the credential.

WARNING

Because these endpoints are unauthenticated beyond the key, anyone holding a monitor key can post data to that monitor. Treat keys like passwords: do not paste install commands containing real keys into tickets, shared documents or chat.

Outbound webhooks

Pingniner can call your endpoint when an incident opens or closes. That is configured per user as a notification channel, not here.

The request is a POST with a User-Agent of Pingniner and a body of:

json
{
  "message": "Incident: My Website - Offline @ 2026-08-27 14:32:00"
}

Use this to reach anything without a built-in integration — PagerDuty, Opsgenie or your own automation. Slack, Microsoft Teams, Google Chat and Discord all have dedicated channels of their own; see Notification Channels.

Status page subscriptions

Status page subscribers manage themselves through the public page. There is no endpoint for adding subscribers programmatically, deliberately — subscriptions are double opt-in so that nobody can be signed up by someone else.

Network requirements

Everything ingested goes to a single host:

HostPortDirection
ingest.pingniner.com443 (HTTPS)Outbound from your infrastructure

Add it to any egress allowlist. Nothing needs to be open inbound.

If you are allowlisting Pingniner's outbound checks — the addresses our site, ping and port monitors connect from — see the IP list in the FAQ.

Monitoring done right.