Integrations

Wire the webhook, ship the alert.

Each time the detector records an anomaly, Paxis POSTs a JSON payload to the remediation webhook URL you set in /workspace/settings or /anomalies/settings. Pick a destination below, copy the snippet, paste the URL back into the field, and save. You should see a fire test event within minutes.

Slack Incoming Webhook
Create a Slack app, enable Incoming Webhooks, pick the channel, and paste the resulting URL into the remediation webhook field. Paxis will POST the JSON payload below each time an anomaly fires.
text
# 1. Webhook URL form
https://hooks.slack.com/services/T<BUSINESS_ID>/B<CHANNEL_ID>/<TOKEN>

# 2. Minimal Slack-formatted payload (POSTed as the request body)
{
  "text": ":rotating_light: Anomaly *<anomalyId>* detected on pod *<podId>*",
  "blocks": [
    {
      "type": "section",
      "text": {
        "type": "mrkdwn",
        "text": ":rotating_light: *<severity>* anomaly on *<podId>*\n<summary>"
      }
    },
    {
      "type": "context",
      "elements": [
        { "type": "mrkdwn", "text": "anomaly_id: `<anomalyId>`" },
        { "type": "mrkdwn", "text": "triggered_at: `<triggeredAt>`" }
      ]
    }
  ]
}
PagerDuty Events API v2
From your PagerDuty service, create an Events API v2 integration and copy the integration key into routing_key. Paxis POSTs the JSON below to events.pagerduty.com each time an anomaly fires.
http
POST https://events.pagerduty.com/v2/enqueue
Content-Type: application/json

{
  "routing_key": "<YOUR_PAGERDUTY_INTEGRATION_KEY>",
  "event_action": "trigger",
  "dedup_key": "<anomalyId>",
  "payload": {
    "summary": "Paxis anomaly <anomalyId> on <podId>",
    "source": "paxis",
    "severity": "error",
    "timestamp": "<triggeredAt>",
    "custom_details": {
      "podId": "<podId>",
      "anomalyId": "<anomalyId>",
      "idempotencyKey": "<anomalyId>"
    }
  }
}
Any other backend (curl)
For runbook servers, custom dashboards, or anything else: Paxis sends the same payload to the URL you configure. Here's the exact curl Paxis runs server-side, including the x-paxis-anomaly-id header.
bash
curl -X POST "$WEBHOOK_URL" \
  -H "content-type: application/json" \
  -H "x-paxis-anomaly-id: <anomalyId>" \
  -d '{
    "anomalyId": "<anomalyId>",
    "podId": "<podId>",
    "severity": "high",
    "triggeredAt": "<ISO-8601 timestamp>",
    "idempotencyKey": "<anomalyId>"
  }'
What Paxis sends
Every delivery is a JSON POST, a 5-second timeout, and retries up to twice with the same idempotencyKey so dupes collapse on your side.

Headers: content-type: application/json and x-paxis-anomaly-id: <anomalyId>.

Body: the anomalyId, podId, severity, an ISO-8601 triggeredAt, and an idempotencyKey that matches the anomaly ID — return 2xx and Paxis marks the action triggered.