> ## 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.

# Validator Queue ETA

> Provides a rough overview of staking-related queue positions (deposit, exit, full withdrawal, consolidation, compounding switch) and estimated wait times for the selected set of validators.

**Use case guide:** [Queue tracking](/use-cases/queue-tracking) explains when to use per-validator ETAs and how they complement the network queue view.

Uses the same unified schema as the network-level queue endpoint

The `estimated_processed_at` field in each queue always refers to the very last item for that validator.
For example, if a validator has multiple pending deposits, `estimated_processed_at` in `deposit_queue` refers to when the last deposit will be processed.

For network-wide queue statistics across all validators, see
[/api/v2/ethereum/queues](/api-reference/ethereum/queues).




## OpenAPI

````yaml /v3/bundled.yaml post /api/v2/ethereum/validators/queues
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/validators/queues:
    post:
      tags:
        - Network
      summary: Validator Queue ETA
      description: >
        Provides a rough overview of staking-related queue positions (deposit,
        exit, full withdrawal, consolidation, compounding switch) and estimated
        wait times for the selected set of validators.


        **Use case guide:** [Queue tracking](/use-cases/queue-tracking) explains
        when to use per-validator ETAs and how they complement the network queue
        view.


        Uses the same unified schema as the network-level queue endpoint


        The `estimated_processed_at` field in each queue always refers to the
        very last item for that validator.

        For example, if a validator has multiple pending deposits,
        `estimated_processed_at` in `deposit_queue` refers to when the last
        deposit will be processed.


        For network-wide queue statistics across all validators, see

        [/api/v2/ethereum/queues](/api-reference/ethereum/queues).
      operationId: GetValidatorStakingQueues
      requestBody:
        $ref: '#/components/requestBodies/validatorChainCursorPageSize'
      responses:
        '200':
          $ref: '#/components/responses/ValidatorQueueStats2'
        '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'
        default:
          $ref: '#/components/responses/DefaultError'
