# 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 %}
