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

# Estimate Queue Wait Times

> Estimate validator activation and exit times from queue lengths and churn rates

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

<Note>
  **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](#per-validator-etas) below.
</Note>

***

## Why Track Wait Times?

<CardGroup cols={2}>
  <Card title="Estimate Activation Times" icon="clock">
    Understand how long new deposits will take to activate based on current queue length.
  </Card>

  <Card title="Customer Communication" icon="comments">
    Provide accurate ETAs to staking customers for deposits and withdrawals.
  </Card>

  <Card title="Chain Demand Insights" icon="chart-line">
    Monitor queue lengths to understand overall network staking demand.
  </Card>

  <Card title="Exit Planning" icon="door-open">
    Plan validator exits based on current exit queue processing rate.
  </Card>
</CardGroup>

***

## Network Queue Statistics

Get overall network queue lengths and processing rates:

```bash theme={null}
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

```json theme={null}
{
  "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

| Field                                  | Description                                                                            |
| -------------------------------------- | -------------------------------------------------------------------------------------- |
| `deposit_queue.deposit_count`          | Number of new validator deposits waiting (excludes top-ups)                            |
| `deposit_queue.deposit_balance`        | Total ETH of new validator deposits, in wei                                            |
| `deposit_queue.topup_count`            | Number of top-up deposits waiting                                                      |
| `deposit_queue.topup_balance`          | Total ETH of top-ups, in wei                                                           |
| `deposit_queue.estimated_processed_at` | Epoch and Unix timestamp when the entire deposit queue will be processed               |
| `deposit_queue.churn`                  | Balance the protocol can process per interval (`amount` in wei per `interval_seconds`) |

### Exit Queue

| Field                               | Description                                                                            |
| ----------------------------------- | -------------------------------------------------------------------------------------- |
| `exit_queue.count`                  | Number of validators waiting to exit                                                   |
| `exit_queue.balance`                | Total ETH waiting to exit, in wei                                                      |
| `exit_queue.estimated_processed_at` | Epoch and Unix timestamp when the entire exit queue will be processed                  |
| `exit_queue.churn`                  | Balance the protocol can process per interval (`amount` in wei per `interval_seconds`) |

### Manual Withdrawal Queue

| Field                                            | Description                                                                                  |
| ------------------------------------------------ | -------------------------------------------------------------------------------------------- |
| `manual_withdrawal_queue.count`                  | Pending withdrawal requests (partial withdrawals and exits triggered via withdrawal request) |
| `manual_withdrawal_queue.balance`                | Total ETH in pending manual withdrawals, in wei                                              |
| `manual_withdrawal_queue.estimated_processed_at` | Epoch and Unix timestamp when the last manual withdrawal will be completed                   |

### Withdrawal Sweep

| Field                                         | Description                                                         |
| --------------------------------------------- | ------------------------------------------------------------------- |
| `withdrawal_sweep.estimated_sweep_delay`      | Estimated maximum seconds for the sweep to complete a full rotation |
| `withdrawal_sweep.last_swept_validator_index` | Current position of the sweep clock                                 |

<Note>
  **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.
</Note>

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

<Note>
  **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](/use-cases/staking-inflows-outflows) for the full redemption timeline.
</Note>

***

## Per-Validator ETAs

For individual validators — including ones still in the deposit queue with no index yet — query the per-validator overview:

```bash theme={null}
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](/use-cases/staking-inflows-outflows#per-validator-tracking) for a full response example.

***

## Best Practices

<CardGroup cols={2}>
  <Card title="Poll Periodically" icon="clock">
    Queue lengths change as validators enter and exit. Poll every 1-4 hours for accurate estimates.
  </Card>

  <Card title="Account for Variability" icon="chart-simple">
    Queue processing speed varies with network conditions. Provide time ranges, not exact times.
  </Card>

  <Card title="Monitor Churn Rate" icon="gauge">
    The churn rate determines how fast queues are processed. Track it to understand network capacity.
  </Card>
</CardGroup>

***

## Related Resources

* [Introduction](/use-cases/queue-tracking) — Overview of the Queue APIs and the staking queues
* [Staking Inflows & Outflows](/use-cases/staking-inflows-outflows) — Measure pending ETH in transit
* [Understanding Validator Queues](/faqs/understanding-validator-queues) — How the queues work at the protocol level
* [How Withdrawals Work](/faqs/how-withdrawals-work) — Eligibility delay and the withdrawal sweep
* [Notifications](/notifications-monitoring/notifications) — Set up alerts

<Tip>
  For detailed API specifications, see the **Queues** section in the V2 API Docs sidebar.
</Tip>
