---
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`

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. ``stability_period_days`` is the SHARED monitoring horizon — it gates every axis's backoff window and the step-down cadence, so it is editable whenever at least one axis is enabled.
    - `restarts_after_shutdown` integer — Premature termination→restart pairs since apply that trigger an Auto Termination backoff. 3–10.
    - `stability_period_days` integer — Days monitored after a config change — the window each applied step (cold-start threshold included) must hold clean before the change counts as stable. 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' | 'revert_to_original' | 'no_action' | 'disable' — Action taken cluster-wide when a backoff triggers.
  - `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. ``stability_period_days`` is the SHARED monitoring horizon — it gates every axis's backoff window and the step-down cadence, so it is editable whenever at least one axis is enabled.
    - `restarts_after_shutdown` integer — Premature termination→restart pairs since apply that trigger an Auto Termination backoff. 3–10.
    - `stability_period_days` integer — Days monitored after a config change — the window each applied step (cold-start threshold included) must hold clean before the change counts as stable. 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' | 'revert_to_original' | 'no_action' | 'disable' — Action taken cluster-wide when a backoff triggers.
  - `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-02** `fcb62c79da95` — 1 info
  - endpoint added

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

---

[API](https://skmtc.dev/myaltimate/apis/fastapi.md) · [All operations](https://skmtc.dev/myaltimate/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/myaltimate/fastapi/revisions/fcb62c79da95/schema)
