Uptime Kuma API Wrapper

1.2.1 · active · verified Sat Apr 11

uptime-kuma-api is a Python wrapper for the Uptime Kuma WebSocket API, currently at version 1.2.1. It provides a programmatic interface for managing monitors and notifications in Uptime Kuma. This library is actively maintained with regular releases, often aligning with new Uptime Kuma versions, and requires Python 3.7 or newer. It was primarily developed to facilitate Uptime Kuma configuration via automation tools like Ansible.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to connect to an Uptime Kuma instance, log in, retrieve existing monitors, and add a new HTTP monitor using a context manager for automatic disconnection. Ensure your Uptime Kuma URL, username, and password are set as environment variables or replaced directly in the script.

import os
from uptime_kuma_api import UptimeKumaApi, MonitorType

UPTIME_KUMA_URL = os.environ.get('UPTIME_KUMA_URL', 'http://localhost:3001')
UPTIME_KUMA_USERNAME = os.environ.get('UPTIME_KUMA_USERNAME', 'admin')
UPTIME_KUMA_PASSWORD = os.environ.get('UPTIME_KUMA_PASSWORD', 'your_password')

try:
    with UptimeKumaApi(UPTIME_KUMA_URL) as api:
        api.login(UPTIME_KUMA_USERNAME, UPTIME_KUMA_PASSWORD)
        print(f"Successfully logged in to Uptime Kuma at {UPTIME_KUMA_URL}")

        # Example: Get all monitors
        monitors = api.get_monitors()
        if monitors:
            print(f"Found {len(monitors)} monitors:")
            for monitor in monitors:
                print(f"- ID: {monitor['id']}, Name: {monitor['name']}, Type: {monitor['type']}")
        else:
            print("No monitors found. Adding a new one...")
            # Example: Add a new HTTP monitor
            new_monitor_name = "My Website"
            new_monitor_url = "https://example.com"
            result = api.add_monitor(type=MonitorType.HTTP, name=new_monitor_name, url=new_monitor_url, interval=60)
            print(f"Added new monitor '{new_monitor_name}': {result}")

except Exception as e:
    print(f"An error occurred: {e}")

view raw JSON →