Events API
Send your first event
Open an incident with one request, then close it with another.
An event is a short message telling WarnFire something happened: “a problem started”, “it’s still going”, or “it’s fixed.” WarnFire turns those messages into incidents and pages people.
Before you begin
You need:
- a service and integration key connected to a working escalation policy;
- the
curlcommand-line client or another HTTPS client; and - an on-call responder who knows this test creates a real incident and can page them.
Open an incident
Send a POST request to https://api.warnfire.com/v1/events with a JSON body:
curl --include --fail-with-body \
--request POST 'https://api.warnfire.com/v1/events' \
--header 'Content-Type: application/json' \
--data '{
"integration_key": "YOUR-INTEGRATION-KEY",
"event_action": "trigger",
"dedup_key": "checkout-api/high-error-rate",
"payload": {
"summary": "Checkout error rate above 10%",
"source": "prometheus",
"severity": "critical"
}
}'
WarnFire answers 202 Accepted with the incident’s ID. Paging then begins on
the channels selected by the service’s captured escalation policy.
Paging cost: This is a real trigger. Push and email are free; selected SMS and voice deliveries consume allowance or prepaid credits for every destination contacted.
The pieces:
integration_key— the secret key for one service, created under Services. It both proves who you are and tells WarnFire which service the problem belongs to.event_action: "trigger"— “a problem started.”dedup_key— your name for this specific problem. See how deduplication keys correlate events . If you leave it out, WarnFire generates one and returns it.payload— the human-facing part. Three fields are required:summary— one plain sentence a half-asleep responder will read first.source— where this came from (a hostname, a monitor name).severity—critical,error,warning, orinfo.
Close it when it’s fixed
curl --include --fail-with-body \
--request POST 'https://api.warnfire.com/v1/events' \
--header 'Content-Type: application/json' \
--data '{
"integration_key": "YOUR-INTEGRATION-KEY",
"event_action": "resolve",
"dedup_key": "checkout-api/high-error-rate"
}'
Same dedup_key, action resolve — the incident closes, and the timeline records how long it lasted.
Verify it worked
- Confirm the trigger request returns
202 Acceptedwith an incident identifier and deduplication key. - Open that incident in WarnFire and confirm it belongs to the intended service and contains the summary, source, and severity you sent.
- Confirm the service’s on-call responder receives the expected page.
- Send the resolve request and confirm that the same incident closes instead of creating another incident.
Make incidents genuinely useful
Everything else in payload is optional, but the more you send, the less a responder has to go digging at 3 a.m.:
| Field | What it’s for |
|---|---|
description | The longer story (up to 8,192 characters). |
links | Up to 20 links — the dashboard, the runbook. Give each a text label. |
details | Up to 64 measurements or facts: {"error_rate": 12.7, "region_healthy": false}. |
labels | Up to 64 name/value pairs for filtering, like "team": "payments". |
tags | Simple keywords, like "customer-impacting". |
component, environment, region | Where in your world this lives: checkout-api, production, us-west-2. |
timestamp | When the problem was observed (RFC 3339 format). WarnFire separately records when it received the event. |
A note on acknowledge
There’s a third action, acknowledge, which your monitoring system can send.
It’s written into the incident’s history — but it does not stop the paging.
Only an authorized human acknowledgement does that. See
Triggered and paging
for the supported acknowledgement paths.
Next steps
- Deduplication and safe retries — how retries and updates avoid starting a second incident or escalation.
- The complete field-by-field reference lives in the OpenAPI document .