> ## Documentation Index
> Fetch the complete documentation index at: https://docs.beaconcha.in/llms.txt
> Use this file to discover all available pages before exploring further.

# Withdrawal & Consolidation Request Fees (Current)

> Returns what it costs to submit a withdrawal or consolidation request to the execution layer right now: one entry per request type. The value is the fee that applies to the next block, so it is what your submission pays if it is included immediately.

Two request types carry such a fee, and `request_type` tells the entries apart — EIP-7002 requests, which are execution-layer triggered partial withdrawals and full exits, and EIP-7251 requests, which are consolidations and compounding switches. Deposits are free, so they do not appear here.

Both types are priced 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. The climb has no per-block ceiling, so a single busy block can raise the fee by orders of magnitude.

<Warning>
The fee reported here is not guaranteed to be sufficient by submission time, because it can still change in the block your transaction lands in. An overpayment is not refunded, and an underpayment makes the call revert. No fixed margin is safe in all conditions, so you must decide your own trade between paying above the reported value and risking a revert. Read the fee immediately before you submit, and during a congestion period read it again as close to submission as possible. To obtain the exact fee for a request you are about to submit, call the contract itself with empty calldata — that is the only authoritative source.
</Warning>

### Freshness

The fee is read approximately every 4 seconds, so a new execution layer block is normally picked up within a few seconds of it landing. Every entry carries the execution layer `block` and `timestamp` it was read at, so you can compare `timestamp` to the current time to judge its age. Because `timestamp` is the block's own time, a normal age is anywhere inside the current slot, and a missed slot adds a further slot to it.

This endpoint does not serve a fee it knows to be stale. If the underlying data stops advancing, it returns `503` instead of a `200` that carries an out-of-date value, because a fee that is too low makes your submission revert. Treat `503` as retryable, and do not fall back to a cached fee without a new age check.

The response always carries one entry per request type. It is never `200` with an empty `data` array: either both fees are known, or the endpoint answers `503`.

This endpoint describes only the present. For the fee history, see [/api/v2/ethereum/queues/request-fees](/api-reference/ethereum/queues/request-fees).




## OpenAPI

````yaml /v3/bundled.yaml post /api/v2/ethereum/queues/request-fees/current
openapi: 3.0.4
info:
  title: External Service API
  version: 1.0.3
servers:
  - url: https://beaconcha.in
    description: Production API
security:
  - ApiKeyAuth: []
paths:
  /api/v2/ethereum/queues/request-fees/current:
    post:
      tags:
        - Network
      summary: Withdrawal & Consolidation Request Fees (Current)
      description: >
        Returns what it costs to submit a withdrawal or consolidation request to
        the execution layer right now: one entry per request type. The value is
        the fee that applies to the next block, so it is what your submission
        pays if it is included immediately.


        Two request types carry such a fee, and `request_type` tells the entries
        apart — EIP-7002 requests, which are execution-layer triggered partial
        withdrawals and full exits, and EIP-7251 requests, which are
        consolidations and compounding switches. Deposits are free, so they do
        not appear here.


        Both types are priced 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. The climb has no per-block ceiling, so a single busy block can
        raise the fee by orders of magnitude.


        <Warning>

        The fee reported here is not guaranteed to be sufficient by submission
        time, because it can still change in the block your transaction lands
        in. An overpayment is not refunded, and an underpayment makes the call
        revert. No fixed margin is safe in all conditions, so you must decide
        your own trade between paying above the reported value and risking a
        revert. Read the fee immediately before you submit, and during a
        congestion period read it again as close to submission as possible. To
        obtain the exact fee for a request you are about to submit, call the
        contract itself with empty calldata — that is the only authoritative
        source.

        </Warning>


        ### Freshness


        The fee is read approximately every 4 seconds, so a new execution layer
        block is normally picked up within a few seconds of it landing. Every
        entry carries the execution layer `block` and `timestamp` it was read
        at, so you can compare `timestamp` to the current time to judge its age.
        Because `timestamp` is the block's own time, a normal age is anywhere
        inside the current slot, and a missed slot adds a further slot to it.


        This endpoint does not serve a fee it knows to be stale. If the
        underlying data stops advancing, it returns `503` instead of a `200`
        that carries an out-of-date value, because a fee that is too low makes
        your submission revert. Treat `503` as retryable, and do not fall back
        to a cached fee without a new age check.


        The response always carries one entry per request type. It is never
        `200` with an empty `data` array: either both fees are known, or the
        endpoint answers `503`.


        This endpoint describes only the present. For the fee history, see
        [/api/v2/ethereum/queues/request-fees](/api-reference/ethereum/queues/request-fees).
      operationId: GetQueueRequestFeesCurrent
      requestBody:
        $ref: '#/components/requestBodies/queueRequestFeesCurrentRequest'
      responses:
        '200':
          $ref: '#/components/responses/QueueRequestFeeCurrent'
        '400':
          $ref: '#/components/responses/BadRequest'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
        '405':
          $ref: '#/components/responses/MethodNotAllowed'
        '429':
          $ref: '#/components/responses/RateLimitExceeded'
        '500':
          $ref: '#/components/responses/InternalServerError'
        '503':
          $ref: '#/components/responses/ServiceUnavailable'
        default:
          $ref: '#/components/responses/DefaultError'
