Skip to main content

uptime-kuma-api2

A wrapper for the Uptime Kuma Socket.IO API — with full v2 support

Fork notice: This is an actively maintained fork of lucasheld/uptime-kuma-api, which appears to be unmaintained (last release: 2023, open PRs unanswered). This fork adds full Uptime Kuma v2.x support while maintaining backward compatibility with v1.x. Original work by Lucas Held — thank you for building the foundation.

Naming: the PyPI distribution is uptime-kuma-api2, while the import package remains uptime_kuma_api so existing code works unchanged. The unrelated PyPI projects uptime-kuma-api (upstream) and uptime-kuma-api-v2 (different maintainer) are not this fork.

uptime-kuma-api2 is a Python wrapper for the Uptime Kuma Socket.IO API.

This package was originally developed to configure Uptime Kuma with Ansible. The original Ansible collection can be found at https://github.com/lucasheld/ansible-uptime-kuma.

Python version 3.8+ is required. Tested on 3.8 through 3.13.

Supported Uptime Kuma versions:

Uptime Kuma uptime-kuma-api2
2.0.0 - 2.4.0 2.0.0 - 2.1.0
1.21.3 - 1.23.2 1.0.0 - 1.2.1
1.17.0 - 1.21.2 0.1.0 - 0.13.0

Releases 1.2.1 and earlier were published under the upstream uptime-kuma-api name; 2.0.0 onward are published as uptime-kuma-api2.

Installation

uptime-kuma-api2 is available on the Python Package Index (PyPI).

You can install it using pip:

pip install uptime-kuma-api2

Documentation

API documentation lives in the docs/ directory of this repository and can be built locally with Sphinx:

pip install -r dev-requirements.txt
cd docs && make html

Note: uptime-kuma-api.readthedocs.io is the upstream project's site and does not document this fork's v2 features.

Example

Once you have installed the python package, you can use it to communicate with an Uptime Kuma instance.

To do so, import UptimeKumaApi from the library and specify the Uptime Kuma server url (e.g. 'http://127.0.0.1:3001'), username and password to initialize the connection.

>>> from uptime_kuma_api import UptimeKumaApi, MonitorType
>>> api = UptimeKumaApi('INSERT_URL')
>>> api.login('INSERT_USERNAME', 'INSERT_PASSWORD')

Now you can call one of the existing methods of the instance. For example create a new monitor:

>>> result = api.add_monitor(type=MonitorType.HTTP, name="Google", url="https://google.com")
>>> print(result)
{'msg': 'Added Successfully.', 'monitorId': 1}

At the end, the connection to the API must be disconnected so that the program does not block.

>>> api.disconnect()

With a context manager, the disconnect method is called automatically:

from uptime_kuma_api import UptimeKumaApi

with UptimeKumaApi('INSERT_URL') as api:
    api.login('INSERT_USERNAME', 'INSERT_PASSWORD')
    api.add_monitor(
        type=MonitorType.HTTP,
        name="Google",
        url="https://google.com"
    )

MonitorBuilder

For complex monitor configurations, use the fluent MonitorBuilder:

from uptime_kuma_api import UptimeKumaApi, MonitorType, MonitorBuilder

with UptimeKumaApi('INSERT_URL') as api:
    api.login('INSERT_USERNAME', 'INSERT_PASSWORD')
    
    config = (
        MonitorBuilder()
        .type(MonitorType.HTTP)
        .name("My Monitor")
        .url("https://example.com")
        .interval(60)
        .conditions([
            {"type": "expression", "variable": "response_status", "operator": "==", "value": "200", "andOr": ""}
        ])
        .build()
    )
    result = api.add_monitor(**config)
    print(result)

New in v2.1.0

  • New monitor types: RabbitMQ, SNMP, SMTP, System Service
  • New notification providers: Nextcloud Talk, Brevo, Evolution API
  • MonitorBuilder: Fluent builder pattern for monitor configuration
  • Logger support: Pass a custom logger for Socket.IO debugging
  • v2-only parameters: Automatic version gating ensures backward compatibility with v1.x

Testing

The v2 unit tests need no live server. These are the tests CI runs:

pip install pytest
pytest tests/test_monitor_types_v2.py tests/test_monitor_params_v2.py tests/test_status_page_v2.py tests/test_notification_v2.py tests/test_logger.py tests/test_monitor_builder.py -v

The remaining test files are integration tests inherited from upstream. They expect a live Uptime Kuma instance at http://127.0.0.1:3001 and will delete all monitors, notifications, proxies, tags, status pages, docker hosts, maintenances and API keys on that instance, so never point them at a production server.

Test files:

File Coverage
tests/test_monitor_types_v2.py New monitor types (RABBITMQ, SNMP, SMTP, SYSTEM_SERVICE)
tests/test_monitor_params_v2.py v2 monitor parameters, version gating, validation
tests/test_status_page_v2.py Status page analytics replacement, password removal, new fields
tests/test_notification_v2.py Nextcloud Talk, Brevo, Evolution API providers
tests/test_logger.py Logger parameter type validation
tests/test_monitor_builder.py MonitorBuilder fluent API

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

uptime_kuma_api2-2.2.0.tar.gz (67.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

uptime_kuma_api2-2.2.0-py3-none-any.whl (53.8 kB view details)

Uploaded Python 3

File details

Details for the file uptime_kuma_api2-2.2.0.tar.gz.

File metadata

  • Download URL: uptime_kuma_api2-2.2.0.tar.gz
  • Upload date:
  • Size: 67.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.11.15

File hashes

Hashes for uptime_kuma_api2-2.2.0.tar.gz
Algorithm Hash digest
SHA256 d3f03175d07284998f17edd42dc5356ad81d9200e7212b11813438e8e1c4c19a
MD5 1edde47957dfd3fdd5b03d02a8d8c4d1
BLAKE2b-256 2bd75f1a97b50c8cebb4069dcee750015acf9ecae0b9492cb220527df4b6aba4

See more details on using hashes here.

File details

Details for the file uptime_kuma_api2-2.2.0-py3-none-any.whl.

File metadata

File hashes

Hashes for uptime_kuma_api2-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 7f21da6b5e41f2c02a2983dd0a693ebe077f0c1ab41b48cfba7b70d41ba1e250
MD5 1fd22c39774df5330d0b5e91c6a1162d
BLAKE2b-256 8badf7d49cb747412a7a682364c8b45ca982113c5ac219339ea098b12f7ba9e0

See more details on using hashes here.

Release history Release notifications | RSS feed

2.7.0

2 files

2.6.0

2 files

2.5.0

2 files

2.4.0

2 files

2.3.1

2 files

2.3.0

2 files

2.2.1

2 files

This release

2.2.0 This release

2 files

2.1.0

2 files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page