---
updatedAt: 2026-05-20T06:31:15.000Z
---

Fetch the complete documentation index at: https://docs.blockdaemon.com/llms.txt. Use this file to discover all available pages before exploring further. Append .md to any documentation page URL to get its markdown version.

# Generate a validator full exit intent message

Generates an exit message that a user can sign as part of an exit transaction and submit to the official Ethereum
withdrawal smart contract. The response includes the withdrawal contract address for the specified network in the
request path.

To successfully submit an exit withdrawal intent, the validator must meet the following conditions:
- The withdrawal credentials prefix must be either '0x01' or '0x02' and contain the withdrawal address.
- The validator must be in an active state and have been active for at least 256 epochs.
- The validator's balance must be greater than '0' Gwei.
- There must be no pending partial withdrawals with a total sum exceeding '0' Gwei.

**Important:** A successful transaction to the withdrawal smart contract does not guarantee that the validator will
exit on the Consensus Layer (CL), as validator state changes may affect the process. Standard gas fees will apply
regardless of the CL outcome.


# OpenAPI definition

```json
{
  "openapi": "3.1.0",
  "info": {
    "version": "1.0.0",
    "title": "Staking API",
    "description": "The Blockdaemon Staking API simplifies and streamlines institutional cryptocurrency staking. The API allows developers to interact with blockchain networks and perform various staking-related operations, such as delegating and undelegating tokens, in a single, unified interface.\n\nWith the Staking API, you can quickly and easily build and deploy applications that automate staking activities and increase efficiency in your blockchain operations.",
    "contact": {
      "name": "Blockdaemon",
      "email": "info@blockdaemon.com",
      "url": "https://blockdaemon.com"
    },
    "x-logo": {
      "url": "https://assets-global.website-files.com/633c5e06513fa35f3391a5f9/645d33beb6fa65f6cfb95eb8_BD%20Logo%20Stack%20-%20Purple.svg",
      "backgroundColor": "#fafafa",
      "altText": "Blockdaemon logo"
    }
  },
  "x-readme": {
    "explorer-enabled": false
  },
  "servers": [
    {
      "url": "https://svc.blockdaemon.com/boss"
    }
  ],
  "components": {
    "securitySchemes": {
      "ApiKeyAuth": {
        "description": "When signing up for a staking account, you are provided with an API key.\n\nTo authenticate a Staking API request, pass your API key in the `X-API-Key` header.",
        "type": "apiKey",
        "in": "header",
        "name": "X-API-KEY"
      }
    },
    "parameters": {
      "EthereumNetwork": {
        "name": "network",
        "in": "path",
        "description": "Ethereum network",
        "required": true,
        "schema": {
          "$ref": "#/components/schemas/EthereumNetwork"
        }
      }
    },
    "responses": {
      "InternalServerError": {
        "description": "Internal server error.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "InvalidRequest": {
        "description": "Invalid request.",
        "content": {
          "application/json": {
            "schema": {
              "type": "object",
              "description": "Error response envelope",
              "required": [
                "code",
                "message"
              ],
              "properties": {
                "code": {
                  "type": "integer",
                  "format": "int32",
                  "description": "Error code",
                  "example": 400
                },
                "message": {
                  "type": "string",
                  "description": "Error Message",
                  "example": "Detailed human-readable diagnostic message regarding any invalid request parameters"
                }
              }
            }
          }
        }
      },
      "NoValidatorsError": {
        "description": "Insufficient validators available to process Stake Intent request",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/Error"
            }
          }
        }
      },
      "Unauthorized": {
        "description": "Header 'X-API-Key' missing.",
        "content": {
          "application/json": {
            "schema": {
              "$ref": "#/components/schemas/UnauthorizedError"
            }
          }
        }
      }
    },
    "schemas": {
      "CommonWithdrawalResponse": {
        "type": "object",
        "required": [
          "withdraw_intent_id",
          "customer_id"
        ],
        "properties": {
          "withdraw_intent_id": {
            "$ref": "#/components/schemas/WithdrawIntentId"
          },
          "customer_id": {
            "$ref": "#/components/schemas/CustomerId"
          }
        }
      },
      "CustomerId": {
        "type": "string",
        "description": "Unique identifier for a customer",
        "example": "SatoshiNakamoto-xUYJbPw9hw",
        "minimum": 1
      },
      "Error": {
        "type": "object",
        "description": "Error response envelope",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32",
            "description": "Error code",
            "example": 500
          },
          "message": {
            "type": "string",
            "description": "Error Message",
            "example": "A descriptive error message"
          }
        }
      },
      "EthereumAddress": {
        "type": "string",
        "description": "Hex-encoded Ethereum [account or smart contract address](https://ethereum.org/en/developers/docs/accounts/).",
        "format": "hex",
        "pattern": "^0x[a-fA-F0-9]{40}$",
        "example": "0x00000000219ab540356cBB839Cbe05303d7705Fa"
      },
      "EthereumNetwork": {
        "type": "string",
        "description": "Ethereum network",
        "enum": [
          "mainnet",
          "hoodi"
        ]
      },
      "EthereumWithdrawalCredentials": {
        "type": "string",
        "format": "hex",
        "pattern": "^0x0(0|1)[a-fA-F0-9]{62}$",
        "example": "0x0092c20062cee70389f1cb4fa566a2be5e2319ff43965db26dbaa3ce90b9df99",
        "description": "Hexadecimal encoded [withdrawal credentials](https://github.com/ethereum/consensus-specs/blob/master/specs/phase0/validator.md#withdrawal-credentials) which can be either a BLS public key or an Ethereum account address.\n\nThis parameter currently accepts ETH1 and BLS withdrawal credentials, but it is considered deprecated after the Capella/Shanghai fork. All users are now advised to use an ETH1 withdrawal address, specified through the `withdrawal_address` parameter as this is required to enable the ongoing accrual of rewards.\n\nFor more information regarding creating withdrawal credentials, please see the official [Ethereum Launchpad FAQ](https://launchpad.ethereum.org/en/faq#withdrawal-credentials)."
      },
      "Gwei": {
        "type": "string",
        "description": "Amount of ETH (denominated in Gwei).",
        "pattern": "^[1-9]\\d{10,}$",
        "example": "32000000000"
      },
      "NewWithdrawalEthereum": {
        "type": "object",
        "description": "Required data for Ethereum full withdrawal",
        "required": [
          "withdrawal_address",
          "validator"
        ],
        "properties": {
          "withdrawal_address": {
            "$ref": "#/components/schemas/EthereumAddress"
          },
          "validator": {
            "$ref": "#/components/schemas/EthereumValidatorPublicKey"
          }
        }
      },
      "PublicKey": {
        "type": "string",
        "description": "A BLS public Key.",
        "format": "base64",
        "example": "0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c"
      },
      "UnauthorizedError": {
        "type": "object",
        "description": "Error response envelope",
        "required": [
          "code",
          "message"
        ],
        "properties": {
          "code": {
            "type": "integer",
            "format": "int32",
            "description": "Error code",
            "example": 401
          },
          "message": {
            "type": "string",
            "description": "Error Message",
            "example": "A human-readable diagnostic message detailing any authorization failure"
          }
        }
      },
      "WithdrawIntentId": {
        "type": "string",
        "format": "uuid",
        "description": "Unique idenifier for a withdrawal intent.",
        "example": "4ba06e89-8c29-483e-ac36-318de5aa7364"
      },
      "EthereumValidatorPublicKey": {
        "type": "string",
        "description": "Public Key of an asymmetric key-pair.",
        "format": "hex",
        "example": "0xa1d1ad0714035353258038e964ae9675dc0252ee22cea896825c01458e1807bfad2f9969338798548d9858a571f7425c"
      },
      "WithdrawalIntentEthereum": {
        "type": "object",
        "description": "Ethereum Full Withdraw response",
        "required": [
          "validator",
          "amount",
          "withdrawal_address",
          "withdrawal_credentials",
          "unsigned_data",
          "contract_address",
          "estimated_gas"
        ],
        "properties": {
          "validator": {
            "$ref": "#/components/schemas/PublicKey"
          },
          "amount": {
            "$ref": "#/components/schemas/Gwei"
          },
          "withdrawal_address": {
            "$ref": "#/components/schemas/EthereumAddress"
          },
          "withdrawal_credentials": {
            "$ref": "#/components/schemas/EthereumWithdrawalCredentials"
          },
          "unsigned_data": {
            "$ref": "#/components/schemas/EthereumUnsignedDataEthereum"
          },
          "contract_address": {
            "$ref": "#/components/schemas/EthereumAddress"
          },
          "estimated_gas": {
            "$ref": "#/components/schemas/EthereumGas"
          }
        }
      },
      "EthereumGas": {
        "type": "integer",
        "description": "Gas estimation of the transaction",
        "format": "uint64",
        "example": 1001
      },
      "EthereumProtocol": {
        "type": "string",
        "description": "Ethereum protocol",
        "enum": [
          "ethereum"
        ]
      },
      "EthereumWithdrawalResponse": {
        "allOf": [
          {
            "$ref": "#/components/schemas/CommonWithdrawalResponse"
          },
          {
            "type": "object",
            "description": "Result of a new withdrawal intent request.",
            "required": [
              "protocol",
              "network"
            ],
            "properties": {
              "protocol": {
                "$ref": "#/components/schemas/EthereumProtocol"
              },
              "network": {
                "$ref": "#/components/schemas/EthereumNetwork"
              },
              "ethereum": {
                "$ref": "#/components/schemas/WithdrawalIntentEthereum"
              }
            }
          }
        ]
      },
      "EthereumUnsignedDataEthereum": {
        "type": "string",
        "format": "base64",
        "description": "Generated Ethereum unsigned transaction data",
        "example": "0x91eb7c6836583b3f019eeffd4d0663a996d75f61f93567bd38fa36a78e2f57eb9ba338cbb338a55ccf94171cc9895c400000032000000000"
      }
    }
  },
  "security": [
    {
      "ApiKeyAuth": []
    }
  ],
  "paths": {
    "/v1/ethereum/{network}/withdrawal-intents/exit": {
      "parameters": [
        {
          "$ref": "#/components/parameters/EthereumNetwork"
        }
      ],
      "post": {
        "summary": "Generate a validator full exit intent message",
        "operationId": "postEthereumWithdrawalIntentExit",
        "tags": [
          "Ethereum"
        ],
        "description": "Generates an exit message that a user can sign as part of an exit transaction and submit to the official Ethereum\nwithdrawal smart contract. The response includes the withdrawal contract address for the specified network in the\nrequest path.\n\nTo successfully submit an exit withdrawal intent, the validator must meet the following conditions:\n- The withdrawal credentials prefix must be either '0x01' or '0x02' and contain the withdrawal address.\n- The validator must be in an active state and have been active for at least 256 epochs.\n- The validator's balance must be greater than '0' Gwei.\n- There must be no pending partial withdrawals with a total sum exceeding '0' Gwei.\n\n**Important:** A successful transaction to the withdrawal smart contract does not guarantee that the validator will\nexit on the Consensus Layer (CL), as validator state changes may affect the process. Standard gas fees will apply\nregardless of the CL outcome.\n",
        "requestBody": {
          "required": true,
          "content": {
            "application/json": {
              "schema": {
                "$ref": "#/components/schemas/NewWithdrawalEthereum"
              }
            }
          }
        },
        "responses": {
          "200": {
            "description": "Created",
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/EthereumWithdrawalResponse"
                }
              }
            }
          },
          "400": {
            "$ref": "#/components/responses/InvalidRequest"
          },
          "401": {
            "$ref": "#/components/responses/Unauthorized"
          },
          "500": {
            "$ref": "#/components/responses/InternalServerError"
          },
          "503": {
            "$ref": "#/components/responses/NoValidatorsError"
          }
        },
        "security": [
          {
            "ApiKeyAuth": []
          }
        ]
      }
    }
  },
  "tags": [
    {
      "name": "Ethereum",
      "description": "Ethereum endpoints"
    }
  ]
}
```