Skip to content

Connect your monitoring

Ping receives alerts from the tools you already run. You send them to a URL and authenticate with your API key. The last part of the URL picks the provider — the format Ping should decode — so each alert maps to a clean incident instead of raw JSON. One API key works with every provider; only the URL changes.

The two things every tool needs

The ingestion URL — each provider has its own path. Use the one that matches your tool:

https://api.kunobi.ninja/api/webhooks/<provider>

For example .../api/webhooks/signoz for SigNoz, .../api/webhooks/grafana for Grafana, or .../api/webhooks/raw for the generic JSON format.

Your API key — created in the Ping tab (see Get started). Send it as an Authorization: Bearer <key> header, an x-api-key header, or the password on a Basic-auth webhook — whichever your tool supports. Either way, the key is what tells Ping which team to alert. The key is not tied to any provider, so the same key works on every endpoint.

Pick the right endpoint

The provider is the last path segment of the ingestion URL. Ping uses it to map each incoming payload to a clean incident (title, summary, service, severity), so your notifications read well.

ProviderEndpointUse it for
Generic/api/webhooks/rawAnything that can POST JSON. The safe default.
SigNoz/api/webhooks/signozSigNoz alert webhooks.
Grafana/api/webhooks/grafanaGrafana alerting contact points.
Prometheus (Alertmanager)/api/webhooks/prometheusAlertmanager webhook_configs.
VictoriaMetrics (vmalert)/api/webhooks/vmalertvmalert notifications.
Thanos/api/webhooks/thanosThanos Ruler via Alertmanager.
Grafana Mimir/api/webhooks/mimirMimir alerting via Alertmanager.

One key, every provider. Send alerts from both Grafana and SigNoz with a single key — just point each tool at its own endpoint (.../grafana and .../signoz). Create more keys only when you want to revoke or rotate them independently.

Tool guides

Grafana

  1. In Grafana, go to Alerting → Contact points → Add contact point.
  2. Choose the Webhook integration.
  3. Set the URL to https://api.kunobi.ninja/api/webhooks/grafana.
  4. Under the webhook's authentication, set Basic auth and paste your Ping API key as the password (leave the username blank or use ping).
  5. Save, then use Test to send a sample alert.

SigNoz

  1. In SigNoz, open Settings → Alert Channels → New channel.
  2. Choose the Webhook type.
  3. Set the URL to https://api.kunobi.ninja/api/webhooks/signoz.
  4. Add your Ping API key as the webhook credential — SigNoz sends it as an Authorization: Bearer <key> header (or Basic-auth password).
  5. Save and send a test.

Prometheus Alertmanager (and vmalert, Thanos, Mimir)

Add a webhook receiver to your Alertmanager config, pointing at the endpoint for your tool (/prometheus, /vmalert, /thanos, or /mimir):

receivers:
  - name: kunobi-ping
    webhook_configs:
      - url: https://api.kunobi.ninja/api/webhooks/prometheus
        http_config:
          basic_auth:
            password: <your-ping-api-key>

vmalert, Thanos Ruler, and Grafana Mimir all speak the same Alertmanager webhook shape — use the matching endpoint for each and the same config otherwise.

Anything else

If your tool can send an HTTP POST with a JSON body, use the generic endpoint, /api/webhooks/raw. Point it at that URL and pass your key as a bearer token, an x-api-key header, or the Basic-auth password.

The generic webhook body

The generic endpoint (/api/webhooks/raw) accepts a small, predictable JSON object — one alert per request. Send it with your API key in the x-api-key header (or Authorization: Bearer):

curl -sS -X POST https://api.kunobi.ninja/api/webhooks/raw \
  -H "Content-Type: application/json" \
  -H "x-api-key: $PING_API_KEY" \
  -d '{"source":"grafana","dedup_key":"checkout-5xx-01","title":"Payments API is down","summary":"Elevated 5xx on checkout","service":"payments-api","severity":"critical"}'

Fields

FieldRequiredNotes
sourceYesWhere the alert came from, e.g. grafana.
dedup_keyRecommendedA unique idempotency key. Repeats are de-duplicated, so a retried or flapping alert won't page your team twice.
titleYesShort headline shown in the notification.
summaryYesOne-line detail.
serviceYesThe affected service.
severityYesOne of critical, warning, or info.

Example

{
  "source": "grafana",
  "dedup_key": "checkout-5xx-01",
  "title": "Payments API is down",
  "summary": "Elevated 5xx on checkout",
  "service": "payments-api",
  "severity": "critical"
}

Field validation is owned by the Ping backend. If a value is rejected, confirm the exact, current contract with the Ping team rather than guessing — the fields above are the ones the generic webhook expects.

Keep your API key secret — it can send alerts to your team. Store it in your tool's secret manager, never in a shared config file or a public repo. If a key leaks, revoke it from the Ping tab and issue a new one.

Available for:
Apple macOS logomacOSMicrosoft Windows logoWindowsLinux logoLinux
Download Kunobi