components:
  requestBodies:
    queueRequestFeesCurrentRequest:
      x-go-name: QueueRequestFeesCurrentRequestBody
      description: Specify the chain to query current request fees for.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/QueueRequestFeesCurrentRequest'
          example:
            chain: mainnet
  responses:
    QueueRequestFeeCurrent:
      description: Successful response containing the current request fees.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/QueueRequestFeeCurrent.ContainerList'
    BadRequest:
      description: Bad Request
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Bad request. Please check your input and try again.
    Unauthorized:
      description: Unauthorized
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Unauthorized. Please provide a valid API key.
    Forbidden:
      description: Forbidden
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: >-
              endpoint not allowed for your subscription tier. upgrade your
              subscription at https://beaconcha.in/pricing.
    NotFound:
      description: Not Found
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: The requested resource was not found.
    MethodNotAllowed:
      description: Method Not Allowed
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: 'method not allowed: GET. all public API endpoints use POST.'
    RateLimitExceeded:
      description: Rate Limit Exceeded
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Rate limit exceeded. Please try again later.
    InternalServerError:
      description: Internal Server Error
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: internal server error. please try again later.
    ServiceUnavailable:
      description: Service Unavailable
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: This data is temporarily unavailable. Retry shortly.
    DefaultError:
      description: An unexpected error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: An unexpected error occurred.
  schemas:
    QueueRequestFeesCurrentRequest:
      type: object
      properties:
        chain:
          $ref: '#/components/schemas/Chain'
      required:
        - chain
    QueueRequestFeeCurrent.ContainerList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/QueueRequestFeeCurrent.Data'
          description: >-
            Current fees, one entry per request contract. If a contract has not
            recorded any activity on the current block, it still appears in this
            array.
      required:
        - data
    Error:
      type: object
      properties:
        error:
          type: string
    Chain:
      type: string
      enum:
        - mainnet
        - hoodi
      default: mainnet
      description: The Ethereum chain to query.
    QueueRequestFeeCurrent.Data:
      type: object
      description: >
        The current fee for submitting a request to one EIP-7685 execution-layer
        request contract, as observed on the most recent execution layer block.
      properties:
        request_type:
          $ref: '#/components/schemas/ExecutionRequestType'
        fee:
          allOf:
            - $ref: '#/components/schemas/wei'
          description: >
            Fee in wei that the contract demands for a request included in the
            next block, which is what your submission pays if it is included
            immediately. The floor is 1 wei. A block that carries more
            submissions than the per-block target raises the fee immediately,
            and the rise has no per-block ceiling, so the fee can move by orders
            of magnitude in a single block; during a quiet period it decays back
            toward the floor. No fixed margin is safe: an overpayment is not
            refunded, and an underpayment makes the call revert. Read this value
            immediately before you submit, and during a congestion period read
            it again as close to submission as possible.
        block:
          allOf:
            - $ref: '#/components/schemas/Block'
          description: >-
            The execution layer block number this fee was read from. The fee
            applies to the block after this one.
        timestamp:
          allOf:
            - $ref: '#/components/schemas/timestamp'
          description: Unix timestamp of the execution layer block this fee was read from.
      required:
        - request_type
        - fee
        - block
        - timestamp
    ExecutionRequestType:
      type: string
      description: >
        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.
      enum:
        - withdrawal
        - consolidation
      example: consolidation
      x-enum-varnames:
        - ExecutionRequestTypeWithdrawal
        - ExecutionRequestTypeConsolidation
    wei:
      type: string
      description: Amount in wei (1 ETH = 10^18 wei)
      pattern: ^(0|-?[1-9][0-9]*)$
    Block:
      type: integer
      minimum: 0
      description: Block by number.
    timestamp:
      type: integer
      minimum: 0
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      description: >-
        Authorization header with value: Bearer YOUR_TOKEN. Refer to the [API
        Keys](/api/overview#api-keys) section to create your API key.

````