# THORChain Cross-Chain Liquidity API
> Live cross-chain liquidity data from THORChain — the decentralised cross-chain automated market maker (AMM) that swaps native assets (BTC, ETH, BCH, AVAX and more) across separate blockchains without wrapping or bridging, settling every trade through its native RUNE asset and continuous liquidity pools. Read straight from a public THORNode REST endpoint as clean JSON. List every liquidity pool with its RUNE and asset depth, RUNE price and USD price, pool units and status; pull one pool's full depth and pricing; read the protocol's economics — total bonded RUNE, effective security bond, reserve and bonding / liquidity APY; get the current inbound vault address, router and gas rate for every connected chain plus halt flags; or read the last observed and signed block height per connected chain, THORChain's cross-chain heartbeat. Live, no cache. This is THORChain's cross-chain AMM, liquidity-pool and vault layer — distinct from single-chain explorers and from price feeds: continuous liquidity pools settled in RUNE.

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

## Pricing
- **Free** (Free) — 1,000 calls/Mo, 2 req/s
- **Starter** ($10/Mo) — 40,000 calls/Mo, 10 req/s
- **Pro** ($28/Mo) — 200,000 calls/Mo, 25 req/s
- **Business** ($67/Mo) — 1,000,000 calls/Mo, 50 req/s

## Endpoints

### Pools

#### `GET /v1/pools` — Every liquidity pool with depth, RUNE/USD price and status

