Robinhood Chain API for risk and compliance
Screen Robinhood Chain tokens and wallets with the Crius API: security checks, insider launches, funding links, developer history and LP locks.
Risk teams on Robinhood Chain (exchanges and launchpads deciding what to list, wallets deciding what to warn about, trust-and-safety teams and researchers investigating a rug) need the same answers again and again: can this token be sold, who bought its launch, who funded those wallets, what has this developer launched before, and can the liquidity be pulled. The Crius API answers each with one call and returns the evidence (wallets, blocks, shares of supply), so a decision can be explained and checked later.
Endpoints a risk review uses
- GET
/token/{address}/securitythe first gate for every token: honeypot, realized taxes, owner powers, LP status, hook risk, and launch flags such asinsider_launchandwallet_farm. - GET
/token/{address}/bundleswho bought the first blocks, bundled buys, funding clusters and how much of the supply they still hold. - GET
/dev/{address}the creator’s track record: tokens launched, graduated, rugged, peak market caps. - GET
/wallet/{address}/connectionswho funded a wallet, who it funded and which wallets share a funder. - GET
/token/{address}/bubblemapfunding and transfer links among the top holders, with infrastructure set aside. - GET
/token/{address}/liquidityevery LP position: burned, locked (which locker, until when) or held by a wallet that can pull it.
Suggested architecture
-
Gate everything cheaply. Run
/security(1 credit) on every token you might list or show. Rejectcritical; sendhighand anything with launch flags to review. -
Review in depth only what passes the gate. A full review costs about 31 credits a token: liquidity (5), bundles (10), bubble map (10), developer profile (5) and the security check (1). Bundles, bubble maps and wallet connections need a Starter key.
-
Follow the money for the wallets that matter. For the dev and the top snipers, call
/wallet/{address}/connections(10 credits) to see who funded them and who else that funder paid. -
Keep the evidence. Save each response with its
meta.block. For decisions that must not be reversed by a reorg, use data whose block is at or belowmeta.safe_block. -
Re-check on change. Taxes, LP and holder concentration change after launch. Subscribe to
tax:<token>andlp:<token>on the stream, or re-run the gate on a schedule.
Who bought the launch
An insider launch: four wallets took 61% of the supply
Rebot (0x192b126efea71ca5e7767bc6fc53038d869fbbba) fell 97% within hours. Who bought its first blocks?
curl "https://api.crius.sh/v1/robinhood/token/0x192b126efea71ca5e7767bc6fc53038d869fbbba/bundles" \ -H "x-api-key: $CRIUS_API_KEY"const res = await fetch("https://api.crius.sh/v1/robinhood/token/0x192b126efea71ca5e7767bc6fc53038d869fbbba/bundles", { 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/token/0x192b126efea71ca5e7767bc6fc53038d869fbbba/bundles", headers={"x-api-key": os.environ["CRIUS_API_KEY"]},)body = r.json()print(body["data"])Real response 200 Captured Oct 28, 2026 · 99 lines (arrays trimmed)
{ "data": { "bundle_supply_pct": 1, "bundle_supply_pct_now": 0, "bundled": true, "bundles": [ { "block": 100238938, "bought": 10000000.000000000905969664, "cost_eth": 0.0174316, "funder": null, "id": "b_1", "still_holding_pct": 0, "supply_pct": 1, "type": "launch_tx_buy", "wallets": [ "0xa6aeefb9c26ec96eb5fbde3ade8632ab2a8ac864" ] } ], "clusters": [], "dev": { "address": "0xa6aeefb9c26ec96eb5fbde3ade8632ab2a8ac864", "bought_in_launch_tx": true, "first_buy_pct": 1, "funded_by": null, "holding_pct": 0 }, "early_buyers_analyzed": 54, "insider_launch": true, "launch": { "flags": [ "insider_launch" ], "lp_top_wallet": { "address": "0x6e8244ba97cbb7d136aafc667e8da302140dbc5b", "liquidity_usd": 5.70259, "pct": 0.0996139 }, "sniper_supply_pct": 60.9726, "sniper_top_wallet_pct": 53.1794, "sniper_wallets": 4, "sniper_window_blocks": 10, "uniform_holders": null, "wallet_farm": null }, "snipers": { "count": 4, "still_holding_pct": 0, "supply_pct": 60.9726, "wallets": [ { "address": "0xa6aeefb9c26ec96eb5fbde3ade8632ab2a8ac864", "tags": [ "dev", "sniper" ] }, { "address": "0x0f0bb85fddc70f04344bc7704bb940e387ae7762", "tags": [ "sniper" ] }, { "address": "0x5051e45b2dbecf1b2041af3937bd85fc0dc43cd4", "tags": [ "sniper" ] }, { "address": "0x217be8970fa83b0864ca06d3c18ea6d9ac04e3a5", "tags": [ "sniper" ] } ], "window_blocks": 10 }, "trader_funding": { "bridge": 18, "dev_linked": 1, "other_wallets": 21, "protocol": 3, "unknown": 6, "unlabeled_hub": 5 } }, "meta": { "block": 100406882, "block_age_ms": 1103, "block_ts": 1793225086000, "chain": "robinhood", "finalized_block": 100397649, "lag_ms": 134, "safe_block": 100401329, "scope": "first 300 blocks of trading" }}What this tells you
insider_launch: true:snipers.count: 4wallets boughtsupply_pct: 60.9726of the supply in the first 10 blocks (window_blocks: 10), and one of them took 53.1794% (launch.sniper_top_wallet_pct).- The first sniper,
0xa6aeefb9c26ec96eb5fbde3ade8632ab2a8ac864, is taggeddevandsniper: the developer bought in its own launch transaction (dev.bought_in_launch_tx: true, bundle typelaunch_tx_buy, 1% of supply). snipers.still_holding_pct: 0anddev.holding_pct: 0: every sniper has sold. The supply went to the buyers who came after.trader_fundingshows where the early traders’ ETH came from: 18 from a bridge, 21 from other wallets, 5 from unlabeled hubs, 1 linked to the dev.meta.scope: "first 300 blocks of trading": the analysis covers the launch window,early_buyers_analyzed: 54wallets.
The developer’s record
A creator with one token, graduated and not rugged
What else has CHARGE's creator (0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca) launched, and how did it end?
curl "https://api.crius.sh/v1/robinhood/dev/0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca" \ -H "x-api-key: $CRIUS_API_KEY"const res = await fetch("https://api.crius.sh/v1/robinhood/dev/0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca", { 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/dev/0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca", headers={"x-api-key": os.environ["CRIUS_API_KEY"]},)body = r.json()print(body["data"])Real response 200 Captured Oct 28, 2026 · 61 lines (arrays trimmed)
{ "data": { "address": "0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca", "first_seen_ts": 1792283372000, "funded_by": { "address": "0xd782268f600403843484b70710daee6846fc0db8", "amount_eth": 0.008148386337868892, "label": "bridge:Relay solver" }, "summary": { "best_ath_market_cap_usd": 68675.8, "by_launchpad": { "pons": 1 }, "graduated": 1, "graduation_rate_pct": 100, "median_ath_market_cap_usd": 68675.8, "rugged": 0, "tokens_created": 1 }, "tokens": [ { "address": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8", "ath_market_cap_usd": 68675.8, "ath_scope": "all_time", "created_block": 88385886, "created_ts": 1791982834000, "deployed_via": "launchpad", "dev_sold_pct": null, "launchpad": "pons", "launchpad_name": "Pons", "liquidity_usd": 5611.81, "logo": "https://api.crius.sh/v1/robinhood/logo/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8.png?size=128", "market_cap_usd": 3773.42, "name": "Charge AI", "rugged": false, "status": "graduated", "symbol": "CHARGE" } ], "top_tokens": [ { "address": "0x7b8892cea949bc60d494681d1bc3ea96071ab0b8", "ath_market_cap_usd": 68675.8, "logo": "https://api.crius.sh/v1/robinhood/logo/0x7b8892cea949bc60d494681d1bc3ea96071ab0b8.png?size=128", "symbol": "CHARGE" } ] }, "meta": { "block": 100406874, "block_age_ms": 1212, "block_ts": 1793225085000, "chain": "robinhood", "finalized_block": 100397649, "lag_ms": 26, "next_cursor": null, "rugged_rule": "market cap < 10% of ATH (ATH > $5k) and liquidity < $500", "safe_block": 100401329 }}What this tells you
summary.tokens_created: 1,graduated: 1,rugged: 0: one Pons launch (by_launchpad.pons: 1) that graduated.best_ath_market_cap_usd: 68675.8, while the token’smarket_cap_usdis now 3773.42. It isn’t counted as rugged because its liquidity (5611.81) is above the $500 inmeta.rugged_rule.funded_byis a Relay solver (label: "bridge:Relay solver",amount_eth: 0.008148386337868892): the creator’s first ETH was bridged in, so there is no earlier wallet to trace.- A serial rugger looks different: many
tokens, several withrugged: true, and a lowgraduation_rate_pct.
// Two-stage token review: a cheap gate, then the deep checks (Starter key).const API = "https://api.crius.sh/v1/robinhood";const get = (p) => fetch(API + p, { headers: { "x-api-key": process.env.CRIUS_API_KEY } }).then((r) => r.json());
async function review(token) { const sec = await get(`/token/${token}/security`); if (sec.data.risk === "critical") return { verdict: "reject", why: sec.data.flags, block: sec.meta.block }; const [bundles, liquidity] = await Promise.all([get(`/token/${token}/bundles`), get(`/token/${token}/liquidity`)]); const reasons = []; if (bundles.data.insider_launch) reasons.push(`insider launch: snipers took ${bundles.data.snipers.supply_pct}%`); if (liquidity.data.summary.unlocked_in_wallets_pct > 50) reasons.push("most LP can be withdrawn"); return { verdict: reasons.length ? "review" : "pass", reasons, block: sec.meta.block };}Each check has its own guide: snipers and bundles, developer history, connected wallets, bubble maps and LP locks. The score that ties them together is explained in Token security score.
Frequently asked questions
How does Crius decide a token was rugged?
A developer's token counts as rugged when its market cap is under 10% of its all-time high (and that high was above $5,000) and its liquidity is under $500. The rule is returned with every developer profile as meta.rugged_rule, so your reports can quote it.
Can I show what the data looked like when a decision was made?
Yes. Store meta.block with every decision. Holder snapshots (at=block:…) and bubble maps (block=) can be fetched again for that block later, so a reviewer sees the same holders you did.
Does the Crius API do sanctions or identity screening?
No. It is on-chain analytics: contracts, trades, holders, funding links and launch behaviour on Robinhood Chain. It has no sanctions lists and no identity data; use a dedicated provider for those.
Do exchange and bridge deposits link unrelated wallets?
No. Funding from exchanges, bridges and app relayers (one signer paying the same 100+ wallets again and again) never links wallets into a cluster, and exchange wallets are treated as infrastructure, not holders.
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