# Ethereum Beacon Chain Consensus API
> The live consensus state of Ethereum's Beacon Chain — the proof-of-stake layer that secures Ethereum — read keyless straight from a public consensus-layer node. The single thing that matters for the health of proof-of-stake Ethereum is whether it is finalizing: every epoch (about every six and a half minutes) the validators are supposed to justify and then finalize the chain, and on the rare occasions that finality stalls — as it briefly did in 2023 — staking services, exchanges and bridges need to know immediately. The status endpoint returns the current head slot and epoch, how far through the current epoch the chain is and how long until the next one, the finalized and justified epochs, the finality lag (how many epochs behind finality the head is — a lag of two is healthy, a growing lag is trouble) and whether the node is fully synced and finalizing. The finality endpoint returns the finalized, current-justified and previous-justified checkpoints in detail, with how far behind the head each is in epochs and minutes. The genesis endpoint returns the chain's genesis time, how long Ethereum proof-of-stake has been running and the slot/epoch timing constants (a slot every 12 seconds, 32 slots per epoch). This is the Ethereum consensus / finality cut — distinct from the execution-layer feeds (gas, blocks, transactions), the staking-token and restaking feeds and the price feeds: it is the beacon chain's own heartbeat. Note it reports consensus state (slots, epochs, finality), not per-validator economics, which a public consensus node does not serve in one call. Times are UTC; epochs and slots are integers. No key, 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/beaconchain-api/..."
```

## Pricing
- **Free** (Free) — 1,150 calls/Mo, 2 req/s
- **Starter** ($19/Mo) — 25,500 calls/Mo, 6 req/s
- **Pro** ($61/Mo) — 150,000 calls/Mo, 16 req/s
- **Scale** ($179/Mo) — 505,000 calls/Mo, 40 req/s

## Endpoints

### Status

#### `GET /v1/status` — Head slot/epoch, epoch clock, finality lag, sync health

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

**Response:**
```json
{
    "data": {
        "note": "The Beacon Chain's live consensus state. head_slot/head_epoch are where the chain is now; epoch_progress_pct and seconds_to_next_epoch are the epoch clock (one epoch ≈ 6.4 minutes). finalized_epoch is the last epoch the validators irreversibly finalized; finality_lag_epochs is how many epochs the head is ahead of it — a lag of about two is healthy, and is_finalizing flags whether finality is keeping up (a stalled finality is a network emergency). Live, cached ~30s.",
        "source": "public Ethereum consensus-layer (Beacon) API, keyless",
        "head_slot": 14541812,
        "head_epoch": 454431,
        "is_syncing": false,
        "is_finalizing": true,
        "is_optimistic": true,
        "slot_in_epoch": 20,
        "sync_distance": 0,
        "connected_peers": 203,
        "finalized_epoch": 454429,
        "justified_epoch": 454430,
        "epoch_progress_pct": 62.5,
        "finality_lag_epochs": 2,
        "seconds_to_next_epoch": 138
    },
    "meta": {
        "timestamp": "2026-06-13T04:42:53.577Z",
        "request_id": "f1938611-9c97-41e1-88ad-d36948693d6e"
    },
    "status": "ok",
    "message": "Status retrieved successfully",
    "success": true
}
```

### Finality

#### `GET /v1/finality` — Finalized & justified checkpoints with lag behind head

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

**Response:**
```json
{
    "data": {
        "note": "The Beacon Chain's finality checkpoints in detail. finalized is the last irreversibly-finalized epoch; current_justified and previous_justified are the two most recent justified checkpoints (justification is the step before finalization). epochs_behind_head and finality_lag_minutes show how far behind the live head finality is — normally two epochs (~13 minutes); if it climbs, the chain is failing to finalize. healthy flags a lag of four epochs or fewer. Live, cached ~30s.",
        "source": "public Ethereum consensus-layer (Beacon) API, keyless",
        "healthy": true,
        "finalized": {
            "root": "0xaa44e9be9e04be1c83c61a300eb3ed82e6e1179d42ff00226959abbed14278c1",
            "epoch": 454429,
            "epochs_behind_head": 2
        },
        "head_epoch": 454431,
        "current_justified": {
            "root": "0xe31bb7dc26ac89333cc3637d285dec3fa0c34418fe25c3de0c19512a6462b3ee",
            "epoch": 454430,
            "epochs_behind_head": 1
        },
        "previous_justified": {
            "root": "0xaa44e9be9e04be1c83c61a300eb3ed82e6e1179d42ff00226959abbed14278c1",
            "epoch": 454429,
            "epochs_behind_head": 2
        },
        "finality_lag_epochs": 2,
        "finality_lag_minutes": 12.8
    },
    "meta": {
        "timestamp": "2026-06-13T04:42:53.641Z",
        "request_id": "f8443924-8eee-4b79-83bd-d262f72b87ed"
    },
    "status": "ok",
    "message": "Finality retrieved success
…(truncated, see openapi.json for full schema)
```

### Genesis

#### `GET /v1/genesis` — Genesis time, network age and slot/epoch constants

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

**Response:**
```json
{
    "data": {
        "note": "The Beacon Chain's genesis and timing constants. The proof-of-stake beacon chain went live on 1 December 2020; network_age shows how long it has been running. Ethereum runs on a fixed clock: a slot every 12 seconds, 32 slots per epoch (so an epoch every 384 seconds ≈ 6.4 minutes) — the constants every consensus calculation uses. Cached ~daily.",
        "source": "public Ethereum consensus-layer (Beacon) API, keyless",
        "genesis_time": "2020-12-01T12:00:23.000Z",
        "slots_per_epoch": 32,
        "network_age_days": 2019.7,
        "seconds_per_slot": 12,
        "genesis_time_unix": 1606824023,
        "network_age_years": 5.53,
        "seconds_per_epoch": 384,
        "genesis_fork_version": "0x00000000"
    },
    "meta": {
        "timestamp": "2026-06-13T04:42:53.715Z",
        "request_id": "d1155f58-9462-48af-b639-679e7a5ad43f"
    },
    "status": "ok",
    "message": "Genesis retrieved successfully",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "note": "All endpoints take no parameters. Slots and epochs are integers; an epoch is 32 slots (≈ 6.4 minutes). finality_lag is epochs the head is ahead of the last finalized epoch (≈2 is healthy). Times are UTC. A ~30-second cache fronts the beacon node.",
        "sample": {
            "head_slot": 14541812,
            "head_epoch": 454431
        },
        "source": "public Ethereum consensus-layer (Beacon) API, keyless, live",
        "service": "beaconchain-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/status": "Head slot/epoch, epoch clock, finalized epoch, finality lag, sync health.",
            "GET /v1/genesis": "Genesis time, network age and slot/epoch timing constants.",
            "GET /v1/finality": "Finalized & justified checkpoints with lag behind head."
        },
        "description": "The live consensus state of Ethereum's Beacon Chain — the proof-of-stake layer that secures Ethereum — read keyless from a public consensus-layer node. The status endpoint gives the head slot and epoch, the epoch clock, the finalized and justified epochs and the finality lag (with an is_finalizing health flag); finality gives the finalized/justified checkpoints in detail with how far behind the head they are; genesis gives the chain's genesis time, age and slot/epoch timing constants. The Ethereum consensus / finality cut — distinct from the execution-layer feeds (gas, blocks, transactions
…(truncated, see openapi.json for full schema)
```


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