> ## Documentation Index
> Fetch the complete documentation index at: https://docs.fiddler.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# AlertRule

> Alert rule for automated monitoring and alerting in ML systems.

Alert rule for automated monitoring and alerting in ML systems.

An AlertRule defines conditions that automatically trigger notifications when
ML model metrics exceed specified thresholds. Alert rules are essential for
proactive monitoring of model performance, data drift, and operational issues.

## Example

```python theme={null}
# Create feature drift alert
drift_alert = AlertRule(
    name="credit_score_drift",
    model_id=model.id,
    metric_id="drift_score",
    priority=Priority.HIGH,
    compare_to=CompareTo.BASELINE,
    condition=AlertCondition.GT,
    bin_size=BinSize.HOUR,
    critical_threshold=0.8,
    warning_threshold=0.6,
    baseline_id=baseline.id,
    columns=["credit_score", "income"]
).create()

# Create performance degradation alert
perf_alert = AlertRule(
    name="accuracy_drop",
    model_id=model.id,
    metric_id="accuracy",
    priority=Priority.MEDIUM,
    compare_to=CompareTo.TIME_PERIOD,
    condition=AlertCondition.LESSER,
    bin_size=BinSize.DAY,
    critical_threshold=0.85,
    compare_bin_delta=7  # Compare to 7 days ago
).create()

# Configure notifications
drift_alert.set_notification_config(
    emails=["[ml-team@company.com](mailto:ml-team@company.com)", "[data-team@company.com](mailto:data-team@company.com)"],
    pagerduty_services=["ML_ALERTS"],
    pagerduty_severity="critical"
)
```

<Info>
  Alert rules continuously monitor metrics and trigger notifications when
  thresholds are exceeded. Use appropriate evaluation delays to avoid
  false positives from temporary data fluctuations.
</Info>

Initialize an AlertRule instance.

Creates an alert rule configuration for automated monitoring of ML model metrics.
The alert rule defines conditions that trigger notifications when thresholds are
exceeded, enabling proactive monitoring of model performance and data quality.

## Parameters

<ParamField path="name" type="str" required={true}>
  Human-readable name for the alert rule. Should be descriptive
  and unique within the model context.
</ParamField>

<ParamField path="model_id" type="UUID | str" required={true}>
  UUID of the model this alert rule monitors. Must be a valid
  model that exists in the Fiddler platform.
</ParamField>

<ParamField path="metric_id" type="str | UUID" required={true}>
  ID of the metric to monitor (e.g., "drift\_score", "accuracy",
  "precision", "recall", custom metric IDs).
</ParamField>

<ParamField path="priority" type="Priority | str" required={true}>
  Alert priority level (HIGH, MEDIUM, LOW). Determines urgency
  and routing of notifications.
</ParamField>

<ParamField path="compare_to" type="CompareTo | str" required={true}>
  Comparison method for threshold evaluation:

  * BASELINE: Compare against a fixed baseline
  * TIME\_PERIOD: Compare against previous time period
  * RAW\_VALUE: Compare against absolute threshold
</ParamField>

<ParamField path="condition" type="AlertCondition | str" required={true}>
  Alert condition (GT, LT, OUTSIDE\_RANGE). Defines when
  the alert should trigger relative to the threshold.
</ParamField>

<ParamField path="bin_size" type="BinSize | str" required={true}>
  Time aggregation window (HOUR, DAY, WEEK). Controls how
  data is grouped for metric calculation.
</ParamField>

<ParamField path="threshold_type" type="AlertThresholdAlgo | str" required={false} default="AlertThresholdAlgo.MANUAL">
  Threshold calculation method (MANUAL or AUTO).
  MANUAL uses user-defined thresholds, AUTO calculates
  dynamic thresholds based on historical data.
</ParamField>

<ParamField path="auto_threshold_params" type="dict[str, Any] | None" required={false} default="None">
  Parameters for automatic threshold calculation.
  Used when threshold\_type is AUTO.
</ParamField>

<ParamField path="critical_threshold" type="float | None" required={false} default="None">
  Critical alert threshold value. Triggers high-priority
  notifications when exceeded.
</ParamField>

<ParamField path="columns" type="list[str] | None" required={false} default="None">
  List of feature columns to monitor. For feature-specific
  drift alerts. If None, monitors all features.
</ParamField>

<ParamField path="baseline_id" type="UUID | str | None" required={false} default="None">
  UUID of the baseline to compare against. Required when
  compare\_to is BASELINE.
</ParamField>

<ParamField path="segment_id" type="UUID | str | None" required={false} default="None">
  UUID of the data segment to monitor. For segment-specific
  monitoring (optional).
</ParamField>

<ParamField path="compare_bin_delta" type="int | None" required={false} default="None">
  Number of time bins to compare against. Used with
  TIME\_PERIOD comparison (e.g., 7 for week-over-week).