**Parameters:**
- `status` (query, optional, string) — Filter by pool status Example: `Available`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/thorchain-api/v1/pools?status=Available"
```

**Response:**
```json
{
    "data": {
        "count": 41,
        "pools": [
            {
                "asset": "BTC.BTC",
                "status": "Available",
                "lp_units": 1970972.55490454,
                "pool_units": 101981355696984850,
                "balance_rune": 24204669.77941806,
                "savers_depth": 516.13139211,
                "synth_supply": 517.41641679,
                "balance_asset": 173.2777546,
                "asset_price_usd": 81806.551099,
                "asset_price_rune": 139687.11584065,
                "pending_inbound_rune": 0,
                "pending_inbound_asset": 1.56079849
            },
            {
                "asset": "ETH.ETH",
                "status": "Available",
                "lp_units": 632148.63501867,
                "pool_units": 2579645.17250745,
                "balance_rune": 6999670.01193978,
                "savers_depth": 2708.39863332,
                "synth_supply": 2732.14102394,
                "balance_asset": 1809.49086875,
                "asset_price_usd": 2265.441769,
                "asset_price_rune": 3868.30910994,
                "pending_inbound_rune": 0.01,
                "pending_inbound_asset": 0.01584
            },
            {
                "asset": "ETH.USDC-0XA0B86991C6218B36C1D19D4A2E9EB0CE3606EB48",
                "status": "Available",
                "lp_units": 300171.83269509,
                "pool_units": 2151812.241396,
                "balance_rune": 5771517.47869019,
 
…(truncated, see openapi.json for full schema)
```

### Pool

#### `GET /v1/pool` — One pool's full depth and pricing

**Parameters:**
- `asset` (query, required, string) — Pool asset CHAIN.SYMBOL Example: `BTC.BTC`

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

**Response:**
```json
{
    "data": {
        "asset": "BTC.BTC",
        "source": "THORChain",
        "status": "Available",
        "lp_units": 1970972.55490454,
        "pool_units": 101981355696984850,
        "balance_rune": 24204669.77941806,
        "savers_depth": 516.13139211,
        "synth_supply": 517.41641679,
        "balance_asset": 173.2777546,
        "asset_price_usd": 81806.551099,
        "asset_price_rune": 139687.11584065,
        "settlement_asset": "RUNE",
        "pending_inbound_rune": 0,
        "pending_inbound_asset": 1.56079849
    },
    "meta": {
        "timestamp": "2026-06-10T13:59:42.861Z",
        "request_id": "53bf8b57-1db0-4c9e-9c37-a064ebc0af9c"
    },
    "status": "ok",
    "message": "Pool retrieved successfully",
    "success": true
}
```

### Network

#### `GET /v1/network` — Protocol economics — bonded RUNE, security bond, reserve, APY

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

**Response:**
```json
{
    "data": {
        "source": "THORChain",
        "bonding_apy": null,
        "liquidity_apy": null,
        "gas_spent_rune": 1792825.27796318,
        "bond_reward_rune": 160097.02077834,
        "settlement_asset": "RUNE",
        "total_bond_units": 22511348,
        "vaults_migrating": false,
        "gas_withheld_rune": 2311803.86614277,
        "total_reserve_rune": 15835760.40018784,
        "available_pools_rune": 59171452.58830434,
        "vaults_liquidity_rune": 81563517.34048808,
        "effective_security_bond_rune": 55738050.01383084
    },
    "meta": {
        "timestamp": "2026-06-10T13:59:43.158Z",
        "request_id": "1c25293e-4ad8-4a95-a3aa-efa32928201d"
    },
    "status": "ok",
    "message": "Network state retrieved successfully",
    "success": true
}
```

### Inbound

#### `GET /v1/inbound` — Inbound vault address, router and gas rate per chain

**Parameters:**
- `chain` (query, optional, string) — Filter by chain Example: `ETH`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/thorchain-api/v1/inbound?chain=ETH"
```

**Response:**
```json
{
    "data": {
        "count": 1,
        "chains": [
            {
                "chain": "ETH",
                "halted": true,
                "router": "0xD37BbE5744D730a1d98d8DC97c42F0Ca46aD7146",
                "address": "0x2a6589cbb9694c2c265ab5d90d2ed9a010dc2209",
                "gas_rate": "15",
                "outbound_fee": "1000",
                "dust_threshold": "1000",
                "gas_rate_units": "gwei",
                "chain_trading_paused": true,
                "global_trading_paused": true
            }
        ],
        "source": "THORChain"
    },
    "meta": {
        "timestamp": "2026-06-10T13:59:43.456Z",
        "request_id": "f296c72d-94af-416f-86a8-e4973fa6cf28"
    },
    "status": "ok",
    "message": "Inbound addresses retrieved successfully",
    "success": true
}
```

### LastBlock

#### `GET /v1/lastblock` — Last observed/signed block height per connected chain

**Parameters:**
- `chain` (query, optional, string) — Filter by chain Example: `BTC`

**Example:**
```bash
curl -H "x-oanor-key: $KEY" \
  "https://api.oanor.com/thorchain-api/v1/lastblock?chain=BTC"
```

**Response:**
```json
{
    "data": {
        "count": 1,
        "blocks": [
            {
                "chain": "BTC",
                "last_signed_out": 26183225,
                "last_observed_in": 953106,
                "thorchain_height": 26538510
            }
        ],
        "source": "THORChain"
    },
    "meta": {
        "timestamp": "2026-06-10T13:59:43.594Z",
        "request_id": "8c52e172-2232-4b24-8f02-b1a7e3cfb295"
    },
    "status": "ok",
    "message": "Last block heights retrieved successfully",
    "success": true
}
```

### Meta

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

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

**Response:**
```json
{
    "data": {
        "note": "Amounts are RUNE/asset units (1e8-scaled); USD prices are derived from THORChain's TOR price.",
        "source": "THORNode REST (thornode.thorchain.liquify.com, live)",
        "service": "thorchain-api",
        "endpoints": {
            "GET /v1/meta": "This document.",
            "GET /v1/pool": "One pool's full depth and pricing (asset=BTC.BTC).",
            "GET /v1/pools": "Every liquidity pool with depth, RUNE/USD price and status (optional status=Available).",
            "GET /v1/inbound": "Inbound vault address, router and gas rate per chain, plus halt flags (optional chain=ETH).",
            "GET /v1/network": "Protocol economics — bonded RUNE, security bond, reserve, APY.",
            "GET /v1/lastblock": "Last observed/signed block height per connected chain (optional chain=BTC)."
        },
        "pool_count": 43,
        "description": "Live cross-chain liquidity data from THORChain, a decentralised cross-chain automated market maker (AMM) that swaps native assets (BTC, ETH, BCH, AVAX, …) across separate blockchains without wrapping or bridging, settling every trade through its native RUNE asset and continuous liquidity pools, via a public THORNode REST endpoint. The pools endpoint returns every liquidity pool with its RUNE and asset depth, RUNE price and USD price, pool units and status; the pool endpoint returns one pool's full depth and pricing; the network endpoint returns total bonded RUNE, effective security bo
…(truncated, see openapi.json for full schema)
```


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