Overview
ETH does not enter or leave Ethereum staking instantly. Deposits wait in the deposit queue before becoming active stake (ETH in activation — not yet staked), and exiting stake passes through the exit queue, the withdrawal eligibility delay, and the withdrawal sweep before it can be redeemed (ETH in withdrawal — not yet redeemed). This pending ETH is often called ETH in transit. The Queue APIs expose both directions of this flow: network-wide totals and per-validator positions, each with estimated processing times. Use them to report pending balances to customers, forecast liquidity, or analyze staking supply dynamics.API Endpoints: This guide uses the Queue API family:
| Endpoint | Best For |
|---|---|
/api/v2/ethereum/queues | Network-wide totals for inflow/outflow snapshots |
/api/v2/ethereum/validators/queues | Queue overview for selected validators, with ETAs |
Why Track Staking Flows?
Pending Balance Reporting
Show customers ETH that is deposited but not yet earning, or exiting but not yet redeemable, as distinct balance states.
Liquidity Forecasting
Predict when exiting ETH becomes liquid and when queued deposits start earning, down to the epoch.
Customer ETAs
Give per-validator activation and withdrawal estimates instead of network-wide averages.
Market & Supply Analytics
Track net pending flow (inflows minus outflows) as a leading indicator of staking supply changes.
Mapping “Pending ETH” to Queue Data
All balance fields are returned in wei (1 ETH = 10¹⁸ wei).| Metric | Definition | Source Fields |
|---|---|---|
| ETH in activation | Deposited, not yet active stake | deposit_queue.deposit_balance (new validators) + deposit_queue.topup_balance (top-ups to existing validators) |
| ETH in exit | Exit requested, validator still active | exit_queue.balance |
| ETH in manual withdrawal | Withdrawal requests queued on the execution layer | manual_withdrawal_queue.balance |
| Pending inflow | All ETH entering staking | deposit_balance + topup_balance |
| Pending outflow | All ETH leaving staking | exit_queue.balance + manual_withdrawal_queue.balance |
| Net pending flow | Direction of staking supply | Pending inflow − pending outflow |
Don’t count consolidations as flows. The
consolidation_queue and compounding_switch_queue track validators moving stake between validators or switching to compounding credentials — that ETH stays staked and is neither an inflow nor an outflow.The last leg of an outflow: after a validator exits, its balance waits through the eligibility delay (~27 hours) and the withdrawal sweep before being credited. The network endpoint exposes the current sweep duration via
withdrawal_sweep.estimated_sweep_delay, and the per-validator overview returns min/max sweep estimates for each exiting validator.Network-Wide Snapshot
Get the total pending inflow and outflow for the entire network:Response
Inflow 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 (excludes new validator deposits) |
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 (e.g. wei per 384-second epoch) |
Outflow Fields (Exit Queue, Manual Withdrawals, Sweep)
| Field | Description |
|---|---|
exit_queue.count | Number of validators waiting to exit |
exit_queue.balance | Total ETH waiting to exit, in wei |
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 |
withdrawal_sweep.estimated_sweep_delay | Estimated maximum seconds for the sweep to complete a full rotation and credit withdrawable ETH |
withdrawal_sweep.last_swept_validator_index | Current position of the sweep clock |
estimated_processed_at always refers to the very last item in the queue — i.e. when the queue as it stands right now would be fully drained. Queues are null when empty.Per-Validator Tracking
Track queue positions for your own validator set — including validators that are still in the deposit queue and have no index yet (select them by public key):Response
- The first validator is in activation: 32 ETH deposited, expected to be processed at epoch 454102. Its
indexisnullbecause it has not been activated yet. - The second validator is in withdrawal: its exit is expected at epoch 454031, and the sweep is expected to credit its balance between epochs 454800 and 455400.
- Queues a validator is not part of are returned as
null. - If a validator has multiple pending items (e.g. several queued top-ups),
estimated_processed_atrefers to its last one.
Building Historical Snapshots
The Queue APIs return the current queue state. To analyze trends — daily net flow, queue growth, average wait times — poll on a schedule and store each snapshot:Snapshots only exist from the moment you start collecting them — set up polling before you need the history.
Best Practices
Treat ETAs as Estimates
Estimates assume the current churn rate and queue composition. Re-poll regularly and present time ranges to customers, not exact times.
Sum in Wei, Not Floats
Wei values exceed float64 precision. Parse the string amounts with arbitrary-precision integers and convert to ETH only for display.
Expect Nulls
Empty or not-applicable queues are returned as
null. Treat them as zero when aggregating.Related Resources
- Introduction — Overview of the Queue APIs and the staking queues
- Estimate Queue Wait Times — Turn queue statistics into activation and exit ETAs
- Understanding Validator Queues — How the queues work at the protocol level
- Deposit Process — The full lifecycle of a deposit
- How Withdrawals Work — Eligibility delay and the withdrawal sweep
- Pagination — Cursor-based pagination for the per-validator queue endpoint

