{"openapi":"3.1.0","info":{"title":"Ethereum Staking Queue API","version":"1.0.0","description":"The live Ethereum validator entry and exit queues, read keyless straight from a public consensus-layer (Beacon) node. To stake on Ethereum you join a queue to activate a validator, and to unstake you join a separate queue to exit — both rate-limited by the protocol churn limit. The size of these queues is the cleanest real-time signal of staking demand and exit pressure: a long entry queue means capital is rushing in to stake, a long exit queue means validators are leaving. Liquid-staking protocols, exchanges, stakers and ETH analysts watch the queue to time deposits and withdrawals. The queue endpoint is the headline dashboard — how much ETH is waiting to activate (entry) versus exit, the validator counts behind each, the net flow, and an estimate of how long each queue takes to clear at the current activation/exit churn limit (256 ETH per epoch, ~6.4 min). The entry endpoint breaks down the activation side (validators already eligible and churning in, plus freshly-deposited validators not yet eligible). The exit endpoint breaks down the exit side (voluntary exits plus validators forced out by slashing). The validator endpoint looks up any single validator by index or public key: status, balance, effective balance, slashed flag and activation/exit epochs with wall-clock times. ETH amounts are the meaningful queue metric — a single post-Pectra validator can hold up to 2048 ETH — with counts given alongside. Distinct from beaconchain-api (consensus finality), the Solana validator feeds and the liquid-staking protocol feeds. Live, keyless, nothing stored beyond a short cache.","contact":{"name":"PremiumApi","url":"https://www.oanor.com/by/premiumapi"}},"servers":[{"url":"https://api.oanor.com/ethstakingqueue-api","description":"oanor gateway"}],"tags":[{"name":"Queue"},{"name":"Entry"},{"name":"Exit"},{"name":"Validator"},{"name":"Meta"}],"components":{"securitySchemes":{"oanorKey":{"type":"apiKey","in":"header","name":"x-oanor-key","description":"Get your key at https://www.oanor.com/developer/keys"}}},"security":[{"oanorKey":[]}],"paths":{"/v1/queue":{"get":{"operationId":"get_v1_queue","tags":["Queue"],"summary":"Headline: entry vs exit queue ETH, counts, net flow, clear-time estimates","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"Ethereum's live staking queues. entry_queue.eth_waiting is ETH lining up to activate (eligible_waiting are validators already eligible and churning in; not_yet_eligible were just deposited and are not counted toward the active churn yet). exit_queue.eth_waiting is ETH waiting to exit. net_flow_eth = entry minus exit (positive = net staking inflow). est_clear_hours is an ESTIMATE = queued ETH / the current activation-exit churn limit of 256 ETH per epoch (~6.4 min/epoch); the cap binds at Ethereum's current stake level. ETH amounts are the meaningful metric — a single post-Pectra validator can hold up to 2048 ETH. Live, cached ~90s.","epoch":454431,"source":"Ethereum Beacon API (ethereum-beacon-api.publicnode.com), keyless","exit_queue":{"validators":4,"eth_waiting":128.02,"est_clear_hours":0.1},"entry_queue":{"validators":3062,"eth_waiting":4663.26,"est_clear_hours":1.9,"eligible_waiting":{"eth":1426.26,"validators":11},"not_yet_eligible":{"eth":3237,"validators":3051}},"net_flow_eth":4535.24,"churn_limit_eth_per_epoch":256},"meta":{"timestamp":"2026-06-13T04:42:42.856Z","request_id":"50b3aef7-048e-45a4-8103-05e17e343a23"},"status":"ok","message":"Staking queue retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/entry":{"get":{"operationId":"get_v1_entry","tags":["Entry"],"summary":"Activation queue breakdown","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The Ethereum activation (entry) queue. eligible_and_churning are validators past the eligibility delay and being admitted at the churn limit; deposited_not_yet_eligible were just deposited and still wait out the eligibility delay before joining the churn. earliest/latest_activation_epoch come straight from the validator records. est_clear_hours estimates how long the queued ETH takes to activate at the current churn limit of 256 ETH/epoch. Live, cached ~90s.","epoch":454431,"source":"Ethereum Beacon API (ethereum-beacon-api.publicnode.com), keyless","eth_waiting":4663.26,"est_clear_hours":1.9,"validators_waiting":3062,"eligible_and_churning":{"eth":1426.26,"validators":11,"latest_activation_epoch":454433,"earliest_activation_time":"2026-06-13T04:45:11.000Z","earliest_activation_epoch":454432},"churn_limit_eth_per_epoch":256,"deposited_not_yet_eligible":{"eth":3237,"validators":3051}},"meta":{"timestamp":"2026-06-13T04:42:42.934Z","request_id":"6c896ab2-08c0-486c-b53c-f2b578f4cbdc"},"status":"ok","message":"Entry queue retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/exit":{"get":{"operationId":"get_v1_exit","tags":["Exit"],"summary":"Exit queue breakdown (voluntary + slashed)","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"The Ethereum exit queue. eth_waiting / validators_waiting are validators voluntarily exiting and churning out at the exit churn limit; slashed_exiting are validators being forced out by slashing (a separate, penalised exit). earliest/latest_exit_epoch come from the validator records. est_clear_hours estimates how long the exiting ETH takes to clear at the current churn limit of 256 ETH/epoch. Live, cached ~90s.","epoch":454431,"source":"Ethereum Beacon API (ethereum-beacon-api.publicnode.com), keyless","eth_waiting":128.02,"est_clear_hours":0.1,"slashed_exiting":{"eth":0,"validators":0},"latest_exit_epoch":454434,"earliest_exit_time":"2026-06-13T04:57:59.000Z","validators_waiting":4,"earliest_exit_epoch":454434,"churn_limit_eth_per_epoch":256},"meta":{"timestamp":"2026-06-13T04:42:43.296Z","request_id":"545e1a1f-0c9a-4203-aecf-f74cfec74a56"},"status":"ok","message":"Exit queue retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/validator":{"get":{"operationId":"get_v1_validator","tags":["Validator"],"summary":"One validator by index or public key","description":"","parameters":[{"name":"id","in":"query","required":true,"description":"Validator index or 0x public key","schema":{"type":"string"},"example":"0"}],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"One Ethereum validator by index or public key: its current status (pending_queued, active_ongoing, active_exiting, exited, slashed…), its actual and effective balance in ETH, whether it has been slashed, and its activation/exit/withdrawable epochs with wall-clock times. Live, cached ~90s.","index":0,"pubkey":"0x933ad9491b62059dd065b560d256d8957a8c402cc6e8d8ee7290ae11e8f7329267a8811c397529dac52ae1342ba58c95","source":"Ethereum Beacon API (ethereum-beacon-api.publicnode.com), keyless","status":"active_ongoing","slashed":false,"balance_eth":32.9378,"activation_time":"2020-12-01T12:00:23.000Z","activation_epoch":0,"effective_balance_eth":32},"meta":{"timestamp":"2026-06-13T04:42:43.400Z","request_id":"4cddcd15-9e65-46d6-b314-0ca7e4502cd2"},"status":"ok","message":"Validator retrieved successfully","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}},"/v1/meta":{"get":{"operationId":"get_v1_meta","tags":["Meta"],"summary":"Service metadata","description":"","parameters":[],"security":[{"oanorKey":[]}],"responses":{"200":{"description":"OK","content":{"application/json":{"example":{"data":{"note":"queue, entry, exit and meta take no parameters. validator takes id (a numeric validator index or a 0x public key). ETH amounts are the meaningful queue metric (a post-Pectra validator can hold up to 2048 ETH); validator counts are given alongside. est_clear_hours fields are ESTIMATES using the current activation/exit churn limit of 256 ETH per epoch (~6.4 min); epochs are converted to wall-clock time from mainnet genesis. A ~90-second cache fronts the upstream.","sample":{"epoch":454431,"exit_queue_eth":128.02,"exit_validators":4},"source":"Ethereum Beacon API (ethereum-beacon-api.publicnode.com), keyless, live","service":"ethstakingqueue-api","endpoints":{"GET /v1/exit":"Exit queue breakdown (voluntary exits + slashed exits).","GET /v1/meta":"This document.","GET /v1/entry":"Activation queue breakdown (eligible-churning + deposited-not-yet-eligible).","GET /v1/queue":"Headline: entry vs exit queue ETH, counts, net flow, estimated clear times.","GET /v1/validator":"One validator by index or pubkey (id=0)."},"description":"The live Ethereum validator entry and exit queues, read keyless from a public consensus-layer (Beacon) node. Staking on Ethereum means joining an activation queue; unstaking means joining an exit queue — both rate-limited by the protocol churn limit. Queue size is the cleanest real-time read on staking demand and exit pressure. The queue endpoint is the headline (ETH waiting to activate vs exit, counts, estimated clear times); entry breaks down the activation side; exit breaks down the exit side (incl. slashed exits); validator looks up any single validator by index or public key. Distinct from beaconchain-api (consensus finality), the Solana validator feeds and the liquid-staking protocol feeds.","upstream_status":"ok"},"meta":{"timestamp":"2026-06-13T04:42:43.475Z","request_id":"6fc1f67a-85b6-4a84-8511-69ff44b05a72"},"status":"ok","message":"Meta","success":true}}}},"401":{"description":"Missing or invalid x-oanor-key header"},"402":{"description":"Active subscription required"},"429":{"description":"Rate-limit or monthly quota reached"},"502":{"description":"Upstream did not respond"}}}}},"x-oanor-pricing":[{"slug":"free","name":"Free","price_cents_month":0,"monthly_call_quota":1300,"rps_limit":2,"hard_limit":true},{"slug":"starter","name":"Starter","price_cents_month":2100,"monthly_call_quota":68000,"rps_limit":6,"hard_limit":true},{"slug":"pro","name":"Pro","price_cents_month":5300,"monthly_call_quota":440000,"rps_limit":16,"hard_limit":true},{"slug":"scale","name":"Scale","price_cents_month":11600,"monthly_call_quota":2750000,"rps_limit":40,"hard_limit":true}],"x-oanor-marketplace-url":"https://www.oanor.com/api/ethstakingqueue-api"}