# Uptime Kuma

> Send Uptime Kuma's monitor notifications into InfraInbox as incidents.

Web page: https://infrainbox.app/docs/sources/uptime-kuma/

InfraInbox doesn't replace Uptime Kuma's monitors — it's downstream of them. Keep watching whatever you already watch; point Uptime Kuma's webhook notification at InfraInbox to get those results as incidents, on the destinations you choose, with routing, quiet hours and re-notify on top.

**Tested with:** Uptime Kuma 2.x.

## What you get

A monitor going **DOWN** opens an incident; the next **UP** resolves it. That's the whole shipped preset — one rule, no expiry, because the up/down pair is the correction that ends it.

## Prerequisites

- An Uptime Kuma instance that can reach your InfraInbox server over HTTPS.
- One InfraInbox source can take every monitor's notifications; you don't need one source per monitor.

## Setup

1. Go to **Add source → Uptime Kuma** (dashboard screen `/sources/new/uptime-kuma`) and name it (your Uptime Kuma instance, say). InfraInbox issues an ingest key, shown once — copy it.
2. In Uptime Kuma, go to **Settings → Notifications → Setup Notification** and fill it in:

   | Field | Value |
   |---|---|
   | Notification Type | Webhook |
   | Post URL | `https://infrainbox.example.com/hooks/uptime-kuma` |
   | Request Body | Preset - application/json |

3. Turn on **Additional Headers** and paste:

   ```json
   {"Authorization": "Bearer iik_src_…"}
   ```

4. Click **Test**. The source in InfraInbox shows **Reachable**.
5. Tick "Apply on all existing monitors" (or enable it per monitor, if you'd rather be selective).

## Check it works

Force a monitor down (stop the service it checks, or lower its retry count temporarily) and wait for Uptime Kuma to mark it DOWN. The source switches to **Receiving events**, and an incident opens. Bring the check back and the incident resolves on its own.

## Limitations

- If you point Uptime Kuma's **Gotify** notification type at InfraInbox instead of its Webhook type above, the token only goes in the URL's query string, never a header. See [Gotify-compatible tools](https://infrainbox.app/docs/sources/gotify-compatible.md#a-sender-that-cant-set-a-header) for the query-mode option that accepts it — the Webhook setup above avoids the trade-off entirely, so prefer it.
- Only the down/up pair is covered by the preset. If you use Uptime Kuma for anything with more states, route those events with your own [rule](https://infrainbox.app/docs/notifications/routing.md).

## Next

- [Routing rules](https://infrainbox.app/docs/notifications/routing.md) — send specific monitors to specific destinations
- [Presets](https://infrainbox.app/docs/notifications/presets.md) — edit or override the default rule
