Sources
Incoming webhooks from paging and observability tools create Pulses. Paging sources, Grafana, Datadog, and tenant manual webhooks ship today.
Connect Sources, Context, and Notifications — scrubbed ingest, triage, and on-call calm.
Exhale ingests incoming alert signals from on-call and observability tools, stores scrubbed payloads as Pulses, and produces structured triage guidance for engineering teams.
The API base URL is https://exhaleoncall.com. Webhook URLs in these guides use /webhooks. See API versioning and the changelog.
Tagline: The shock absorber for on-call engineering operations.
A new workspace includes one sample Pulse (source sample, external id SAMPLE-1). It is not an incoming webhook and does not occupy an ingest slot. Pulse reads include is_sample. The first live Pulse archives it. See the changelog.
Customer setup lives in the Exhale app under Connections. Public docs follow the same three hubs:
| Hub | Creates Pulses? | Start here |
|---|---|---|
| Sources | Yes | Incoming webhooks |
| Context | No | Triage enrichment and ticketing |
| Notifications | No | Slack, Teams, email, SMS |
A vendor can appear in more than one hub. Grafana Sources is a webhook contact point. Grafana Context is an API key used later for excerpts.
Stripe billing webhooks are platform-owned and are not documented here.
| Source | Endpoint | Guide |
|---|---|---|
| PagerDuty | POST /webhooks/pagerduty | PagerDuty webhooks |
| JSM Operations (Opsgenie) | POST /webhooks/opsgenie (header) or POST /webhooks/opsgenie/{token} | JSM Operations (Opsgenie) |
| Splunk On-Call | POST /webhooks/splunk-oncall (header) or POST /webhooks/splunk-oncall/{token} | Splunk On-Call |
| incident.io | POST /webhooks/incident-io (header) or POST /webhooks/incident-io/{token} | incident.io |
| Grafana | POST /webhooks/grafana (header) or POST /webhooks/grafana/{token} | Grafana |
| Datadog | POST /webhooks/datadog (header) or POST /webhooks/datadog/{token} | Datadog |
| Prometheus Alertmanager | POST /webhooks/alertmanager (header) or POST /webhooks/alertmanager/{token} | Alertmanager |
| New Relic | POST /webhooks/newrelic (header) or POST /webhooks/newrelic/{token} | New Relic |
| Sentry | POST /webhooks/sentry (header) or POST /webhooks/sentry/{token} | Sentry |
| Honeycomb | POST /webhooks/honeycomb (header) or POST /webhooks/honeycomb/{token} | Honeycomb |
| Elastic Observability | POST /webhooks/elastic (header) or POST /webhooks/elastic/{token} | Elastic |
| Dynatrace | POST /webhooks/dynatrace (header) or POST /webhooks/dynatrace/{token} | Dynatrace |
| AWS CloudWatch | POST /webhooks/aws-cloudwatch (header) or POST /webhooks/aws-cloudwatch/{token} | AWS CloudWatch |
| Manual webhook | POST /webhooks/manual (header) or POST /webhooks/manual/{token} | Manual webhook |
/v1 webhook paths and the deprecation policy for later programmatic accessFor behavior edge cases not covered here, contact support@exhaleoncall.com.