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 | GET /v1/{chain}/pool/{pool} |
Anonymous | 1 |
| Uniswap v4 hooks | GET /v1/{chain}/hooks |
Free | 2 |
| Hook detail | GET /v1/{chain}/hook/{address} |
Free | 2 |
Pool detail
Section titled “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
Section titled “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
Section titled “Request”curl "https://api.crius.sh/v1/robinhood/pool/0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913" \ -H "x-api-key: $CRIUS_API_KEY"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();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"])Example response
Section titled “Example response”Real response captured from the API (arrays trimmed to three items).
{ "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
Section titled “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
Section titled “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
Section titled “Request”curl "https://api.crius.sh/v1/robinhood/hooks?sort=pools&limit=20" \ -H "x-api-key: $CRIUS_API_KEY"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();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
Section titled “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
Section titled “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
Section titled “Request”curl "https://api.crius.sh/v1/robinhood/hook/0x4e3468951d49f2eea976ed0d6e75ffcb44a9a544" \ -H "x-api-key: $CRIUS_API_KEY"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();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"])