Skip to main content

DevHelm Python SDK

Typed Python client for the DevHelm monitoring API — monitors, incidents, alerting, and more.

Installation

pip install devhelm

Quick Start

from devhelm import Devhelm

client = Devhelm(token="your-api-token")

# List all monitors
monitors = client.monitors.list()
for m in monitors:
    print(f"{m.name}{m.type}")

# Create a monitor
monitor = client.monitors.create({
    "name": "My API Health",
    "type": "HTTP",
    "config": {"url": "https://api.example.com/health", "method": "GET"},
    "frequencySeconds": 60,
    "regions": ["us-east"],
    # `managedBy` records who reconciles drift on this resource. Use
    # "DASHBOARD" (the default for one-off SDK scripts), "CLI" if the
    # monitor lives in a `devhelm.yml` you re-deploy, or "TERRAFORM"
    # if it lives in `.tf` you re-apply.
    "managedBy": "DASHBOARD",
})

# Get a single monitor
monitor = client.monitors.get(monitor.id)

# Pause / resume
client.monitors.pause(monitor.id)
client.monitors.resume(monitor.id)

# Delete
client.monitors.delete(monitor.id)

Configuration

from devhelm import Devhelm

client = Devhelm(
    token="your-api-token",            # required (or DEVHELM_API_TOKEN env var)
    org_id="1",                        # optional — see notes below
    workspace_id="1",                  # optional — see notes below
    base_url="https://api.devhelm.io", # optional, defaults to production
)

Environment variables are used as fallbacks when constructor arguments are not provided:

Parameter Required Env Variable Notes
token Yes DEVHELM_API_TOKEN Personal or workspace API token.
org_id No DEVHELM_ORG_ID Auto-resolved if your token is scoped to one org. Required only when the token has access to multiple.
workspace_id No DEVHELM_WORKSPACE_ID Auto-resolved if your token is scoped to one workspace. Required only when the token spans multiple.

Resources

The client exposes the following resource modules:

Resource Description
client.monitors HTTP, DNS, TCP, ICMP, MCP, and Heartbeat monitors
client.incidents Manual and auto-detected incidents
client.alert_channels Slack, email, webhook, and other alert channels
client.notification_policies Routing rules for alerts
client.environments Environment grouping (prod, staging, etc.)
client.secrets Encrypted secrets for monitor auth
client.tags Organize monitors with tags
client.resource_groups Logical resource groups
client.webhooks Outgoing webhook endpoints
client.api_keys API key management
client.dependencies Service dependency tracking
client.deploy_lock Deploy lock for safe deployments
client.services Status Data catalog: vendor services, components, incidents, uptime
client.status Dashboard overview

Pagination

List methods auto-paginate by default. For manual page control:

# Auto-paginate (fetches all pages)
all_monitors = client.monitors.list()

# Manual page control
page = client.monitors.list_page(page=0, size=20)
print(page.data)       # list of monitors
print(page.has_next)   # True if more pages
print(page.has_prev)   # True if previous page exists

# Cursor pagination (for check results)
results = client.monitors.results(monitor_id, limit=50)
print(results.data)
print(results.next_cursor)
print(results.has_more)

Error Handling

The SDK raises three top-level error types (see 040-codegen-policies.md):

  • DevhelmValidationError — local request/response shape validation failed.
  • DevhelmApiError — the API returned a non-2xx status. Subclassed by HTTP class for ergonomics: DevhelmAuthError (401/403), DevhelmNotFoundError (404), DevhelmConflictError (409), DevhelmRateLimitError (429), DevhelmServerError (5xx).
  • DevhelmTransportError — the request never reached a server response (connection refused, timeout, TLS failure, etc.).

Every DevhelmApiError carries:

  • status — the HTTP status code
  • code — coarse machine-readable category (e.g. NOT_FOUND, RATE_LIMITED); switch on this, not the human-readable message
  • request_id — the per-request id from the X-Request-Id response header; always include this in support tickets
from devhelm import Devhelm, DevhelmAuthError, DevhelmError

client = Devhelm(token="bad-token")

try:
    client.monitors.list()
except DevhelmAuthError as e:
    print(f"Auth failed: {e.message} (HTTP {e.status}, request_id={e.request_id})")
except DevhelmError as e:
    print(f"API error [{e.code}]: {e.message}")

Development

# Install dependencies
uv sync

# Run tests
make test

# Lint + format check
make lint

# Type check
make typecheck

# Regenerate types from OpenAPI spec
make typegen

License

MIT

Download files

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

Source Distribution

devhelm-1.6.0.tar.gz (265.1 kB view details)

Uploaded Source

Built Distribution

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

devhelm-1.6.0-py3-none-any.whl (88.7 kB view details)

Uploaded Python 3

File details

Details for the file devhelm-1.6.0.tar.gz.

File metadata

  • Download URL: devhelm-1.6.0.tar.gz
  • Upload date:
  • Size: 265.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.15

File hashes

Hashes for devhelm-1.6.0.tar.gz
Algorithm Hash digest
SHA256 d8e261b22728b910e1c15425de24657dc5f2d4de0528b10419e1113e423e3e12
MD5 f4ed998f6d967e1c512da4aa72352918
BLAKE2b-256 b0de7dc378b9ba1fbcbfe1066eec617f0b7042559c12848ec2dfe94beaa46f76

See more details on using hashes here.

File details

Details for the file devhelm-1.6.0-py3-none-any.whl.

File metadata

  • Download URL: devhelm-1.6.0-py3-none-any.whl
  • Upload date:
  • Size: 88.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.15

File hashes

Hashes for devhelm-1.6.0-py3-none-any.whl
Algorithm Hash digest
SHA256 91895b0da27ee8aa7720c8307d287abf2a8b9b27d6402dc085e9408a6f7e9f87
MD5 e20805f68f268ce3f247abc0e73c4de8
BLAKE2b-256 381a53e037fffea047f52e9b17d88a3f30f02b2ff45f282e65d96120de6542f9

See more details on using hashes here.

Release history Release notifications | RSS feed

1.8.0

2 files

1.7.0

2 files

This release

1.6.0 This release

2 files

1.5.0

2 files

1.4.0

2 files

1.3.0

2 files

1.2.0

2 files

1.1.0

2 files

1.0.0

2 files

0.7.2

2 files

0.7.0

2 files

0.6.3

2 files

0.6.2

2 files

0.6.1

2 files

0.6.0

2 files

0.5.0

2 files

0.4.0

2 files

0.3.0

2 files

0.2.1

2 files

0.2.0

2 files

0.1.2

2 files

0.1.1

2 files

0.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