# BLS Withdrawal Changes

Validators with a type-0x00 withdrawal credential created with a BLS public key need to submit a `SignedBLSToExecutionChange` operation in order to withdraw rewards from the beacon chain.

{% hint style="info" %}
Rewards and validator duties are still performed regardless of withdrawal credential type. However, the validator balance will not get withdrawn to the execution layer until the validator has a type-0x01 withdrawal credential. Exits submitted before having a type-0x01 will stop validator duties but will not withdraw funds until a `SignedBLSToExecutionChange` is submitted.
{% endhint %}

## Submit signed withdrawal key changes

<mark style="color:orange;">`PUT`</mark> `https://mainnet.staked.cloud/api/delegations/ETH2/bls_to_execution_changes`

Submit a list of (decrypted) `SignedBLSToExecutionChange`s to submit to the beacon chain.

#### Request Headers

| Name                                        | Type   | Description                                                                                   |
| ------------------------------------------- | ------ | --------------------------------------------------------------------------------------------- |
| X-Api-Key<mark style="color:red;">\*</mark> | string | Your API key (preferred method of passing api key is now in headers rather than query params) |

#### Query Parameters

| Name                                       | Type   | Description                                                                                                                                                                              |
| ------------------------------------------ | ------ | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| api\_key<mark style="color:red;">\*</mark> | String | <p><strong>\[Deprecated since March '25</strong> (preferred method of passing api key is now in headers rather than query params)<strong>]</strong></p><p></p><p>Your Staked API key</p> |

#### Request Body

| Name                                  | Type  | Description                                     |
| ------------------------------------- | ----- | ----------------------------------------------- |
| \[]<mark style="color:red;">\*</mark> | Array | List of `SignedBLSToExecutionChange`s to submit |

{% tabs %}
{% tab title="200: OK Success" %}
All changes submitted successfully.

```json
{
    "count": 1,
    "numSuccesses": 1, 
    "failures": []
}
```

{% endtab %}

{% tab title="400: Bad Request Some failures" %}
Some changes failed to submit. The error for each failed change is returned. Ignored changes were successful.

```json
{
    "count": 2,
    "numSuccesses": 1, 
    "failures": [
        {
            "index": 0,
            "message": "invalid signature",
            "signedBLSToExecutionChange": SignedBLSToExecutionChange
        }
    ]
}
```

{% endtab %}
{% endtabs %}


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://staked.gitbook.io/staked/eth2/bls-withdrawal-changes.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
