# Cardano Stake Pool API
> Cardano's stake-pool operators (SPOs) — live from the public Koios indexer, no key. Cardano is delegated proof-of-stake: ADA holders delegate to stake pools run by independent operators, who mint blocks and earn rewards. The Cardano account reader resolves which pool a single stake account delegates to, but there is no registry of the pools themselves. This opens it. List every pool the chain knows with its operator margin, fixed cost and pledge; look up one pool in full — its registered identity (ticker, name, homepage, description) from off-chain metadata plus its on-chain economics: live delegated stake, saturation, delegator count, lifetime blocks and status; and read a pool's Mark / Set / Go stake snapshots, the three-epoch pipeline Cardano uses to compute rewards. The operator layer for Cardano wallets, staking dashboards, pool explorers and analytics. Distinct from the Cardano account reader (per-account delegation), the chain-economics reader, the native-token registry and the DRep governance reader. Live from the indexer; short cache only.

## 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/cardanopools-api/..."
```

## Pricing
- **Free** (Free) — 8,800 calls/Mo, 3 req/s
- **Starter** ($10/Mo) — 162,000 calls/Mo, 10 req/s
- **Pro** ($35/Mo) — 870,000 calls/Mo, 25 req/s
- **Scale** ($97/Mo) — 5,600,000 calls/Mo, 60 req/s

## Endpoints

### Pools

#### `GET /v1/pools` — List the stake-pool registry

**Parameters:**
- `limit` (query, optional, string) — Page size (1-100) Example: `25`
- `offset` (query, optional, string) — Offset Example: `0`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cardanopools-api/v1/pools?limit=25&offset=0"
```

**Response:**
```json
{
    "data": {
        "note": "The Cardano stake-pool (SPO) registry — every pool the chain knows, each with its operator margin (%), fixed cost and pledge (in ADA) and the epoch it became active. Cardano is delegated proof-of-stake; ADA holders delegate to these pools. Paginate with limit & offset; look up one in /v1/pool.",
        "count": 25,
        "pools": [
            {
                "pool_id": "pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt",
                "meta_url": "https://raw.githubusercontent.com/Octalus/cardano/master/p.json",
                "margin_pct": 0.8999999999999999,
                "pledge_ada": 50000,
                "pool_id_hex": "153806dbcd134ddee69a8c5204e38ac80448f62342f8c23cfe4b7edf",
                "fixed_cost_ada": 340,
                "active_epoch_no": 589
            },
            {
                "pool_id": "pool1pu5jlj4q9w9jlxeu370a3c9myx47md5j5m2str0naunn2q3lkdy",
                "meta_url": "https://stakenuts.com/mainnet.json",
                "margin_pct": 4.9,
                "pledge_ada": 250000,
                "pool_id_hex": "0f292fcaa02b8b2f9b3c8f9fd8e0bb21abedb692a6d5058df3ef2735",
                "fixed_cost_ada": 340,
                "active_epoch_no": 411
            },
            {
                "pool_id": "pool1c8k78ny3xvsfgenhf4yzvpzwgzxmz0t0um0h2xnn2q83vjdr5dj",
                "meta_url": "https://metadata.zenithpool.io",
                "margin_pct": 0,
                "pledge_ada": 50100,
    
…(truncated, see openapi.json for full schema)
```

### Pool

#### `GET /v1/pool` — One pool in full: identity + live economics

**Parameters:**
- `pool_id` (query, optional, string) — Pool id (pool1...); omit for the first pool Example: `pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cardanopools-api/v1/pool?pool_id=pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt"
```

