Skip to content
Chains, stats & usage

LCX Liberty. American DeFi. Your keys. Your assets. Your control.

API reference

Chains, stats & usage

Which chains are live, how fresh each index is, and where your own quota stands.

Chains

GET/v1/chains

Supported chains and per-chain index health. Never counts against your quota.

routerDeployed is the field to check before you offer a user a swap button. It is true on every chain we currently support. Read it from here rather than keeping your own list, so a chain added later needs no change on your side, for the same reason as wrappedNative below.

Each chain also carries nativeSymbol and defaultPair, the pair a UI should open on, as complete token rows rather than addresses. That exists so a client needs no hardcoded token to render its first frame: ours used to ship a per-chain token array and dereference its first element, which crashes the page the moment the array is empty.

wrappedNative is the chain's wrapped-native ERC-20. Price that contract when you want the native currency's USD value, because the native token has no address of its own. Pass it to /v1/price without decimals, since it is always one of the chain's routing hubs and we resolve those for you. Take it from here rather than keeping a table of WETH addresses. A table is one new chain away from being wrong, and it goes wrong silently.

Stats

GET/v1/stats

Index size and engine throughput, read live rather than published as a claim. Unlike the three above, /v1/stats does count against your quota.

pools and tokens are totals across every chain we index, not per-chain figures. The endpoint takes no chain parameter, and one passed is ignored rather than honored. For a single chain's token universe, page GET /v1/tokens?chain=…. tokens counts what we hold display metadata for, which is a subset of what appears in some pool somewhere: a token reaches this number by trading against one of the chain's routing hubs.

The benchmark is two numbers because one would flatter us. A small trade on a deep pair is mostly a lookup. A 500 WETH order that splits across several pools is the work.

json
{
  "pools": 459689,
  "tokens": 450210,
  "venues": 46,
  "chains": 4,
  "swapFeeBps": 0,
  "benchmark": {
    "smallTrade":      { "quotesPerSecond": 588, "medianQuoteMs": 10, "p95QuoteMs": 10.5 },
    "largeSplitTrade": { "quotesPerSecond": 330, "medianQuoteMs": 19, "p95QuoteMs": 19.7 },
    "measuredAt": 1785571239,
    "measuredOn": { "threads": 12, "poolsLoaded": 120253, "pair": "WETH/USDC on Ethereum" },
    "note": "Measured by this process on a warm index, not a recorded figure. ..."
  }
}

Usage

GET/v1/usage

Your plan, calls used and remaining, plus both halves of the rate limit. Never counts against your quota. For an anonymous caller the quota fields are null: an IP has no account, and that is a different thing from an account with nothing left.