</ParamField>

<ParamField path="evaluation_delay" type="int" required={false} default="0">
  Delay in minutes before evaluating alerts. Helps
  avoid false positives from incomplete data.
</ParamField>

<ParamField path="category" type="str | None" required={false} default="None">
  Custom category for organizing alerts. Useful for grouping
  related alerts in dashboards.
</ParamField>

## Example

```python theme={null}
# Feature drift alert with baseline comparison
drift_alert = AlertRule(
    name="income_drift_detection",
    model_id=model.id,
    metric_id="drift_score",
    priority=Priority.HIGH,
    compare_to=CompareTo.BASELINE,
    condition=AlertCondition.GT,
    bin_size=BinSize.HOUR,
    critical_threshold=0.8,
    warning_threshold=0.6,
    baseline_id=baseline.id,
    columns=["income", "credit_score"],
    evaluation_delay=15,  # 15 minute delay
    category="data_quality"
)

# Performance monitoring with time comparison
perf_alert = AlertRule(
    name="weekly_accuracy_check",
    model_id=model.id,
    metric_id="accuracy",
    priority=Priority.MEDIUM,
    compare_to=CompareTo.TIME_PERIOD,
    condition=AlertCondition.LESSER,
    bin_size=BinSize.DAY,
    critical_threshold=0.85,
    compare_bin_delta=7,  # Compare to 7 days ago
    category="performance"
)
```

<Info>
  After initialization, call create() to persist the alert rule to the
  Fiddler platform. Alert rules begin monitoring immediately after creation.
</Info>

## *classmethod* get()

Retrieve an alert rule by its unique identifier.

Fetches an alert rule from the Fiddler platform using its UUID. This method
returns the complete alert rule configuration including thresholds, notification
settings, and monitoring status.

### Parameters

<ParamField path="id_" type="UUID | str" required={true}>
  The unique identifier (UUID) of the alert rule to retrieve.
  Can be provided as a UUID object or string representation.
</ParamField>

### Returns

<ResponseField type="AlertRule">
  The alert rule instance with all
  configuration and metadata populated from the server.
</ResponseField>

### Raises

* **NotFound** – If no alert rule exists with the specified ID.
* **ApiError** – If there's an error communicating with the Fiddler API.

### Example

```python theme={null}
# Retrieve alert rule by ID
alert_rule = AlertRule.get(id_="550e8400-e29b-41d4-a716-446655440000")
print(f"Alert: {alert_rule.name}")
print(f"Metric: {alert_rule.metric_id}")
print(f"Priority: {alert_rule.priority}")
print(f"Critical threshold: {alert_rule.critical_threshold}")

# Check notification configuration
notification_config = alert_rule.get_notification_config()
print(f"Email recipients: {notification_config.emails}")
```

<Info>
  This method makes an API call to fetch the latest alert rule configuration
  from the server, including any recent threshold or notification updates.
</Info>

## *classmethod* list()

Get a list of all alert rules in the organization.

### Parameters

<ParamField path="model_id" type="UUID | str" required={true}>
  list from the specified model
</ParamField>

<ParamField path="metric_id" type="UUID | str | None" required={false} default="None">
  list rules set on the specified metric id
</ParamField>

<ParamField path="columns" type="list[str] | None" required={false} default="None">
  list rules set on the specified list of columns
</ParamField>

<ParamField path="ordering" type="list[str] | None" required={false} default="None">
  order result as per list of fields. \["-field\_name"] for descending
</ParamField>

### Returns

<ResponseField type="Iterator[AlertRule]">
  paginated list of alert rules for the specified filters
</ResponseField>

## delete()

Delete an alert rule.

## create()

Create a new alert rule.

### Returns

`AlertRule`

## update()

Update an existing alert rule.

## enable\_notifications()

Enable notifications for an alert rule

## disable\_notifications()

Disable notifications for an alert rule

## set\_notification\_config()

Set notification config for an alert rule

### Parameters

<ParamField path="emails" type="list[str] | None" required={false} default="None">
  list of emails
</ParamField>

<ParamField path="pagerduty_services" type="list[str] | None" required={false} default="None">
  list of pagerduty services
</ParamField>

<ParamField path="pagerduty_severity" type="str | None" required={false} default="None">
  severity of pagerduty
</ParamField>

<ParamField path="webhooks" type="list[UUID] | None" required={false} default="None">
  list of webhooks UUIDs
</ParamField>

### Returns

<ResponseField type="NotificationConfig">
  NotificationConfig object
</ResponseField>

## get\_notification\_config()

Get notifications config for an alert rule

### Returns

<ResponseField type="NotificationConfig">
  NotificationConfig object
</ResponseField>
