# Pools & hooks

> Pool details for Uniswap v2, v3 and v4 on Robinhood Chain, and Uniswap v4 hooks with decoded permissions and risk flags.

Source: https://crius.sh/docs/reference/pools/

Pools are addressed by their pair/pool address (Uniswap v2 and v3) or their 32-byte pool id (Uniswap v4). v4 **hook** permissions are decoded from the hook address itself (its low 14 bits, as in Uniswap's `Hooks.sol`), and turned into plain risk flags such as `can_block_or_reprice_swaps` or `can_gate_liquidity_removal`.

| Endpoint | Method | Plan | Credits |
|---|---|---|---|
| [Pool detail](#pool-detail) | `GET /v1/{chain}/pool/{pool}` | Anonymous | 1 |
| [Uniswap v4 hooks](#uniswap-v4-hooks) | `GET /v1/{chain}/hooks` | Free | 2 |
| [Hook detail](#hook-detail) | `GET /v1/{chain}/hook/{address}` | Free | 2 |

## Pool detail

**GET** `/v1/{chain}/pool/{pool}`

**Plan:** Anonymous and above (no key needed) · **Cost:** 1 credit per call

Tokens, reserves and in-range liquidity, fee tier (dynamic fee for v4), hook, price, TVL and recent activity of one pool.

> Real reserves, prices both ways, TVL, stats per window, hook, LP status.

### Parameters

| Name | In | Type | Default | Description |
|---|---|---|---|---|
| `chain` | path, required | string |  | Chain slug (`robinhood`) or chain id (`4663`). |
| `pool` | path, required | string |  | Pool address (Uniswap v2/v3) or 32-byte pool id (Uniswap v4). |

### Request

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913" \
  -H "x-api-key: $CRIUS_API_KEY"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913", {
  headers: { "x-api-key": process.env.CRIUS_API_KEY },
});
const { data, meta } = await res.json();
```

**Python**

```python
import os, requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913",
    headers={"x-api-key": os.environ["CRIUS_API_KEY"]},
)
body = r.json()
print(body["data"])
```

[Try it in the playground →](https://crius.sh/docs/playground/?op=GET%20%2Fv1%2F%7Bchain%7D%2Fpool%2F%7Bpool%7D)

### Example response

Real response captured from the API (arrays trimmed to three items).

```json
{
  "data": {
    "created_block": 88461321,
    "created_ts": 1791990423100,
    "currency0": {
      "address": "0x0000000000000000000000000000000000000000",
      "decimals": 18,
      "price_usd": 2381.97,
      "symbol": "ETH"
    },
    "currency1": {
      "address": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8",
      "decimals": 18,
      "price_usd": 0.00000576413,
      "symbol": "CHARGE"
    },
    "dex": "uniswap_v4",
    "dynamic_fee": false,
    "factory": "0x8366a39cc670b4001a1121b8f6a443a643e40951",
    "fee": 0,
    "fee_bps": 0,
    "hook": {
      "address": "0xe5e702641ea86f4ae6cc3cdaed2b886f976be044",
      "name": "PonsV2MemeHook",
      "permissions": [
        "beforeInitialize",
        "afterSwap",
        "afterSwapReturnDelta"
      ],
      "risk": [
        "can_modify_swap_amounts"
      ]
    },
    "lp": {
      "locked_pct": 100,
      "locker": "pons_v2_launch_locker",
      "permanent": true,
      "status": "locked"
    },
    "pool": "0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913",
    "pool_manager": "0x8366a39cc670b4001a1121b8f6a443a643e40951",
    "state": {
      "initialized_ticks": 2,
      "last_block": 95433009,
      "liquidity": 29277002188455996438188,
      "price_0_in_1": 413240207,
      "price_1_in_0": 0.0000000024199,
      "real_quote_raised": null,
      "reserve0": 0,
      "reserve1": 0,
      "reserves": {
        "currency0": 1.44021,
        "currency1": 595151991,
        "kind": "real"
      },
      "sqrt_price_x96": 1610574686881614931072228111579696,
      "tick": 198405
    },
    "stats": {
      "all_time": {
        "buy_volume_usd": 107362,
        "buys": 2146,
        "first_trade_ts": 1791990423000,
        "sell_volume_usd": 113977,
        "sells": 1731,
        "since": "chain_start",
        "trades": 3877,
        "volume_usd": 221339
      },
      "avg_trade_usd": {
        "1h": null,
        "1m": null,
        "1s": null,
        "24h": 30.7463,
        "30s": null,
        "4h": 11.3632,
        "5m": null,
        "6h": 11.3632
      },
      "buy_volume_usd": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 238.251,
        "30s": 0,
        "4h": 7.40995,
        "5m": 0,
        "6h": 7.40995
      },
      "buyers": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 5,
        "30s": 0,
        "4h": 1,
        "5m": 0,
        "6h": 1
      },
      "buys": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 9,
        "30s": 0,
        "4h": 1,
        "5m": 0,
        "6h": 1
      },
      "last_trade_ts": 1792705534000,
      "sell_volume_usd": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 222.943,
        "30s": 0,
        "4h": 15.3164,
        "5m": 0,
        "6h": 15.3164
      },
      "sellers": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 6,
        "30s": 0,
        "4h": 1,
        "5m": 0,
        "6h": 1
      },
      "sells": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 6,
        "30s": 0,
        "4h": 1,
        "5m": 0,
        "6h": 1
      },
      "traders": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 10,
        "30s": 0,
        "4h": 2,
        "5m": 0,
        "6h": 2
      },
      "trades": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 15,
        "30s": 0,
        "4h": 2,
        "5m": 0,
        "6h": 2
      },
      "txns": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 15,
        "30s": 0,
        "4h": 2,
        "5m": 0,
        "6h": 2
      },
      "volume_eth": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 0.189336,
        "30s": 0,
        "4h": 0.00954709,
        "5m": 0,
        "6h": 0.00954709
      },
      "volume_usd": {
        "1h": 0,
        "1m": 0,
        "1s": 0,
        "24h": 461.194,
        "30s": 0,
        "4h": 22.7263,
        "5m": 0,
        "6h": 22.7263
      }
    },
    "swaps_indexed": 383,
    "tick_spacing": 200,
    "tvl_usd": 6861.07
  },
  "meta": {
    "block": 95504392,
    "block_age_ms": 419,
    "block_ts": 1792712995000,
    "chain": "robinhood",
    "finalized_block": 95493649,
    "lag_ms": 2,
    "safe_block": 95497061
  }
}
```

## Uniswap v4 hooks

**GET** `/v1/{chain}/hooks`

**Plan:** Free and above · **Cost:** 2 credits per call

Every v4 hook seen on chain, with pool count, volume and fees, verification status and risk. Filter by `verified`, `risk` or `launchpad`.

> Permissions decoded from the hook address; live pool counts.

### Parameters

| Name | In | Type | Default | Description |
|---|---|---|---|---|
| `chain` | path, required | string |  | Chain slug (`robinhood`) or chain id (`4663`). |
| `sort` | query | string | `pools` | Sort order. One of `pools`, `volume_24h`. |
| `verified` | query | boolean |  | `true` or `false`: only verified (or unverified) hooks. |
| `risk` | query | string |  | Only hooks with this risk flag. |
| `launchpad` | query | string |  | Launchpad id, such as `pons` or `flap` (see /launchpads). |
| `limit` | query | integer | `50` | Maximum number of items to return. |

### Request

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/hooks?sort=pools&limit=20" \
  -H "x-api-key: $CRIUS_API_KEY"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/hooks?sort=pools&limit=20", {
  headers: { "x-api-key": process.env.CRIUS_API_KEY },
});
const { data, meta } = await res.json();
```

