import requests
url = "https://platform.ankra.app/api/v1/org/clusters/{cluster_id}/control-plane-self-heal"
payload = { "enabled": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled: true})
};
fetch('https://platform.ankra.app/api/v1/org/clusters/{cluster_id}/control-plane-self-heal', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request PUT \
--url https://platform.ankra.app/api/v1/org/clusters/{cluster_id}/control-plane-self-heal \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled": true
}
'{
"cluster_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"enabled": true,
"latest_incident": null
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "Cluster not found"
}Set control plane self-heal
Turns the automatic restart of a NotReady control plane on or off for this cluster (ankra cluster control-plane-heal enable|disable). While it is on, Ankra restarts a control plane through the cloud provider when it has been NotReady for about ten minutes, every other control plane is Ready, and etcd keeps its quorum without it; it never stops, deprovisions or scales anything, and shows each restart and its outcome in the cluster’s notifications and audit log. Turning it off leaves a NotReady control plane for you to handle. Every change is recorded in the organisation’s audit log; re-sending the current value changes nothing. Requires clusters.write on the cluster.
import requests
url = "https://platform.ankra.app/api/v1/org/clusters/{cluster_id}/control-plane-self-heal"
payload = { "enabled": True }
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.put(url, json=payload, headers=headers)
print(response.text)const options = {
method: 'PUT',
headers: {Authorization: 'Bearer <token>', 'Content-Type': 'application/json'},
body: JSON.stringify({enabled: true})
};
fetch('https://platform.ankra.app/api/v1/org/clusters/{cluster_id}/control-plane-self-heal', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));curl --request PUT \
--url https://platform.ankra.app/api/v1/org/clusters/{cluster_id}/control-plane-self-heal \
--header 'Authorization: Bearer <token>' \
--header 'Content-Type: application/json' \
--data '
{
"enabled": true
}
'{
"cluster_id": "3fa85f64-5717-4562-b3fc-2c963f66afa6",
"enabled": true,
"latest_incident": null
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": "Cluster not found"
}{
"detail": [
{
"loc": [
"<string>"
],
"msg": "<string>",
"type": "<string>"
}
]
}{
"detail": "Cluster not found"
}Authorizations
Bearer authentication header of the form Bearer <token>, where <token> is your auth token.
Headers
PAT organisation override.
Path Parameters
Body
Turns the automatic restart of a NotReady control plane on or off for one cluster.
Whether Ankra may restart a NotReady control plane of this cluster through its cloud provider. Must be a real boolean.
Response
Successful response
A cluster's control-plane self-heal switch and its latest NotReady episode.
The stored switch. On for every cluster until a member turns it off.
The most recent NotReady episode; null when the cluster never had one.
Show child attributes
Show child attributes
{
"node_name": "cp-1",
"state": "closed",
"outcome": "restored",
"reason": "the node is Ready and every etcd voter is serving",
"restart_attempts": 1,
"not_ready_since": "2026-10-13T08:02:00Z",
"last_restart_at": "2026-10-13T08:14:30Z",
"closed_at": "2026-10-13T08:19:10Z",
"mode": "active"
}