---
title: "Save cluster-wide Auto Tune backoff/notification config"
method: PATCH
path: "/api/v1/databricks/clusters/{cluster_id}/auto-tune/config"
tags: ["DATABRICKS", "Databricks", "Databricks Clusters"]
---

# Save cluster-wide Auto Tune backoff/notification config

`PATCH /api/v1/databricks/clusters/{cluster_id}/auto-tune/config`

## Request

- Base URL: `https://api.myaltimate.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.myaltimate.com/api/v1/databricks/clusters/{cluster_id}/auto-tune/config`
- Auth: one of:
  - HTTP bearer
  - HTTP bearer

Persist the cluster-wide backoff + notification config. A plain
config write — never touches the axis toggles, never calls
Databricks, never triggers the pre-touch defaults capture.

## Path parameters

- `cluster_id` string, required

## Query parameters

- `instance_id` integer, required: Tenant instance ID (workspace)
- `workspace_id` string, nullable: Optional Databricks workspace_id to scope the lookup.
- `navigationSource` string, nullable

## Headers

- `x-tenant` string, required

## Request body

- ClusterAutoTuneConfigRequest: Request body for ``PATCH /databricks/clusters/{id}/auto-tune/config``.
  - `backoff_policy` ClusterAutoTuneBackoffPolicy: Cluster-wide backoff policy — the "when a change misbehaves" guardrail applying to every enabled optimization on the cluster. Stored under the ``backoff_policy`` key in ``databricks_auto_tune_configuration.configuration``. The integer defaults come straight from the backoff monitor's own env-overridable constants (``backoff_constants.py``) so the form's baselines always match what the pod actually enforces. Execution time and query latency are deliberately absent — neither signal applies to all-purpose clusters (no per-run baseline, no query stream). Each threshold belongs to one optimization axis and is editable only while that axis is enabled: ``restarts_after_shutdown`` to Auto Termination; ``cold_start_threshold_per_day`` to Min Worker Node Sizing. The per-step monitoring horizon is no longer configurable — each axis holds a fixed backoff window (``_window_days_for_axis`` in the monitor), so the step-down cadence is not user-tunable.
    - `restarts_after_shutdown` integer: Premature termination→restart pairs since apply that trigger an Auto Termination backoff. 3–10.
    - `cold_start_threshold_per_day` integer: Cold starts per UTC day that trigger a Min Worker Node Sizing backoff. 3–10.
    - `cold_start_threshold_pct` integer: Backoff sensitivity as a percent of the recommendation's observed pre-tune baseline rate — applied to BOTH axes (auto-terminate restart churn and worker-resize cold starts). 150 = trip when the post-apply rate exceeds 1.5x baseline. Min 100%.
    - `trigger_action` 'rollback': What a backoff does. Always 'rollback' (step back to the last config that ran clean); any other stored value reads as 'rollback'.
  - `notification_config` ClusterAutoTuneNotificationConfigWrite: Write-path variant with strict recipient validation. Kept separate from the base model deliberately: the base is also the READ shape for values already stored in JSONB, and a historical bad address must never brick config reads or the notification dispatcher — only new writes are held to ``EmailStr``.
    - `notify_backoffs_and_failures` boolean
    - `notify_changes_applied` boolean
    - `slack_enabled` boolean
    - `slack_channel_ids` integer[]
    - `email_enabled` boolean
    - `email_recipients` string[]

## Response `200`

Successful Response

- ClusterAutoTuneConfigResponse: Response for the cluster Auto Tune config read/write endpoints. ``entity_type`` is the discriminator this response shape carries so the same route family can be reused by SQL warehouses and job clusters later — only clusters wire a route to it today.
  - `backoff_policy` ClusterAutoTuneBackoffPolicy: Cluster-wide backoff policy — the "when a change misbehaves" guardrail applying to every enabled optimization on the cluster. Stored under the ``backoff_policy`` key in ``databricks_auto_tune_configuration.configuration``. The integer defaults come straight from the backoff monitor's own env-overridable constants (``backoff_constants.py``) so the form's baselines always match what the pod actually enforces. Execution time and query latency are deliberately absent — neither signal applies to all-purpose clusters (no per-run baseline, no query stream). Each threshold belongs to one optimization axis and is editable only while that axis is enabled: ``restarts_after_shutdown`` to Auto Termination; ``cold_start_threshold_per_day`` to Min Worker Node Sizing. The per-step monitoring horizon is no longer configurable — each axis holds a fixed backoff window (``_window_days_for_axis`` in the monitor), so the step-down cadence is not user-tunable.
    - `restarts_after_shutdown` integer: Premature termination→restart pairs since apply that trigger an Auto Termination backoff. 3–10.
    - `cold_start_threshold_per_day` integer: Cold starts per UTC day that trigger a Min Worker Node Sizing backoff. 3–10.
    - `cold_start_threshold_pct` integer: Backoff sensitivity as a percent of the recommendation's observed pre-tune baseline rate — applied to BOTH axes (auto-terminate restart churn and worker-resize cold starts). 150 = trip when the post-apply rate exceeds 1.5x baseline. Min 100%.
    - `trigger_action` 'rollback': What a backoff does. Always 'rollback' (step back to the last config that ran clean); any other stored value reads as 'rollback'.
  - `notification_config` ClusterAutoTuneNotificationConfig: Cluster-wide Auto Tune notification preferences. Stored under the ``notification_config`` key in ``databricks_auto_tune_configuration.configuration``. References Slack channel ids from the tenant's ``notifications`` table by reference only — never a webhook URL inline (see ``NotificationConfigPublic`` for the same redaction rule on the generic notifications settings page).
    - `notify_backoffs_and_failures` boolean
    - `notify_changes_applied` boolean
    - `slack_enabled` boolean
    - `slack_channel_ids` integer[]
    - `email_enabled` boolean
    - `email_recipients` string[]
  - `entity_type` string

## Other responses

- `403`: Not authorized
- `422`: Validation Error

## Changes

- **2026-09-30** `a1870d258a3a`: 5 breaking, 5 info
  - the `trigger_action` request property const value `rollback` was added
  - removed the enum value `disable` of the request property `backoff_policy/trigger_action`
  - removed the enum value `no_action` of the request property `backoff_policy/trigger_action`
  - removed the enum value `revert_to_original` of the request property `backoff_policy/trigger_action`
  - …6 more
- **2026-09-11** `70e0a3e5cb0d`: 2 warning
  - removed the request property `backoff_policy/stability_period_days`
  - removed the optional property `backoff_policy/stability_period_days` from the response with the `200` status
- **2026-09-02** `fcb62c79da95`: 1 info
  - endpoint added

[Operation history](https://skmtc.dev/myaltimate/apis/myaltimate-api/changes/api/v1/databricks/clusters/:cluster_id/auto-tune/config/patch.md)

---

[API](https://skmtc.dev/myaltimate/apis/myaltimate-api.md) - [All operations](https://skmtc.dev/myaltimate/apis/myaltimate-api/llms.txt) - [OpenAPI document](https://skmtc.dev/myaltimate/apis/myaltimate-api/revisions/727657ce54e9?raw)
