Withdrawal & Consolidation Request Fees
Returns what it costs to submit a withdrawal or consolidation request to the execution layer, as observed history: one entry per execution layer block that saw at least one request, most recent block first.
Two contracts charge such a fee, and type_filter selects between them — the EIP-7002 contract for execution-layer triggered partial withdrawals and full exits, and the EIP-7251 contract for consolidations and compounding switches. Deposits are free, so they do not appear here. Every request that a validator queue endpoint reports as pending paid one of these fees.
Both contracts price requests with an EIP-1559 style mechanism: the fee starts at a floor of 1 wei and climbs exponentially while submissions exceed the per-block target, then decays back toward the floor once demand drops. A mass exit or mass consolidation event therefore lifts the fee well above the floor for as long as it lasts. Operators batching many exits or consolidations can use this history to judge whether they are submitting into such a period.
What these numbers are, and what they are not
This endpoint reports fees actually paid, derived from the value sent with each request transaction. It is not a fee oracle and does not read the contracts’ current fee.
fee_minis the best available estimate of the protocol-required fee in that block, because no submitter can pay less than the contract demands.fee_maxmay exceed it. The contracts do not refund an overpayment, and some tooling deliberately overpays so the transaction still succeeds if the fee rises between signing and inclusion.- Blocks with no requests are absent from the response. A gap does not mean the fee is unknown: with no submissions the fee decays deterministically toward the 1 wei floor, so a long gap implies the fee has returned to the floor.
Results can be filtered by a time range and are paginated. Omit range to cover the whole available history starting at the most recent block; this endpoint is network-wide, so no validator selection is involved. Supply a range to reach a past congestion event instead of paging back to it. The range in the response reports the span the returned entries actually cover, not the span you asked for.
You can combine this endpoint with:
- Inspect the individual requests that paid these fees, and the fee each one paid: /api/v2/ethereum/slot/consolidations and /api/v2/ethereum/slot/withdrawals
- Check the fee environment your own validators’ requests were submitted into, using the execution layer block from their
stage_history: /api/v2/ethereum/validators/queues/consolidations
Data is available from the Pectra fork (7 May 2025) onwards. On mainnet the first consolidation request was submitted in execution layer block 22431119 and the first withdrawal request in block 22431159, both on 7 May 2025. A range that falls entirely before Pectra returns 200 with an empty data array.
Authorizations
Body
range and type_filter are optional in this request body
The Ethereum chain to query.
mainnet, hoodi Specify a time range using either Unix timestamps or epoch numbers. If left null, the API will query the entire available history of the selected validators.
- Unix Timestamp
- Epoch
- Slot
Filter results to one or more request contracts. If omitted, both contracts are returned and a block that saw activity on both contributes one entry per contract.
Which EIP-7685 execution-layer request contract the fee applies to.
withdrawal: the EIP-7002 withdrawal request contract (0x00000961Ef480Eb55e80D19ad83579A64c007002), used for execution-layer triggered partial withdrawals and full exits.consolidation: the EIP-7251 consolidation contract (0x0000BBdDc7CE488642fb579F8B00f3a590007251), used for both consolidations and compounding switches.
Deposits (EIP-6110) are not listed: the deposit contract charges no request fee.
withdrawal, consolidation Cursor value for pagination. See our pagination guide for more details.
The number of items to return per page.
1 <= x <= 10Response
Successful response.
Response containing the fees observed per execution layer block for EIP-7002 and EIP-7251 requests, most recent block first.
The time span actually covered by the returned results — from the first to the last matching data point — specified in slots, epochs, and Unix timestamps.
This reflects the data that was found, not the range that was queried. When no data is found, it falls back to the requested range, or to the full available history if no range was given.
For arbitrary (custom) time-range queries the queried range is expanded outward to whole UTC days, so the covered range may be wider than requested. As stated above, the reported range still reflects the data that was actually found — a touched UTC day with no data for the selected validators will not extend it.

