---
type: api
title: Remove an index block
description: Remove an index block from an index.
url: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch-serverless/operation/operation-indices-remove-block
resource: https://www.elastic.co/elastic/docs-builder/docs/4371/api/doc/elasticsearch-serverless/operation/operation-indices-remove-block
products:
  - Elasticsearch Serverless
---

# Remove an index block

Availability:

## Paths

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

- [Api key auth](/elastic/docs-builder/docs/4371/api/doc/elasticsearch-serverless/authentication#apikeyauth)

#### Path Parameters

- `index` (union IndexName | [] IndexName)
  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 removing blocks from.
To allow the removal of blocks from 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 IndicesBlockOptions)
  The block type to remove from 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

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

## Required authorization

* Index privileges: `manage`

## Query String Parameters

- `allow_no_indices` (boolean · default: true)
  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 ExpandWildcards · default: open)
  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)
  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 Duration · default: 30s)
  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 Duration · default: 30s)
  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)
- `indices` ([] RemoveIndicesBlockStatus)
  - `name` (string IndexName)
  - `unblocked` (boolean)
  - `exception` ({} ErrorCause)
    - `type` (string)
      The type of error
    - `reason` (union string) — nullable
      A human-readable explanation of the error, in English.
      One of: `string`
    - `stack_trace` (string)
      The server stack trace. Present only if the `error_trace=true` parameter was sent with the request.
    - `caused_by` ({} ErrorCause) — recursive
      Same fields as `exception` in `indices`
    - `root_cause` ([] ErrorCause) — recursive
      Same fields as `exception` in `indices`
    - `suppressed` ([] ErrorCause) — recursive
      Same fields as `exception` in `indices`
## Code Examples

#### Console

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

#### JavaScript

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

#### Python

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

#### curl

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

#### Java

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

#### C#

```c#
var response = await client.Indices.RemoveBlockAsync(indices: new[] { "my-index-000001" }, block: IndicesBlockOptions.Write);
```

#### PHP

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

#### Ruby

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

## Response Examples

#### Indices remove block response example1

A successful response from `DELETE /my-index-000001/_block/write`, which removes an index block from an index.'

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

