Skip to main content
Obsy provides a unique per-organization webhook URL for each supported monitoring platform. When an alert fires, the platform POSTs to your URL, and Obsy normalizes it into an Alert entity, runs RCA, and optionally creates an incident.

Your webhook URLs

Go to OTel Collector → Create Monitors to see your URLs, or fetch them directly:
GET /api/v1/webhooks/urls
Authorization: Bearer {token}
Response:
{
  "datadog":  "https://api.obsy.ai/api/v1/webhooks/{orgId}/datadog",
  "grafana":  "https://api.obsy.ai/api/v1/webhooks/{orgId}/grafana",
  "newrelic": "https://api.obsy.ai/api/v1/webhooks/{orgId}/newrelic"
}

Platform setup

PlatformWhere to configureFormat
DatadogIntegrations → Webhooks → New → URL: {datadog URL}Datadog monitor payload
GrafanaAlerting → Contact points → Webhook → URL: {grafana URL}AlertManager JSON
New RelicAlerts → Destinations → Webhook → URL: {newrelic URL}New Relic Workflow payload
Detailed steps: Datadog alerts · Grafana alerts · New Relic alerts

What happens when a webhook arrives

  1. Parse — payload is normalized to a common Alert format (service, severity, signal type, labels)
  2. Store — Alert is saved with a link to the raw payload for debugging
  3. RCA — if severity is critical, an AI analysis starts in the background
  4. Auto-incident — if an auto-create rule matches, an incident is created
  5. Slack — if an incident is created and Slack is configured, a channel is opened and notifications are sent

Security

Webhook endpoints are public URLs authenticated by the {orgId} in the path. The org ID is a UUID — it cannot be guessed. If you need additional security:
  • Datadog: configure a webhook secret in Datadog’s webhook settings and validate it in your pipeline (Obsy logs but does not reject unsigned Datadog webhooks by default).
  • Grafana / New Relic: no signing support at this time — rely on the org ID as the secret.

Generic webhook (custom integrations)

For tools not listed above, use the generic endpoint:
POST /api/v1/webhooks/alerts
Payload:
{
  "organization_id": "{orgId}",
  "service_name": "my-service",
  "environment": "production",
  "alert_name": "High error rate",
  "description": "Error rate exceeded 5%",
  "severity": "critical",
  "status": "firing",
  "source": "custom",
  "signal_type": "errors",
  "triggered_at": "2026-01-15T14:32:00Z",
  "labels": { "team": "platform" },
  "annotations": { "runbook": "https://wiki.example.com/runbooks/errors" }
}
The source field accepts: datadog, grafana, prometheus, otel, custom.