Quickstart
By the end of this page you will have fired an alarm and watched it resolve the people it would have alerted - without alerting anyone. Everything here happens in the console except the last step, which is one HTTP call.
1. Create Your Account
Section titled “1. Create Your Account”Sign up at console.openalarm.io. The first-run steps ask for your name and create your first location with its address - the people you alert see which location triggered, and the address tells them exactly where to go.
2. Add a Contact
Section titled “2. Add a Contact”Contacts → Add Contact. Add yourself first: name, and your own mobile number or email. You will be the one alerted in a moment, which is the honest way to see what your real contacts would receive. Saving a contact records your attestation that they agreed to be contacted - for yourself, that is an easy yes.
3. Build a Policy
Section titled “3. Build a Policy”An alarm alerts whoever its escalation policy says, in the order it says.
Policies → New Policy. One level is enough to start: add your contact to it and pick the channel to reach them on - text, call, or email.
4. Create the Alarm
Section titled “4. Create the Alarm”Sources → Alarms → New Alarm. Give it a name, then open the Away mode in the Modes list and bind it to your policy. A new alarm starts in Test - a test trigger runs the real policy and records who would have been reached, without contacting anyone - so there is nothing to set here. The alarm belongs to the location you are viewing; with one location there is nothing to choose.
5. Mint an API Key
Section titled “5. Mint an API Key”Developers → API Keys → New API Key. The key authorizes alarm actions and nothing else. Copy it now; it is shown once. Keys can be scoped to a single alarm, which is the right shape for a key that lives in a webhook config.
6. Fire It
Section titled “6. Fire It”ALARM_ID='k7m3x9q2f8d4w1b5n6p0r3t7v2x5z9c4'API_KEY='oa_m9s346q3d25vt4f5v37e3s3e28jt97kb6cq643dzvmxxqkfbf5kznwj47tan9zt2'
curl "https://api.openalarm.io/v1/alarm/${ALARM_ID}/trigger" \ -H "X-API-Key: ${API_KEY}"{ "error": false, "message": null, "traceId": "8f14e45f-ea0d-4a1b-9f2c-6b3d70c5e881", "data": { "environment": "test", "location": { "id": "2c9wvhrq52k5refhtvmmr0f8yjz5j9e9", "name": "Home" } }}environment: test confirms nobody was contacted. Open the alarm in the console: the log shows the
trigger, and the incident lists your contact with the delivery marked suppressed - who would
have been reached, on which channel, at what time. The chain exactly as it would have run. See
Test Mode for everything a test does and does not do.
From Home Assistant
Section titled “From Home Assistant”The same call as a rest_command,
fired by any automation:
rest_command: openalarm_trigger: url: "https://api.openalarm.io/v1/alarm/k7m3x9q2f8d4w1b5n6p0r3t7v2x5z9c4/trigger" headers: X-API-Key: !secret openalarm_api_keyBetter: the official integration installs through HACS and turns every alarm into a device with actions and a panel entity - no YAML endpoints to maintain.
From UniFi Protect
Section titled “From UniFi Protect”UniFi Protect’s Alarm Manager calls the same URL directly - a bodyless GET with the key in a custom header, no middleman needed. The UniFi Protect guide walks through it.
Go Live
Section titled “Go Live”Flip the alarm’s Environment from Test to Live in the console. Nothing else changes - same URL, same key, same policy - except that the next trigger reaches your contacts for real. Add the people who should actually be alerted, and you are done.