---
title: "Generate a Signed Voluntary Exit Message"
method: GET
path: "/v1/ethereum/{network}/signed-voluntary-exit"
tags: ["Ethereum"]
---

# Generate a Signed Voluntary Exit Message

`GET /v1/ethereum/{network}/signed-voluntary-exit`

Generates a voluntary exit message, but does not broadcast it to the network.
Instead, the signed message is returned as part of the response.
You can use the [Native Ubiquity API for Ethereum](https://docs.blockdaemon.com/reference/ethereum-native-api) to broadcast the message.

---

- An exit message can be generated shortly after staking, once the validator shows a status on the consensus layer, typically within 7 hours after paying the deposit.
- Broadcasting or executing the exit is only possible after the validator reaches active status and has completed the activation queue.

`Note`: The validator must remain active for a minimum of 256 epochs, or approximately 27 hours, as per the Ethereum protocol rules.

## Path parameters

- `network` 'mainnet' | 'hoodi', required — Ethereum network

## Query parameters

- `show_fork_version` boolean
- `validator_index` integer — Validator index
- `validator_public_key` string, hex — Public Key of an asymmetric key-pair.
- `epoch` integer — Earliest epoch when voluntary exit can be processed. If not provided the earliest possible epoch will be fetched from the network.

## Response `200`

Ethereum exit validator transaction response

- EthereumExitValidatorTx — Ethereum exit validator transaction response
  - `message` EthereumExitValidatorMessage, required — Ethereum exit validator message
    - `validator_pubkey` string, hex, required — Public Key of an asymmetric key-pair.
    - `validator_index` string, required — Validator index
    - `epoch` string, required — The numeric index of an [Ethereum epoch](https://ethereum.org/en/glossary/#epoch).
  - `signature` string, hex, required — Ethereum signature
  - `fork_version` string, required — A hex-encoded Ethereum fork version value. The fork versions values are unique for each network and each fork. As an example, here is the constants preset file for Mainnet: https://github.com/ethereum/consensus-specs/blob/dev/configs/mainnet.yaml

## Other responses

- `400` — Invalid request.
- `401` — Unauthorized
- `404` — validator not found
- `500` — Internal server error
- `503` — Insufficient validators available to process Stake Intent request

---

[API](https://skmtc.dev/blockdaemon/apis/staking-api.md) · [All operations](https://skmtc.dev/blockdaemon/apis/staking-api/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/blockdaemon/staking-api/revisions/f94e296a08a3/schema)
