---
type: api
title: Add an index block
description: Add an index block to an index.
url: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/operation/operation-indices-add-block
resource: https://www.elastic.co/elastic/docs-builder/docs/4493/api/doc/elasticsearch/operation/operation-indices-add-block
products:
  - Elasticsearch
---

# Add an index block

Availability: Generally available since 7.9

## Paths

- `PUT` `/{index}/_block/{block}`

#### Path parameters

- `index` (union string | string[]) — required
  A comma-separated list or wildcard expression of index names used to limit the request.
By default, you must explicitly name the indices you are adding blocks to.
To allow the adding of blocks to indices with `_all`, `*`, or other wildcard expressions, change the `action.destructive_requires_name` setting to `false`.
You can update this setting in the `elasticsearch.yml` file or by using the cluster update settings API.
- `block` (enum) — required
  The block type to add to the index.

Supported values include:
  - `metadata`: Disable metadata changes, such as closing the index.
  - `read`: Disable read operations.
  - `read_only`: Disable write operations and metadata changes.
  - `write`: Disable write operations. However, metadata changes are still allowed.
  Values: `metadata`, `read`, `read_only`, `write`

## Description

Add an index block to an index.
Index blocks limit the operations allowed on an index by blocking specific operation types.

## Authentication

- Api key: `Authorization: <value>`
  Elasticsearch APIs support key-based authentication.
  You must create an API key and use the encoded value in the request header.
  For example:
  
  
  ```
  curl -X GET "${ES_URL}/_cat/indices?v=true" \
    -H "Authorization: ApiKey ${API_KEY}"
  ```
  
  To get API keys, use the `/_security/api_key` APIs.
- Basic: `Authorization: Basic <credentials>`
- Bearer: `Authorization: Bearer <token>`
  Elasticsearch APIs support the use of bearer tokens in the `Authorization` HTTP header to authenticate with the API.
  For examples, refer to [Token-based authentication services](https://www.elastic.co/docs/deploy-manage/users-roles/cluster-or-deployment-auth/token-based-authentication-services)

## Query string parameters

- `allow_no_indices` (boolean · default: true) — optional
  A setting that does two separate checks on the index expression.
If `false`, the request returns an error (1) if any wildcard expression
(including `_all` and `*`) resolves to zero matching indices or (2) if the
complete set of resolved indices, aliases or data streams is empty after all
expressions are evaluated. If `true`, index expressions that resolve to no
indices are allowed and the request returns an empty result.
- `expand_wildcards` (string · default: open) — optional
  The type of index that wildcard patterns can match.
If the request can target data streams, this argument determines whether wildcard expressions match hidden data streams.
It supports comma-separated values, such as `open,hidden`.

Supported values include:
  - `all`: Match any data stream or index, including hidden ones.
  - `open`: Match open, non-hidden indices. Also matches any non-hidden data stream.
  - `closed`: Match closed, non-hidden indices. Also matches any non-hidden data stream. Data streams cannot be closed.
  - `hidden`: Match hidden data streams and hidden indices. Must be combined with `open`, `closed`, or `both`.
  - `none`: Wildcard expressions are not accepted.
  Values: `all`, `open`, `closed`, `hidden`, `none`
- `ignore_unavailable` (boolean · default: false) — optional
  If `false`, the request returns an error if it targets a concrete (non-wildcarded)
index, alias, or data stream that is missing, closed, or otherwise unavailable.
If `true`, unavailable concrete targets are silently ignored.
- `master_timeout` (string · default: 30s) — optional
  The period to wait for the master node.
If the master node is not available before the timeout expires, the request fails and returns an error.
It can also be set to `-1` to indicate that the request should never timeout.
- `timeout` (string · default: 30s) — optional
  The period to wait for a response from all relevant nodes in the cluster after updating the cluster metadata.
If no response is received before the timeout expires, the cluster metadata update still applies but the response will indicate that it was not completely acknowledged.
It can also be set to `-1` to indicate that the request should never timeout.

## Response

`application/json`

- `acknowledged` (boolean)
- `shards_acknowledged` (boolean)
- `indices` (object[])
  - `name` (string)
  - `blocked` (boolean)
## Code examples

#### Console

```console
PUT /my-index-000001/_block/write
```

#### JavaScript

```javascript
const response = await client.indices.addBlock({
  index: "my-index-000001",
  block: "write",
});
```

#### Python

```python
resp = client.indices.add_block(
    index="my-index-000001",
    block="write",
)
```

#### curl

```curl
curl -X PUT "$ELASTICSEARCH_URL/my-index-000001/_block/write" \
  -H "Authorization: ApiKey $ELASTIC_API_KEY"
```

#### Java

```java
client.indices().addBlock(a -> a
    .block(IndicesBlockOptions.Write)
    .index("my-index-000001")
);
```

#### PHP

```php
$resp = $client->indices()->addBlock([
    "index" => "my-index-000001",
    "block" => "write",
]);
```

#### Ruby

```ruby
response = client.indices.add_block(
  index: "my-index-000001",
  block: "write"
)
```

## Response examples

#### Indices add block response example1

A successful response from `PUT /my-index-000001/_block/write`, which adds an index block to an index.'

```json
{
  "acknowledged" : true,
  "shards_acknowledged" : true,
  "indices" : [ {
    "name" : "my-index-000001",
    "blocked" : true
  } ]
}
```