components:
  requestBodies:
    validatorChainCursorPageSize:
      content:
        application/json:
          schema:
            allOf:
              - $ref: '#/components/schemas/ValidatorChainCursorPageSizeBase'
              - type: object
                required:
                  - validator
  responses:
    ValidatorQueueStats2:
      description: Successful response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/ValidatorQueueStats2.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.
    DefaultError:
      description: An unexpected error response.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: An unexpected error occurred.
  schemas:
    ValidatorChainCursorPageSizeBase:
      type: object
      properties:
        chain:
          $ref: '#/components/schemas/Chain'
        cursor:
          $ref: '#/components/schemas/Cursor'
        page_size:
          $ref: '#/components/schemas/PageSize'
        validator:
          $ref: '#/components/schemas/validatorsSelector'
    ValidatorQueueStats2.ContainerList:
      type: object
      properties:
        data:
          type: array
          items:
            $ref: '#/components/schemas/ValidatorQueueStats2.Data'
        paging:
          $ref: '#/components/schemas/Paging'
          description: Pagination information
      description: Response containing unified queue overview for the requested validators.
      required:
        - data
    Error:
      type: object
      properties:
        error:
          type: string
    Chain:
      type: string
      enum:
        - mainnet
        - hoodi
      default: mainnet
      description: The Ethereum chain to query.
    Cursor:
      type: string
      description: >-
        Cursor value for pagination. See our [pagination guide](/api/pagination)
        for more details.
      default: ''
    PageSize:
      type: integer
      description: The number of items to return per page.
      minimum: 1
      maximum: 10
      default: 10
    validatorsSelector:
      description: >-
        Free selectors available to all users:

        - validator_identifiers: One or more validator indices or public keys to
        filter by.

        - dashboard_id: Your beaconcha.in dashboard ID (requires a free
        account).
          
        **Premium selectors** for Scale & Enterprise plans
        (https://beaconcha.in/pricing):

        - withdrawal: The validator's withdrawal credential or the Ethereum
        wallet address used for withdrawals.

        - deposit_address: The Ethereum wallet address used for the validator's
        deposit.

        - entity: The name of the assigned entity (e.g., "Lido", "Coinbase").
        Optionally include `sub_entity` for more specific filtering. Matching is
        case-sensitive.


        Note: The set of validators matched by `deposit_address` and
        `withdrawal` selectors is updated once per epoch (~6.4 minutes). Newly
        deposited validators may take up to one epoch to appear in query
        results.


        Note: The set of validators matched by `entity` selector is updated once
        per day.
          
      oneOf:
        - $ref: '#/components/schemas/ValidatorsByIdentifiers'
        - $ref: '#/components/schemas/ValidatorsByDashboard'
        - $ref: '#/components/schemas/ValidatorsByDeposit'
        - $ref: '#/components/schemas/ValidatorsByWithdrawal'
        - $ref: '#/components/schemas/ValidatorsByEntity'
    ValidatorQueueStats2.Data:
      type: object
      properties:
        validator:
          $ref: '#/components/schemas/validator'
        deposit_queue:
          $ref: '#/components/schemas/QueueEntry.DepositQueue'
        exit_queue:
          $ref: '#/components/schemas/QueueEntry.ExitQueue'
        manual_withdrawal_queue:
          $ref: '#/components/schemas/ValidatorQueueEntry.ManualWithdrawal'
        withdrawal_sweep:
          $ref: '#/components/schemas/ValidatorQueueEntry.WithdrawalSweep'
        consolidation_queue:
          $ref: '#/components/schemas/ValidatorQueueStats2.Consolidation'
        compounding_switch_queue:
          $ref: '#/components/schemas/ValidatorQueueStats2.CompoundingSwitch'
        finality:
          $ref: '#/components/schemas/FinalityParamsOnlyNoFinalization'
      required:
        - validator
        - finality
    Paging:
      type: object
      properties:
        next_cursor:
          description: >-
            Cursor to the next page of results. See our [pagination
            guide](/api/pagination) for more details. If empty, there are no
            more pages to fetch.
          type: string
    ValidatorsByIdentifiers:
      type: object
      title: Indices/Pubkeys
      properties:
        validator_identifiers:
          $ref: '#/components/schemas/validatorIndexPublicKeys'
      required:
        - validator_identifiers
    ValidatorsByDashboard:
      type: object
      title: Dashboard
      properties:
        dashboard_id:
          $ref: '#/components/schemas/dashboardID'
        group_id:
          $ref: '#/components/schemas/dashboardGroupID'
      required:
        - dashboard_id
    ValidatorsByDeposit:
      type: object
      title: 💎 Deposit
      properties:
        deposit_address:
          $ref: '#/components/schemas/ExecutionLayerAddress'
      required:
        - deposit_address
    ValidatorsByWithdrawal:
      type: object
      title: 💎 Withdrawal
      properties:
        withdrawal:
          $ref: '#/components/schemas/AddressOrCredential'
      required:
        - withdrawal
    ValidatorsByEntity:
      type: object
      title: 💎 Entity
      description: >
        Select validators by their assigned entity (e.g., staking provider) and
        optionally a sub-entity.

        Entity and sub-entity names are matched exactly and are case-sensitive.
      properties:
        entity:
          type: string
          description: >
            The name of the entity to filter validators by (e.g., "Lido",
            "Coinbase"). Matching is case-sensitive; use the exact name as
            returned by the entities overview endpoint.
        sub_entity:
          type: string
          description: >
            Optional sub-entity name to further filter validators within the
            entity. Matching is case-sensitive; use the exact name as returned
            by the sub-entities overview endpoint.
      required:
        - entity
    validator:
      type: object
      properties:
        index:
          allOf:
            - $ref: '#/components/schemas/validatorIndex'
          nullable: true
        public_key:
          $ref: '#/components/schemas/validatorPublicKey'
    QueueEntry.DepositQueue:
      type: object
      nullable: true
      description: >
        Deposit queue statistics.

        For the network aggregate, this represents the entire deposit queue.

        For individual validators, this represents the validator's position in
        the deposit queue.

        The `estimated_processed_at` always refers to the very last deposit
        being referenced

        (for the network: end of the network queue; for a validator with
        multiple deposits: when the last deposit is processed).


        For a detailed per-validator breakdown of all individual deposits,

        see
        [/api/v2/ethereum/validators/queues/deposits](/api-reference/ethereum/validators/queues/deposits).
      properties:
        deposit_count:
          $ref: '#/components/schemas/count'
          description: >
            Total number of new validator deposits currently in the queue
            (excludes top-ups).
          nullable: true
        deposit_balance:
          description: >-
            Total balance of new validator deposits in the queue (excludes
            top-ups).
          allOf:
            - $ref: '#/components/schemas/wei'
          nullable: true
        topup_count:
          $ref: '#/components/schemas/count'
          description: >
            Total number of top-up deposits currently in the queue (excludes new
            validator deposits).
          nullable: true
        topup_balance:
          description: >-
            Total balance of top-up deposits in the queue (excludes new
            validator deposits).
          allOf:
            - $ref: '#/components/schemas/wei'
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated time and epoch when the deposit queue will be fully
            processed (network)

            or when this validator's deposit will be processed (per-validator).
          nullable: true
        churn:
          $ref: '#/components/schemas/ChurnRate'
          description: Current churn rate — how much balance can be processed per interval.
          nullable: true
      required:
        - estimated_processed_at
    QueueEntry.ExitQueue:
      type: object
      nullable: true
      description: >
        Exit queue statistics.

        For the network aggregate, this represents the entire exit queue.

        For individual validators, this represents the validator's position in
        the exit queue.

        The `estimated_processed_at` always refers to the very last exit being
        referenced

        (for the network: end of the network queue; for a validator: when the
        exit is processed).


        For a detailed per-validator breakdown of all individual exits and
        partial withdrawals,

        see
        [/api/v2/ethereum/validators/queues/withdrawals](/api-reference/ethereum/validators/queues/withdrawals).
      properties:
        count:
          $ref: '#/components/schemas/count'
          description: |
            Total number of validators currently in the exit queue (network)
            or number of exit requests for this validator (per-validator).
          nullable: true
        balance:
          $ref: '#/components/schemas/wei'
          description: Total balance of validators in the exit queue.
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated time and epoch when the exit queue will be fully processed
            (network)

            or when this validator's exit will be processed (per-validator).
          nullable: true
        churn:
          $ref: '#/components/schemas/ChurnRate'
          description: Current churn rate — how much balance can be processed per interval.
          nullable: true
      required:
        - estimated_processed_at
    ValidatorQueueEntry.ManualWithdrawal:
      type: object
      nullable: true
      description: >
        Manual withdrawal timing for this validator — partial withdrawals
        triggered via an execution-layer withdrawal request (EIP-7002), i.e.
        withdrawing excess balance while the validator stays active.


        This does **not** include a full exit: an execution-layer full-exit
        request (amount `0`) triggers a normal validator exit and is reflected
        in `exit_queue`. Automatic sweep withdrawals are reflected in
        `withdrawal_sweep`.


        For detailed withdrawal breakdown, see
        [/api/v2/ethereum/validators/queues/withdrawals](/api-reference/ethereum/validators/queues/withdrawals).
      properties:
        count:
          $ref: '#/components/schemas/count'
          description: Total number of partial withdrawal requests currently in the queue.
          nullable: true
        balance:
          $ref: '#/components/schemas/wei'
          description: Total balance of partial withdrawal requests in the queue.
          nullable: true
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated time and epoch when this validator's partial withdrawal is
            expected to be processed.
          nullable: true
      required:
        - estimated_processed_at
    ValidatorQueueEntry.WithdrawalSweep:
      type: object
      nullable: true
      description: >
        Withdrawal sweep timing for this specific validator.

        The sweep is a rotating clock that cycles through all validators and
        automatically withdraws any excess balance or the full balance for
        exited validators. Unlike the network-level view (which can only
        estimate the overall sweep delay), the per-validator view can more
        accurately estimate when the sweep clock will reach this specific
        validator.


        In rare cases (e.g. many pending withdrawals), the actual processing
        time may vary, which is why both `min` and `max` estimates are provided.

        For more context on the sweep clock, see the network-level


        [/api/v2/ethereum/queues2](/api-reference/ethereum/queues2) endpoint.
      properties:
        min:
          $ref: '#/components/schemas/NamedEstimatedWithEpoch'
        max:
          $ref: '#/components/schemas/NamedEstimatedWithEpoch'
      required:
        - min
        - max
    ValidatorQueueStats2.Consolidation:
      type: object
      nullable: true
      description: >
        Consolidation queue status for this validator.


        Consolidation is a two-phase process. Once the consolidation request is
        accepted:

        1. The source validator exits the active set at `source_exit_at` and
        stops earning rewards.

        2. The source balance is swept to the target at `estimated_processed_at`
        (~256 epochs later).


        When the queried validator is the **source**, `source_exit_at` reflects
        when it will exit.

        When the queried validator is the **target**, `source_exit_at` reflects
        when the incoming source(s) will exit.

        If the validator is involved in multiple consolidations, both fields
        refer to the latest one.
      properties:
        source_exit_at:
          allOf:
            - $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated epoch when the source validator exits the active set and
            stops earning rewards.

            Precedes `estimated_processed_at` by the withdrawal delay (~256
            epochs).
          nullable: true
        estimated_processed_at:
          allOf:
            - $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated epoch when the source validator's balance will be swept to
            the target (withdrawable epoch).
      required:
        - estimated_processed_at
    ValidatorQueueStats2.CompoundingSwitch:
      type: object
      nullable: true
      description: >
        Compounding switch queue status for this validator.

        Once dequeued, the validator will be switched to compounding mode on the
        consensus layer,

        allowing it to exceed the normal maximum effective balance cap

        (32 ETH for prefix "0x00" or "0x01", 2048 ETH for prefix "0x02").
      properties:
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
          description: >
            Estimated time and epoch when the validator will be dequeued for
            compounding switch.
      required:
        - estimated_processed_at
    FinalityParamsOnlyNoFinalization:
      type: string
      description: |
        Indicates the finality status of the data provided. 
          - Finalized data cannot be changed without slashing at least one-third of all validators, providing strong economic guarantees.
          - Data marked as not_finalized does not have this guarantee and may still change.
      enum:
        - not_finalized
    validatorIndexPublicKeys:
      description: >
        An array containing either validator indices or public keys. Index and
        public key can be mixed in the same array.


        Subscribed users (Hobbyist, Business, and Scale tiers) can include up to
        100 entries; free trial users and legacy subscription users (Sapphire,
        Emerald, Diamond) are limited to 20.
      type: array
      items:
        $ref: '#/components/schemas/validatorIndexPublicKey'
      minItems: 1
      maxItems: 100
    dashboardID:
      description: >
        beaconcha.in dashboard ID. You can find your dashboard ID in the URL of
        your dashboard page on beaconcha.in (e.g.,
        https://beaconcha.in/dashboard/12345).
      type: integer
      x-go-type: '*int'
      minimum: 0
    dashboardGroupID:
      description: >-
        Optional beaconcha.in dashboard group ID. If no group ID is provided,
        all validators in the dashboard are considered.
      type: integer
      minimum: 0
      nullable: true
    ExecutionLayerAddress:
      type: string
      pattern: ^0x[a-fA-F0-9]{40}$
      description: A standard Ethereum address (20-byte hex string with 0x prefix).
    AddressOrCredential:
      type: string
      pattern: ^(0x)?[0-9a-fA-F]{40}$|^(0x)?0[012][0-9a-fA-F]{62}$
      description: >
        Either an execution layer address (20-byte hex string with 0x prefix) or
        a full 32-byte withdrawal credential.
    validatorIndex:
      description: Validator Index
      type: integer
      minimum: 0
    validatorPublicKey:
      type: string
      description: Public key of a validator
      pattern: ^0x[a-fA-F0-9]{96}$
    count:
      type: integer
      minimum: 0
    wei:
      type: string
      description: Amount in wei (1 ETH = 10^18 wei)
      pattern: ^(0|-?[1-9][0-9]*)$
    EstimatedWithEpoch:
      type: object
      properties:
        epoch:
          $ref: '#/components/schemas/Epoch'
          description: Epoch number
        timestamp:
          $ref: '#/components/schemas/timestamp'
          description: Unix timestamp
      required:
        - epoch
        - timestamp
    ChurnRate:
      type: object
      description: >
        Rate at which the protocol can process queued balance (deposits or
        exits) per interval.

        The `amount` is denominated in wei and the `interval_seconds` defines
        the length of one processing cycle (e.g. 384 seconds for one Ethereum
        epoch = 32 slots × 12s each).
      properties:
        amount:
          $ref: '#/components/schemas/wei'
          description: Amount of ether (in wei) that can be processed in one interval.
        interval_seconds:
          type: integer
          description: >-
            Length of the processing interval in seconds (e.g. 384 for one
            epoch).
      required:
        - amount
        - interval_seconds
    NamedEstimatedWithEpoch:
      type: object
      properties:
        estimated_processed_at:
          $ref: '#/components/schemas/EstimatedWithEpoch'
      required:
        - estimated_processed_at
    validatorIndexPublicKey:
      oneOf:
        - $ref: '#/components/schemas/validatorIndex'
        - $ref: '#/components/schemas/validatorPublicKey'
    Epoch:
      type: integer
      minimum: 0
    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.

````