Datadog API Client for Python

2.52.0 · active · verified Sun Mar 29

The `datadog-api-client` is the official Python client library for interacting with the Datadog API. It provides a structured, object-oriented interface to programmatically interact with all aspects of the Datadog platform, including metrics, monitors, events, and dashboards. The library is actively maintained with frequent minor releases, currently at version 2.52.0.

Warnings

Install

Imports

Quickstart

This quickstart demonstrates how to authenticate with Datadog using API and Application keys (preferably from environment variables) and then create a new monitor using the `MonitorsApi` client. It also includes a comment for configuring regional endpoints.

import os
from datadog_api_client import ApiClient, Configuration
from datadog_api_client.v1.api.monitors_api import MonitorsApi
from datadog_api_client.v1.model.monitor import Monitor
from datadog_api_client.v1.model.monitor_type import MonitorType

# Configure API keys, preferably via environment variables
DD_API_KEY = os.environ.get('DD_API_KEY', '')
DD_APP_KEY = os.environ.get('DD_APP_KEY', '')

configuration = Configuration()
configuration.api_key['apiKeyAuth'] = DD_API_KEY
configuration.api_key['appKeyAuth'] = DD_APP_KEY

# For non-US regions, set the site explicitly:
# configuration.server_variables["site"] = "datadoghq.eu" # Example for EU site

try:
    with ApiClient(configuration) as api_client:
        api_instance = MonitorsApi(api_client)

        # Create a basic monitor example
        body = Monitor(
            name="Example Monitor - Python Client",
            type=MonitorType("metric alert"),
            query="avg(system.cpu.user{host:"test-host"}) by {host} > 80",
            message="CPU usage is high! @pagerduty",
            tags=["env:dev", "team:backend"],
            priority=3,
        )

        response = api_instance.create_monitor(body=body)
        print(f"Monitor created successfully: {response.name} (ID: {response.id})")

except Exception as e:
    print(f"Error creating monitor: {e}")

view raw JSON →