# Ethereum Staking Queue API
> 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.

## Authentication
All requests require your oanor API key in the `x-oanor-key` header. Get one at https://www.oanor.com/developer/keys.

```bash
curl -H "x-oanor-key: oanor_live_…" "https://api.oanor.com/ethstakingqueue-api/..."
```

## Pricing
- **Free** (Free) — 1,300 calls/Mo, 2 req/s
- **Starter** ($21/Mo) — 68,000 calls/Mo, 6 req/s
- **Pro** ($53/Mo) — 440,000 calls/Mo, 16 req/s
- **Scale** ($116/Mo) — 2,750,000 calls/Mo, 40 req/s

## Endpoints

### Queue

#### `GET /v1/queue` — Headline: entry vs exit queue ETH, counts, net flow, clear-time estimates

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ethstakingqueue-api/v1/queue"
```

**Response:**
```json
{
    "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"
    },
…(truncated, see openapi.json for full schema)
```

### Entry

#### `GET /v1/entry` — Activation queue breakdown

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ethstakingqueue-api/v1/entry"
```

**Response:**
```json
{
    "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
}
```

### Exit

#### `GET /v1/exit` — Exit queue breakdown (voluntary + slashed)

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ethstakingqueue-api/v1/exit"
```

**Response:**
```json
{
    "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
}
```

### Validator

#### `GET /v1/validator` — One validator by index or public key

**Parameters:**
- `id` (query, required, string) — Validator index or 0x public key Example: `0`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ethstakingqueue-api/v1/validator?id=0"
```

**Response:**
```json
{
    "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,
        "exit_time": null,
        "exit_epoch": null,
        "balance_eth": 32.9378,
        "activation_time": "2020-12-01T12:00:23.000Z",
        "activation_epoch": 0,
        "withdrawable_epoch": null,
        "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
}
```

### Meta

#### `GET /v1/meta` — Service metadata

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/ethstakingqueue-api/v1/meta"
```

**Response:**
```json
{
    "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 lim
…(truncated, see openapi.json for full schema)
```


---
Marketplace page: https://www.oanor.com/api/ethstakingqueue-api
OpenAPI spec: https://www.oanor.com/api/ethstakingqueue-api/openapi.json
