Axiom delivers monitor-triggered alerts to user-configured HTTP endpoints via the Custom Webhook Notifier. A monitor (match, threshold, or anomaly) runs a periodic query over event data, and when its condition is met (or resolved, for threshold monitors) Axiom POSTs a JSON payload rendered from a Go-template body to the customer's webhook URL. This AsyncAPI document models the outgoing webhook surface that Axiom publishes to subscribers. Live Stream, the in-product real-time inspector at axiom.co's Stream tab, is documented only as a UI feature; the public Axiom docs do not specify a customer-callable streaming API (SSE, WebSocket, or long-poll) for it, so it is intentionally not modelled here.
View SpecView on GitHubAnalyticsLog ManagementLoggingObservabilityReal-TimeServerlessAsyncAPIEventsWebhooks
Channels
/webhook
publishreceiveAxiomNotification
Receive a monitor notification from Axiom
Outbound delivery channel. Axiom POSTs a JSON body rendered from the notifier's template to the configured URL whenever a monitor fires or (for threshold monitors) resolves. The default template emits an envelope with an action field and an event object; operators may customise this template using Go template syntax, so receivers should treat the schema below as the default contract.
Messages
✉
MonitorOpen
Monitor Opened
Sent when a match monitor matches an event, when a threshold monitor enters its alert state, or when an anomaly monitor detects a deviation. The default template sets action to "Open".
✉
MonitorClosed
Monitor Closed
Sent when a threshold monitor exits its alert state. The default template sets action to "Closed".
Servers
https
external{webhookUrl}
The customer-owned HTTPS endpoint configured on an Axiom Custom Webhook notifier. Axiom sends an HTTP POST with Content-Type application/json plus any custom headers configured on the notifier.
asyncapi: 2.6.0
info:
title: Axiom Custom Webhook Notifier
description: >-
Axiom delivers monitor-triggered alerts to user-configured HTTP endpoints
via the Custom Webhook Notifier. A monitor (match, threshold, or anomaly)
runs a periodic query over event data, and when its condition is met (or
resolved, for threshold monitors) Axiom POSTs a JSON payload rendered from
a Go-template body to the customer's webhook URL. This AsyncAPI document
models the outgoing webhook surface that Axiom publishes to subscribers.
Live Stream, the in-product real-time inspector at axiom.co's Stream tab,
is documented only as a UI feature; the public Axiom docs do not specify a
customer-callable streaming API (SSE, WebSocket, or long-poll) for it, so
it is intentionally not modelled here.
version: '1.0.0'
contact:
name: Axiom
url: https://axiom.co/docs
license:
name: Proprietary
externalDocs:
description: Axiom Custom Webhook Notifier documentation
url: https://axiom.co/docs/monitor-data/custom-webhook-notifier
servers:
external:
url: '{webhookUrl}'
protocol: https
description: >-
The customer-owned HTTPS endpoint configured on an Axiom Custom Webhook
notifier. Axiom sends an HTTP POST with Content-Type application/json
plus any custom headers configured on the notifier.
variables:
webhookUrl:
description: >-
The URL of the endpoint configured on the Custom Webhook notifier
in the Axiom Console.
channels:
/webhook:
description: >-
Outbound delivery channel. Axiom POSTs a JSON body rendered from the
notifier's template to the configured URL whenever a monitor fires or
(for threshold monitors) resolves. The default template emits an
envelope with an action field and an event object; operators may
customise this template using Go template syntax, so receivers should
treat the schema below as the default contract.
publish:
operationId: receiveAxiomNotification
summary: Receive a monitor notification from Axiom
description: >-
Axiom publishes a notification whenever an associated monitor
condition is met. Match monitors deliver one notification per matched
event. Threshold monitors deliver a notification when entering the
alert state (action "Open") and another when exiting it (action
"Closed").
message:
oneOf:
- $ref: '#/components/messages/MonitorOpen'
- $ref: '#/components/messages/MonitorClosed'
components:
messages:
MonitorOpen:
name: monitorOpen
title: Monitor Opened
summary: >-
Sent when a match monitor matches an event, when a threshold monitor
enters its alert state, or when an anomaly monitor detects a deviation.
The default template sets action to "Open".
contentType: application/json
payload:
$ref: '#/components/schemas/NotificationEnvelope'
MonitorClosed:
name: monitorClosed
title: Monitor Closed
summary: >-
Sent when a threshold monitor exits its alert state. The default
template sets action to "Closed".
contentType: application/json
payload:
$ref: '#/components/schemas/NotificationEnvelope'
schemas:
NotificationEnvelope:
type: object
description: >-
Default JSON envelope rendered by the Custom Webhook notifier
template. Fields map one-to-one to Go template variables documented
by Axiom; templates are customisable so receivers should treat
unknown fields gracefully.
properties:
action:
type: string
description: >-
Rendered from .Action. "Open" indicates a match or a threshold
trigger. "Closed" indicates a threshold resolution.
enum:
- Open
- Closed
event:
$ref: '#/components/schemas/NotificationEvent'
required:
- action
- event
NotificationEvent:
type: object
description: >-
The inner event object exposed by the default notifier template.
properties:
monitorID:
type: string
description: >-
Rendered from .MonitorID. Unique identifier of the monitor that
generated the notification.
body:
type: string
description: >-
Rendered from .Body. Message body containing matching event data
(match monitors) or trigger/resolve information (threshold
monitors).
description:
type: string
description: >-
Rendered from .Description. The monitor's description as
configured in Axiom.
queryStartTime:
type: string
format: date-time
description: >-
Rendered from .QueryStartTime. Start of the query window
evaluated by the monitor.
queryEndTime:
type: string
format: date-time
description: >-
Rendered from .QueryEndTime. End of the query window evaluated by
the monitor.
timestamp:
type: string
format: date-time
description: >-
Rendered from .Timestamp. Time the notification was generated.
title:
type: string
description: >-
Rendered from .Title. Name of the monitor associated with the
notification.
value:
type: number
description: >-
Rendered from .Value. Numeric value that caused the monitor to
trigger or resolve. Populated for threshold monitors.
matchedEvent:
type: object
additionalProperties: true
description: >-
Rendered from .MatchedEvent via jsonObject. The matching event
for match monitors; absent for threshold and anomaly monitors.
groupKeys:
type: array
description: >-
Rendered from .GroupKeys via jsonArray. Group-by attribute names
from the monitor query, when group-based notifications are
enabled.
items:
type: string
groupValues:
type: array
description: >-
Rendered from .GroupValues via jsonArray. Group-by attribute
values aligned with groupKeys.
items:
type: string
required:
- monitorID
- title
- timestamp
Discovery needs no key. Ratings and market analysis are Pro.
Get an API key
Free tier, no form to fill in. Signing in shares your email address with us — we
store it to create your key and to recognise you if you sign in with another
provider. See our Privacy Policy and
Terms.