**Python**

```python
import os, requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/hooks?sort=pools&limit=20",
    headers={"x-api-key": os.environ["CRIUS_API_KEY"]},
)
body = r.json()
print(body["data"])
```

## Hook detail

**GET** `/v1/{chain}/hook/{address}`

**Plan:** Free and above · **Cost:** 2 credits per call

One hook: its decoded permissions, risk flags, verification, the events it emits and the pools that use it.

### Parameters

| Name | In | Type | Default | Description |
|---|---|---|---|---|
| `chain` | path, required | string |  | Chain slug (`robinhood`) or chain id (`4663`). |
| `address` | path, required | string |  | Contract or wallet address, any case (`0x…`, 20 bytes). |

### Request

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/hook/0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544" \
  -H "x-api-key: $CRIUS_API_KEY"
```

**JavaScript**

```js
const res = await fetch("https://api.crius.sh/v1/robinhood/hook/0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544", {
  headers: { "x-api-key": process.env.CRIUS_API_KEY },
});
const { data, meta } = await res.json();
```

**Python**

```python
import os, requests

r = requests.get(
    "https://api.crius.sh/v1/robinhood/hook/0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544",
    headers={"x-api-key": os.environ["CRIUS_API_KEY"]},
)
body = r.json()
print(body["data"])
```
