---
title: "Validator Queue ETA"
method: POST
path: "/api/v2/ethereum/validators/queues"
tags: ["Network"]
---

# Validator Queue ETA

`POST /api/v2/ethereum/validators/queues`

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

## Request body

- object
  - `chain` 'mainnet' | 'hoodi' — The Ethereum chain to query.
  - `cursor` string — Cursor value for pagination. See our [pagination guide](/api/pagination) for more details.
  - `page_size` integer — The number of items to return per page.
  - `validator` union, required — 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.
    - ValidatorsByIdentifiers
      - `validator_identifiers` ValidatorIndexPublicKey[], required — 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.
        - union
          - integer — Validator Index
          - string — Public key of a validator
    - ValidatorsByDashboard
      - `dashboard_id` integer, required — 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).
      - `group_id` integer, nullable — Optional beaconcha.in dashboard group ID. If no group ID is provided, all validators in the dashboard are considered.
    - ValidatorsByDeposit
      - `deposit_address` string, required — A standard Ethereum address (20-byte hex string with 0x prefix).
    - ValidatorsByWithdrawal
      - `withdrawal` string, required — Either an execution layer address (20-byte hex string with 0x prefix) or a full 32-byte withdrawal credential.
    - ValidatorsByEntity — 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.
      - `entity` string, required — 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` string — 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.

## Response `200`

Successful response.

- ValidatorQueueStats2ContainerList — Response containing unified queue overview for the requested validators.
  - `data` ValidatorQueueStats2Data[], required
    - `validator` Validator, required
      - `index` integer — Validator Index
      - `public_key` string — Public key of a validator
    - `deposit_queue` QueueEntryDepositQueue, nullable — 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).
      - `deposit_count` integer
      - `deposit_balance` string — Amount in wei (1 ETH = 10^18 wei)
      - `topup_count` integer
      - `topup_balance` string — Amount in wei (1 ETH = 10^18 wei)
      - `estimated_processed_at` EstimatedWithEpoch, required
        - `epoch` integer, required
        - `timestamp` integer, required
      - `churn` ChurnRate — 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).
        - `amount` string, required — Amount in wei (1 ETH = 10^18 wei)
        - `interval_seconds` integer, required — Length of the processing interval in seconds (e.g. 384 for one epoch).
    - `exit_queue` QueueEntryExitQueue, nullable — 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).
      - `count` integer
      - `balance` string — Amount in wei (1 ETH = 10^18 wei)
      - `estimated_processed_at` EstimatedWithEpoch, required
        - `epoch` integer, required
        - `timestamp` integer, required
      - `churn` ChurnRate — 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).
        - `amount` string, required — Amount in wei (1 ETH = 10^18 wei)
        - `interval_seconds` integer, required — Length of the processing interval in seconds (e.g. 384 for one epoch).
    - `manual_withdrawal_queue` ValidatorQueueEntryManualWithdrawal, nullable — 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).
      - `count` integer
      - `balance` string — Amount in wei (1 ETH = 10^18 wei)
      - `estimated_processed_at` EstimatedWithEpoch, required
        - `epoch` integer, required
        - `timestamp` integer, required
    - `withdrawal_sweep` ValidatorQueueEntryWithdrawalSweep, nullable — 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.
      - `min` NamedEstimatedWithEpoch, required
        - `estimated_processed_at` EstimatedWithEpoch, required
          - `epoch` integer, required
          - `timestamp` integer, required
      - `max` NamedEstimatedWithEpoch, required
        - `estimated_processed_at` EstimatedWithEpoch, required
          - `epoch` integer, required
          - `timestamp` integer, required
    - `consolidation_queue` ValidatorQueueStats2Consolidation, nullable — 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.
      - `source_exit_at` EstimatedWithEpoch
        - `epoch` integer, required
        - `timestamp` integer, required
      - `estimated_processed_at` EstimatedWithEpoch, required
        - `epoch` integer, required
        - `timestamp` integer, required
    - `compounding_switch_queue` ValidatorQueueStats2CompoundingSwitch, nullable — 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").
      - `estimated_processed_at` EstimatedWithEpoch, required
        - `epoch` integer, required
        - `timestamp` integer, required
    - `finality` 'not_finalized', required — 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.
  - `paging` Paging
    - `next_cursor` string — 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.

## Other responses

- `400` — Bad Request
- `401` — Unauthorized
- `403` — Forbidden
- `404` — Not Found
- `405` — Method Not Allowed
- `429` — Rate Limit Exceeded
- `500` — Internal Server Error
- `default` — An unexpected error response.

---

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