Skip to main content

Overview

Every deposit and exit waits in a queue before it takes effect. This guide shows how to read the network queue statistics, estimate how long a new deposit or exit will wait, and get individual ETAs for specific validators — so you can give customers accurate timelines and plan operations.
API Endpoint: This guide uses /api/v2/ethereum/queues for network-wide queue statistics and estimated wait times. For per-validator ETAs, see Per-Validator ETAs below.

Why Track Wait Times?

Estimate Activation Times

Understand how long new deposits will take to activate based on current queue length.

Customer Communication

Provide accurate ETAs to staking customers for deposits and withdrawals.

Chain Demand Insights

Monitor queue lengths to understand overall network staking demand.

Exit Planning

Plan validator exits based on current exit queue processing rate.

Network Queue Statistics

Get overall network queue lengths and processing rates:
curl --request POST \
  --url https://beaconcha.in/api/v2/ethereum/queues \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --header 'Accept: application/vnd.beaconcha.in.v2.1+json' \
  --data '{"chain": "mainnet"}'

Response

{
  "data": {
    "deposit_queue": {
      "deposit_count": 1184,
      "deposit_balance": "37888000000000000000000",
      "topup_count": 243,
      "topup_balance": "1850000000000000000000",
      "estimated_processed_at": {
        "epoch": 454155,
        "timestamp": 1781099520
      },
      "churn": {
        "amount": "256000000000000000000",
        "interval_seconds": 384
      }
    },
    "exit_queue": {
      "count": 420,
      "balance": "13440000000000000000000",
      "estimated_processed_at": {
        "epoch": 454053,
        "timestamp": 1781060352
      },
      "churn": {
        "amount": "256000000000000000000",
        "interval_seconds": 384
      }
    },
    "manual_withdrawal_queue": {
      "count": 310,
      "balance": "5120000000000000000000",
      "estimated_processed_at": {
        "epoch": 454210,
        "timestamp": 1781120640
      }
    },
    "withdrawal_sweep": {
      "estimated_sweep_delay": 777600,
      "last_swept_validator_index": 1284503
    },
    "consolidation_queue": {
      "count": 18,
      "balance": "1152000000000000000000",
      "estimated_processed_at": {
        "epoch": 454060,
        "timestamp": 1781063040
      },
      "churn": {
        "amount": "256000000000000000000",
        "interval_seconds": 384
      }
    },
    "compounding_switch_queue": {
      "count": 25,
      "estimated_processed_at": {
        "epoch": 454048,
        "timestamp": 1781058432
      },
      "churn": {
        "amount": "256000000000000000000",
        "interval_seconds": 384
      }
    },
    "finality": "not_finalized"
  }
}

Response Fields

Deposit Queue

FieldDescription
deposit_queue.deposit_countNumber of new validator deposits waiting (excludes top-ups)
deposit_queue.deposit_balanceTotal ETH of new validator deposits, in wei
deposit_queue.topup_countNumber of top-up deposits waiting
deposit_queue.topup_balanceTotal ETH of top-ups, in wei
deposit_queue.estimated_processed_atEpoch and Unix timestamp when the entire deposit queue will be processed
deposit_queue.churnBalance the protocol can process per interval (amount in wei per interval_seconds)

Exit Queue

FieldDescription
exit_queue.countNumber of validators waiting to exit
exit_queue.balanceTotal ETH waiting to exit, in wei
exit_queue.estimated_processed_atEpoch and Unix timestamp when the entire exit queue will be processed
exit_queue.churnBalance the protocol can process per interval (amount in wei per interval_seconds)

Manual Withdrawal Queue

FieldDescription
manual_withdrawal_queue.countPending withdrawal requests (partial withdrawals and exits triggered via withdrawal request)
manual_withdrawal_queue.balanceTotal ETH in pending manual withdrawals, in wei
manual_withdrawal_queue.estimated_processed_atEpoch and Unix timestamp when the last manual withdrawal will be completed

Withdrawal Sweep

FieldDescription
withdrawal_sweep.estimated_sweep_delayEstimated maximum seconds for the sweep to complete a full rotation
withdrawal_sweep.last_swept_validator_indexCurrent position of the sweep clock
Sweep Delay: After becoming eligible for withdrawal, validators may wait up to ~10 days for the automatic sweep to process their balance. The sweep cycles through all validators sequentially.
The response also includes a consolidation_queue and a compounding_switch_queue for validators consolidating stake or switching to compounding credentials — these operations keep the ETH staked.

Estimating a Wait Time

estimated_processed_at tells you when the last item currently in the queue will be processed. A deposit or exit submitted now joins right behind it, so the same value doubles as the queue-join ETA:
wait ≈ queue balance / churn.amount × churn.interval_seconds
With the example numbers above, a new deposit waits:
(37,888 + 1,850) ETH ÷ 256 ETH per epoch ≈ 155 epochs × 384 s ≈ 16.6 hours
and a new exit waits 13,440 ÷ 256 ≈ 53 epochs ≈ 5.6 hours.
Full exits take longer than the exit queue. After leaving the active set, the balance waits through the withdrawal eligibility delay (~27 hours) and the withdrawal sweep (withdrawal_sweep.estimated_sweep_delay) before it is credited. See Staking Inflows & Outflows for the full redemption timeline.

Per-Validator ETAs

For individual validators — including ones still in the deposit queue with no index yet — query the per-validator overview:
curl --request POST \
  --url https://beaconcha.in/api/v2/ethereum/validators/queues \
  --header 'Authorization: Bearer <YOUR_API_KEY>' \
  --header 'Content-Type: application/json' \
  --data '
{
  "chain": "mainnet",
  "validator": {
    "validator_identifiers": ["0x93247f22...09abcaf5", 1284503]
  },
  "page_size": 10
}
'
Each entry returns the validator’s own estimated_processed_at per queue, plus min/max sweep estimates for exiting validators. Queues the validator is not part of are null, and index is null until activation. See Staking Inflows & Outflows for a full response example.

Best Practices

Poll Periodically

Queue lengths change as validators enter and exit. Poll every 1-4 hours for accurate estimates.

Account for Variability

Queue processing speed varies with network conditions. Provide time ranges, not exact times.

Monitor Churn Rate

The churn rate determines how fast queues are processed. Track it to understand network capacity.

For detailed API specifications, see the Queues section in the V2 API Docs sidebar.