---
type: api
title: Set upgrade_mode for transform indices
description: Sets a cluster wide upgrade_mode setting that prepares transform
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-transform-set-upgrade-mode
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/operation/operation-transform-set-upgrade-mode
products:
  - Elasticsearch
---

# Set upgrade_mode for transform indices

Availability: 8.18+

## Paths

- `POST` `/_transform/set_upgrade_mode`

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#apikeyauth)
- [Basic auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#basicauth)
- [Bearer auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch/v8/authentication#bearerauth)

## Description

Sets a cluster wide upgrade_mode setting that prepares transform
indices for an upgrade.
When upgrading your cluster, in some circumstances you must restart your
nodes and reindex your transform indices. In those circumstances,
there must be no transforms running. You can close the transforms,
do the upgrade, then open all the transforms again. Alternatively,
you can use this API to temporarily halt tasks associated with the transforms
and prevent new transforms from opening. You can also use this API
during upgrades that do not require you to reindex your transform
indices, though stopping transforms is not a requirement in that case.
You can see the current value for the upgrade_mode setting by using the get
transform info API.

## Required authorization

* Cluster privileges: `manage_transform`

## Query String Parameters

- `enabled` (boolean · default: false)
  When `true`, it enables `upgrade_mode` which temporarily halts all
transform tasks and prohibits new transform tasks from
starting.
- `timeout` (string Duration · default: 30s)
  The time to wait for the request to be completed.

## Response

`application/json`

- `acknowledged` (boolean)
  For a successful response, this value is always true. On failure, an exception is returned instead.
## Code Examples

#### Console

```console
POST _transform/set_upgrade_mode?enabled=true
```

#### JavaScript

```javascript
const response = await client.transform.setUpgradeMode({
  enabled: "true",
});
```

#### Python

```python
resp = client.transform.set_upgrade_mode(
    enabled=True,
)
```

#### curl

```curl
curl -X POST "$ELASTICSEARCH_URL/_transform/set_upgrade_mode?enabled=true" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY"
```

#### C#

```c#
var response = await client.TransformManagement
    .SetUpgradeModeAsync(d1 => d1
        .Enabled(true)
    );
```

#### PHP

```php
$resp = $client->transform()->setUpgradeMode([
    "enabled" => "true",
]);
```

#### Ruby

```ruby
response = client.transform.set_upgrade_mode(
  enabled: "true"
)
```

