---
title: "One pool"
method: GET
path: "/lp/pools/{pool}"
tags: ["Liquidity"]
---

# One pool

`GET /lp/pools/{pool}`

## Request

- Base URL: `https://api.getchord.xyz/v1`
- URL: `https://api.getchord.xyz/v1/lp/pools/{pool}`
- Auth: none declared

The pool row plus its hourly series (the last 168 hours by default; `hours` up to 720), the top providers over 7 days, the health score with its parts and reasons, launch facts (who launched it, how much of the liquidity the launcher holds and has pulled), and `mint` — what a wallet needs to add liquidity here (the position manager, the pool key, Permit2, tick spacing).

**Candles** (`open` / `high` / `low` / `close` of each hour, in dollars per token like `price`): built from this pool's own swaps in block order, swaps under $0.10 left out. A swap whose price is more than 10× away from at least half of the five swaps before it AND half of the five after it in the same pool is a misprint and is not part of the candle (a launch, a rug or a pump that holds keeps its prices: the swaps after it agree with it). A candle whose open or close is still 10× away from the candles around it is dropped (its hour keeps `vol` and `trades`) and counted in `candlesDropped`. An hour without a candle has the four fields `null`: no priced swap, two tokens in the hour, or an hour rolled before candles existed (2026-10-19) whose swaps are no longer kept. `price` is the hour's last swap of any size, unfiltered.

## Path parameters

- `pool` string, required: A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.

## Query parameters

- `chain` 5042 | 4663 | 143, required
- `hours` integer

## Response `200`

- object
  - `pool` string: A pool: a 20-byte contract address (V2 / V3) or a 32-byte Uniswap V4 pool id.
  - `dex` string
  - `kind` 'v2' | 'clmm' | 'v4'
  - `feeBps` number, nullable
  - `hooks` string, nullable: EVM address, hex, case-insensitive.
  - `lpAccess` 'open' | 'hooked' | 'unknown': `hooked` = a V4 hook can refuse adds.
  - `tickSpacing` integer, nullable
  - `token0` TokenLite: A token as it appears inside a pool row.
    - `address` string: EVM address, hex, case-insensitive.
    - `symbol` string, nullable: Symbol from the contract, or null while unresolved.
    - `decimals` integer, nullable: ERC-20 decimals.
    - `logo` string, nullable: Logo URL, or null.
    - `impostor` boolean: True when the symbol copies the chain's anchor (a token called USDC that is not the USDC predeploy). Flagged, never hidden.
  - `token1` TokenLite: A token as it appears inside a pool row.
    - `address` string: EVM address, hex, case-insensitive.
    - `symbol` string, nullable: Symbol from the contract, or null while unresolved.
    - `decimals` integer, nullable: ERC-20 decimals.
    - `logo` string, nullable: Logo URL, or null.
    - `impostor` boolean: True when the symbol copies the chain's anchor (a token called USDC that is not the USDC predeploy). Flagged, never hidden.
  - `tokenSide` integer, nullable: Which side is the non-anchor token (0 or 1).
  - `tvlUsd` number, nullable
  - `tvlSrc` string, nullable: Where TVL came from (`onchain`, `dexscreener`, …).
  - `tvlAt` integer, nullable: Unix time, seconds, UTC.
  - `vol` object
    - `h1` number
    - `h6` number
    - `h24` number
    - `d7` number
  - `fees` object: volume × the pool's fee tier.
    - `h1` number, nullable
    - `h6` number, nullable
    - `h24` number, nullable
  - `feeTvlPct` object: fees ÷ TVL, percent.
    - `h1` number, nullable
    - `h6` number, nullable
    - `h24` number, nullable
  - `aprPct` number, nullable: 24h fee/TVL × 365 — a full-range yardstick, not a promise.
  - `trades24h` integer
  - `wallets24h` integer
  - `priceUsd` number, nullable
  - `lpAdd24h` number
  - `lpRemove24h` number
  - `providers24h` integer
  - `firstSeenTs` integer: Unix time, seconds, UTC.
  - `createdTs` integer, nullable: Unix time, seconds, UTC.
  - `lastTradeHour` integer
  - `turnover24h` number, nullable: 24h volume ÷ TVL.
  - `suspect` boolean: Wash or launch-farm printing (volume without traders, dust TVL under real volume, turnover no honest pool reaches). Hidden by default; `flagged=1` shows them.
  - `score` integer: 0–100 health score (traders, TVL, yield sanity, LP flow, age, penalties).
  - `marketCapUsd` number, nullable: The tracked token's price × its total supply on this chain (for a bridged token: what was bridged here). On the list only; `null` when the pool tracks neither side, the tracked side is the native coin, or the supply is not on record yet.
  - `chain` integer
  - `hourly` object[]: Oldest first; hours with no swap are absent.
    - `hour` integer
    - `vol` number
    - `trades` integer
    - `price` number, nullable: The hour's last swap, any size.
    - `open` number, nullable: The candle's first price (see Candles above).
    - `high` number, nullable
    - `low` number, nullable
    - `close` number, nullable
  - `candlesDropped` integer: Candles of the series left out as misprints (their hours keep volume and trades).
  - `topLps` object[]
    - `wallet` string: EVM address, hex, case-insensitive.
    - `addUsd` number
    - `removeUsd` number
    - `netUsd` number
    - `events` integer
    - `lastTs` integer: Unix time, seconds, UTC.
  - `health` object
    - `score` integer
    - `parts` object
      - `traders` number
      - `tvl` number
      - `yieldSanity` number
      - `lpFlow` number
      - `age` number
      - `penalties` number
    - `reasons` string[]
  - `launch` object, nullable
    - `launcher` string, nullable: EVM address, hex, case-insensitive.
    - `launcherName` string, nullable
    - `creator` string, nullable: EVM address, hex, case-insensitive.
    - `hooks` string, nullable: EVM address, hex, case-insensitive.
    - `launchedTs` integer, nullable: Unix time, seconds, UTC.
    - `launcherLpAddedUsd` number
    - `totalLpAddedUsd` number
    - `launcherSharePct` number, nullable
    - `launcherLastRemoveTs` integer, nullable: Unix time, seconds, UTC.
    - `launcherRemovedUsd` number
  - `mint` object, nullable
    - `kind` string
    - `manager` string, nullable: EVM address, hex, case-insensitive.
    - `permit2` string: EVM address, hex, case-insensitive.
    - `token0` string: EVM address, hex, case-insensitive.
    - `token1` string: EVM address, hex, case-insensitive.
    - `feePips` integer, nullable
    - `tickSpacing` integer, nullable
    - `hooks` string: EVM address, hex, case-insensitive.
    - `feeRaw` integer, nullable: V4 dynamic-fee pools carry the 0x800000 flag.
    - `nativeCurrency0` boolean
  - `updatedAt` integer: Unix time, milliseconds — when the server built this answer.

## Other responses

- `400`: Invalid parameters — `error` names the check that failed (`INVALID_PARAMS`, `BAD_ADDRESS`, `BAD_LIMIT`, `BAD_HOURS`, …).
- `404`: Nothing at this identity (`NOT_FOUND`, `UNKNOWN_TOKEN`, `NO_ROUTE`).

---

[API](https://skmtc.dev/getchord/apis/chord-api.md) · [All operations](https://skmtc.dev/getchord/apis/chord-api/llms.txt) · [OpenAPI document](https://skmtc.dev/getchord/apis/chord-api/revisions/d3bc4640fea0?raw)