**Response:**
```json
{
    "data": {
        "name": "OctasPool",
        "note": "One stake pool in full: its registered identity (ticker, name, homepage) from off-chain metadata, plus on-chain economics — margin, fixed cost, pledge, live delegated stake, saturation, delegator count, lifetime blocks and status. Omit pool_id to use the first pool.",
        "source": "Koios",
        "ticker": "OCTAS",
        "pool_id": "pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt",
        "homepage": "https://octaluso.dyndns.org",
        "meta_url": "https://raw.githubusercontent.com/Octalus/cardano/master/p.json",
        "margin_pct": 0.8999999999999999,
        "pledge_ada": 50000,
        "block_count": 22896,
        "description": "Octa's Performance Pool",
        "pool_id_hex": "153806dbcd134ddee69a8c5204e38ac80448f62342f8c23cfe4b7edf",
        "pool_status": "registered",
        "reward_addr": "stake1uy89kzrdlpaz5rzu8x95r4qnlpqhd3f8mf09edjp73vcs3qhktrtm",
        "delegated_drep": "drep1y2t4hsu6zk98407q4ymj5jnm2d52rh76dv6whl88r9dts4qayakaf",
        "fixed_cost_ada": 340,
        "live_stake_ada": 59396323.83871,
        "active_epoch_no": 589,
        "live_delegators": 5111,
        "live_saturation_pct": 76.75
    },
    "meta": {
        "timestamp": "2026-06-14T17:04:22.318Z",
        "request_id": "099b4417-1680-4abb-ab58-cf269911e03c"
    },
    "status": "ok",
    "message": "Pool retrieved successfully",
    "success": true
}
```

### Snapshot

#### `GET /v1/snapshot` — A pool's Mark/Set/Go stake snapshots

**Parameters:**
- `pool_id` (query, optional, string) — Pool id (pool1...); omit for the first pool Example: `pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/cardanopools-api/v1/snapshot?pool_id=pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt"
```

**Response:**
```json
{
    "data": {
        "note": "A pool's stake snapshots at the Mark / Set / Go epoch boundaries — the three-epoch pipeline Cardano uses to compute rewards. Each carries the pool's own stake and the network's total active stake (in ADA) for that snapshot. Omit pool_id to use the first pool.",
        "count": 3,
        "source": "Koios",
        "pool_id": "pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt",
        "snapshots": [
            {
                "epoch_no": 638,
                "snapshot": "Mark",
                "pool_stake_ada": 59384728.380198,
                "active_stake_ada": 21614280068.786568
            },
            {
                "epoch_no": 637,
                "snapshot": "Set",
                "pool_stake_ada": 59374153.627664,
                "active_stake_ada": 21609933343.537888
            },
            {
                "epoch_no": 636,
                "snapshot": "Go",
                "pool_stake_ada": 60005662.160775,
                "active_stake_ada": 21726240807.056576
            }
        ]
    },
    "meta": {
        "timestamp": "2026-06-14T17:04:22.507Z",
        "request_id": "1edbe9c1-3b2d-4deb-9eec-3ecb354532cb"
    },
    "status": "ok",
    "message": "Pool stake snapshot retrieved successfully",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "sample": {
            "first_pool": "pool1z5uqdk7dzdxaae5633fqfcu2eqzy3a3rgtuvy087fdld7yws0xt"
        },
        "source": "public Koios API (api.koios.rest), keyless",
        "service": "cardanopools-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/pool": "One pool in full: ticker/name plus live stake, saturation, delegators (pool_id; omit for the first).",
            "GET /v1/pools": "The stake-pool registry: margin, fixed cost, pledge (limit, offset).",
            "GET /v1/snapshot": "A pool's Mark/Set/Go stake snapshots per epoch (pool_id; omit for the first)."
        },
        "description": "Read Cardano's stake-pool operators (SPOs) live from the public Koios API: list the pools with margin, fixed cost and pledge, look up one pool in full with its registered identity (ticker, name, homepage) and on-chain economics (live stake, saturation, delegators, blocks), and read a pool's Mark/Set/Go stake snapshots. The operator layer for Cardano wallets, staking dashboards and pool explorers. Live, short cache only.",
        "upstream_status": "ok"
    },
    "meta": {
        "timestamp": "2026-06-14T17:04:22.812Z",
        "request_id": "dded3bb7-4572-4e58-aebd-125b636b827e"
    },
    "status": "ok",
    "message": "Meta",
    "success": true
}
```


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