How Robinhood Chain token prices work (confidence and thin liquidity)
How the Crius API prices Robinhood Chain tokens from on-chain pools, how the price pool is picked, and what confidence and thin_liquidity mean.
Every USD price in the Crius API is read from Robinhood Chain’s own pools. For each token, Crius picks the market a trade could actually use (the pool with the most liquidity within ±2% of its current price), reads the token’s price in that pool’s quote asset (ETH, WETH, USDG or another token), and converts the quote to USD through the deepest ETH/USDG pool. Each price comes with the pool it came from, that pool’s liquidity and a confidence level, so you can tell a deep market from a pool that holds a few dollars.
One price and its source
CHARGE: a graduated Pons token priced from its v4 pool
What is Charge AI (0x7b8892cea949bc60d494681d1bc3ea96071ab0b8) worth in USD, and where does that number come from?
curl "https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/price"const res = await fetch("https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/price");const { data, meta } = await res.json();import requests
r = requests.get( "https://api.crius.sh/v1/robinhood/token/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8/price",)body = r.json()print(body["data"])Real response 200 Captured Oct 28, 2026 · 25 lines (arrays trimmed)
{ "data": { "confidence": "medium", "dex": "uniswap_v4", "eth": 0.00000000165124, "eth_usd": 2355.49, "liquidity_usd": 5604.57, "quote": "0x0000000000000000000000000000000000000000", "quote_liquidity_usd": 2802.29, "source_pool": "0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913", "symbol": "CHARGE", "thin_liquidity": false, "token": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8", "usd": 0.00000388948 }, "meta": { "block": 100406772, "block_age_ms": 654, "block_ts": 1793225075000, "chain": "robinhood", "finalized_block": 100397649, "lag_ms": 66, "safe_block": 100401329 }}What this tells you
usd: 0.00000388948andeth: 0.00000000165124are the price of one whole token.source_poolis the Uniswap v4 pool0x871b166182fd708d5d16a4daa9a42f05a653fa51ee2b195097f425e0d9ca4913(dex: "uniswap_v4"), quoted in native ETH (quote: "0x0000000000000000000000000000000000000000").eth_usd: 2355.49is the ETH/USD rate used to convert, read from the deepest ETH/USDG pool at the same block.quote_liquidity_usd: 2802.29is the ETH side of the pool;liquidity_usd: 5604.57is twice that, the convention DEX screeners use.confidence: "medium": the pool holds between $1,000 and $10,000, so a large sell would move the price a lot.
How the price pool is chosen
-
Bonding tokens: the curve. While a launchpad token is still on its bonding curve, the curve is its market, whatever its size. Its liquidity is twice the real quote raised (the curve’s virtual reserves can’t be withdrawn).
-
Everything else: the deepest market. All the token’s pools (v2, v3 and v4, every fee tier) are candidates. They are ranked by ±2% depth: the value of the liquidity within 2% of the pool’s current price. Liquidity parked far from the price doesn’t count, because no trade can use it at that price.
-
Pools that never set a price. A pool is skipped when its swap fee is 25% or more (decoy pools nobody trades in), when its in-range liquidity is under $50 while a real market exists, when it is one-sided (within ±2% of its price the token side is worth less than 1% of the quote side: a lone bid at an absurd price), when the price would make the token’s FDV more than 1,000,000 times the pool’s liquidity, or when a v3/v4 pool’s position math claims more tokens than the pool or the PoolManager actually holds.
-
Converting the quote to USD. ETH and WETH convert through the deepest ETH/USDG pool, and USDG counts as $1. Any other quote asset (a tokenized stock, another token) converts through its own direct ETH or USDG market, one hop only. That market must hold at least $5,000, or $100,000 for quote tokens Crius hasn’t marked as trusted, and a token that calls itself USDG, WETH or ETH without being the real contract is never used as a quote.
A pool quoted through an untrusted hop must be four times deeper than the best direct ETH or USDG pool to win, because its price carries its quote’s own market error. Trusted quotes (tokenized stocks, launchpad quote tokens) compete on depth alone. The Uniswap concept page explains how v3 and v4 in-range liquidity is measured.
Confidence and thin liquidity
| Value | When |
|---|---|
confidence: "high" | The price pool's liquidity_usd is $10,000 or more |
confidence: "medium" | $1,000 to $10,000 |
confidence: "low" | Under $1,000, or a thin price |
thin_liquidity: true | No pool passed the checks above. The price comes from the deepest of the thin pools as a fallback (a fresh single-sided launch pool, for example), and confidence is always low |
A thin price: no real market behind it
COGE (0x0e18c1d0413b573ecfd70b192b95a178119d5222) has a price. Can I trust it?
curl "https://api.crius.sh/v1/robinhood/token/0x0e18c1d0413b573ecfd70b192b95a178119d5222/price"const res = await fetch("https://api.crius.sh/v1/robinhood/token/0x0e18c1d0413b573ecfd70b192b95a178119d5222/price");const { data, meta } = await res.json();import requests
r = requests.get( "https://api.crius.sh/v1/robinhood/token/0x0e18c1d0413b573ecfd70b192b95a178119d5222/price",)body = r.json()print(body["data"])Real response 200 Captured Oct 28, 2026 · 25 lines (arrays trimmed)
{ "data": { "confidence": "low", "dex": "uniswap_v4", "eth": 0.00000000369817, "eth_usd": 2355.49, "liquidity_usd": 0, "quote": "0x4a0e65a3eccec6dbe60ae065f2e7bb85fae35eea", "quote_liquidity_usd": 0, "source_pool": "0x2ca6e3aec9006c83b96a8e600feba99827195ceec87040ff01d19306352c6c92", "symbol": "COGE", "thin_liquidity": true, "token": "0x0e18c1d0413b573ecfd70b192b95a178119d5222", "usd": 0.000008711 }, "meta": { "block": 100410192, "block_age_ms": 522, "block_ts": 1793225425000, "chain": "robinhood", "finalized_block": 100401329, "lag_ms": 77, "safe_block": 100405028 }}What this tells you
thin_liquidity: trueandconfidence: "low": no pool of this token passed the checks, so the price is a fallback.liquidity_usd: 0andquote_liquidity_usd: 0: there is nothing on the other side to sell into.quoteis0x4a0e65a3eccec6dbe60ae065f2e7bb85fae35eea, another token rather than ETH or USDG, so the USD value also depends on that token’s own market (a one-hop quote).usd: 0.000008711is a last price, not a value anyone could realize. Show it with a warning, and leave it out of portfolio totals and automated trades.
A tokenized stock: NVDA priced against USDG
What is the on-chain price of NVIDIA's Robinhood token (0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec)?
curl "https://api.crius.sh/v1/robinhood/token/0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec/price"const res = await fetch("https://api.crius.sh/v1/robinhood/token/0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec/price");const { data, meta } = await res.json();import requests
r = requests.get( "https://api.crius.sh/v1/robinhood/token/0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec/price",)body = r.json()print(body["data"])Real response 200 Captured Oct 28, 2026 · 25 lines (arrays trimmed)
{ "data": { "confidence": "high", "dex": "uniswap_v3", "eth": 0.090983, "eth_usd": 2355.49, "liquidity_usd": 1415158, "quote": "0x5fc5360d0400a0fd4f2af552add042d716f1d168", "quote_liquidity_usd": 707579, "source_pool": "0xd4eb21209c4d6093f80b5b84f5c45cc093ea14a3", "symbol": "NVDA", "thin_liquidity": false, "token": "0xd0601ce157db5bdc3162bbac2a2c8af5320d9eec", "usd": 214.31 }, "meta": { "block": 100410171, "block_age_ms": 448, "block_ts": 1793225423000, "chain": "robinhood", "finalized_block": 100401329, "lag_ms": 138, "safe_block": 100405028 }}What this tells you
usd: 214.31from a Uniswap v3 pool (dex: "uniswap_v3",source_pool: "0xd4eb21209c4d6093f80b5b84f5c45cc093ea14a3") quoted in USDG (quote: "0x5fc5360d0400a0fd4f2af552add042d716f1d168").liquidity_usd: 1415158: well above $10,000, soconfidence: "high".eth: 0.090983is the same price in ETH, converted ateth_usd: 2355.49.- Tokenized stocks follow exactly the same rules as any other token: the price is what the chain’s pools say, not a feed from the stock exchange.
Where the price is used
- Market cap and FDV.
market_cap_usdis the price × (total supply − burned tokens), andfdv_usdis the price × total supply. See Responses & conventions. - Holdings.
value_usdon holders and wallet holdings is the balance × price, capped at what the price pool’s quote side could pay out: a position is never worth more than the market that prices it. - Trades.
price_usdandvalue_usdon each trade are fixed when the trade is indexed, with that block’s ETH/USD (eth_usd_at_trade). They don’t change when the price moves later. - Candles. USD candles merge the token’s real markets (pools with at least $1,000 or 2% of its liquidity, plus its launch curve) and leave out outlier trades, so a $1 trade in a side pool can’t draw a wick. See OHLCV candles.
- Rankings.
list=top_market_capleaves out prices from thin markets.
Use it in your app
-
Read the price with its context. Use
/token/{address}/pricefor one token or/pricesfor up to 100 at a time (1 credit per call, no key needed). -
Gate on
confidence. Usehighprices for valuations and alerts. Showmediumprices with the pool’s liquidity next to them. Treatlowandthin_liquidityprices as indicative only. -
Compare liquidity with your trade size.
quote_liquidity_usdis roughly what the whole pool could pay for tokens. An order that is a large share of it will move the price far fromusd. -
Handle tokens with no price. A token with no usable market yet returns
data: null. Show “no market” instead of $0.
// Price with a trust level, for a portfolio total or an alert.const res = await fetch(`https://api.crius.sh/v1/robinhood/token/${token}/price`);const { data, meta } = await res.json();
if (!data) { console.log("no market yet");} else if (data.thin_liquidity || data.confidence === "low") { console.log(`~$${data.usd} (indicative only: $${data.liquidity_usd} liquidity)`);} else { console.log(`$${data.usd} from ${data.dex} pool ${data.source_pool} at block ${meta.block}`);}Frequently asked questions
Where do Crius token prices come from?
From Robinhood Chain's own pools only. Each token is priced in its deepest market (a Uniswap v2, v3 or v4 pool, or its launchpad bonding curve while it is still bonding), and the quote asset is converted to USD through the deepest ETH/USDG pool. No exchange or off-chain price feed is used.
What does `confidence` mean on a price?
How much liquidity backs it. high means the price pool holds $10,000 or more (liquidity_usd), medium $1,000 to $10,000, low under $1,000. A price with thin_liquidity: true is always low.
Why does a token show a large market cap with almost no liquidity?
Market cap is price × supply, and the price can come from a small pool. A $1 billion market cap backed by a few thousand dollars of liquidity can't be sold at that value. Check liquidity_usd and confidence before you trust a valuation. Holder and wallet value_usd are capped at what the price pool's quote side could pay out.
Are tokenized stock prices the same as the stock exchange price?
No. Tokenized stocks such as NVDA are priced from their Robinhood Chain pools like every other token, so the price is what traders on the chain are paying. It can differ from the exchange price, for example outside market hours.
How often do prices update?
Every block (about every 100 ms). A price is recomputed for the newest block when you ask for it, and meta.block tells you which block it reflects. For a push feed, subscribe to price:<token> on the WebSocket stream.
Related
Get your free Crius API key
Every example on this page works with a free key: higher rate limits than the anonymous plan, holders, wallets and the WebSocket stream. No card needed.
- Robinhood Chain (4663) only, from our own archive nodes
- REST + WebSocket
- Pay on-chain or by card