CRIUS Docs
API status Get API key
Safety & risk

Get a Robinhood Chain token security score

Score any Robinhood Chain token from 0 to 100 with one API call. Honeypot, buy and sell taxes, owner powers, LP locks, v4 hook risk and insider launches, with real examples.

Updated 3 min read
Short answer

Call GET /v1/robinhood/token/{address}/security. It returns a score from 0 to 100, a risk level (low, medium, high, critical) and the flags that cost points: honeypot (−100), taxes over 10% (−30), insider launch (−50), unlocked liquidity (−20), risky Uniswap v4 hook (−10 to −60) and more. No API key needed.

The security score is a single number, 0 to 100, that sums up everything Crius checks about a Robinhood Chain token: whether you can sell it, what it really costs to buy and sell, what the owner can still change, whether the liquidity can be pulled, how risky its Uniswap v4 hook is and whether insiders bought the launch. You start at 100 and each problem found subtracts points.

Get the score in one call

A clean graduated Pons token: score 95

sockets (0xddccd4690cc99cf19d2e0bdbcb390d17e913958a) launched on Pons and graduated to Uniswap v4. Is it safe to trade?

GET/v1/robinhood/token/0xddccd4690cc99cf19d2e0bdbcb390d17e913958a/security
curl "https://api.crius.sh/v1/robinhood/token/0xddccd4690cc99cf19d2e0bdbcb390d17e913958a/security"
Real response 200 Captured Oct 28, 2026 · 187 lines (arrays trimmed)
{
"data": {
"contract": {
"blacklist": false,
"can_change_limits": false,
"can_change_tax": false,
"cooldown": false,
"implementation": null,
"is_proxy": false,
"mintable": false,
"owner": null,
"ownership": "none",
"pausable": false,
"proxy_kind": null,
"self_destruct": false,
"trading_switch": false,
"upgradeable": false,
"verified": null
},
"flags": [
"unverified"
],
"honeypot": {
"is_honeypot": false,
"reason": null,
"selective": false
},
"hook": {
"address": "0xe5e702641ea86f4ae6cc3cdaed2b886f976be044",
"capabilities": {
"can_block_swaps": false,
"can_gate_liquidity": false,
"can_modify_liquidity_amounts": false,
"can_modify_swap_amounts": true
},
"code": {
"admin_functions": [],
"checked_ts": 1793207140434,
"code_hash": "0xc21b1e6c1b45403e81a581f22ed6d9c747997af1cfdac1b1dc9f4b1d346a10db",
"family": "0xabda3266e50c",
"kind": "contract",
"logic": null,
"owner": "0x263ed295dafae1d9aadd6e56c4b6f9f38ee019dd",
"ownership": "active",
"size": 15167
},
"family": {
"honeypot_pct": 0,
"hooks": 22,
"id": "0xabda3266e50c",
"liquidity_pulled_pct": 0.684086,
"pools_traded": 10525,
"taxed_pct": 51.9715,
"verified_hooks": 1
},
"flags": [],
"name": "PonsV2MemeHook",
"observed": {
"dynamic_tax_pools": 13,
"first_trade_ts": 1785866942000,
"honeypot_pools": 0,
"last_trade_ts": 1793223683000,
"liquidity_pulled_pct": 0.66813,
"liquidity_pulled_pools": 70,
"max_buy_tax_pct": 10.99,
"max_sell_tax_pct": 0.7,
"median_pool_life_min": 53423.5,
"pools": 10478,
"pools_traded": 10477,
"tax_measured_pools": 10392,
"taxed_10pct_pools": 35,
"taxed_pools": 5463,
"volume_usd": 5384607135
},
"pattern": {
"description": "hooks that change swap amounts only",
"honeypot_pct": 0.0696347,
"id": "swap_delta_only",
"liquidity_pulled_pct": 7.93603,
"pools_traded": 43082,
"taxed_pct": 15.7537
},
"permissions": [
"beforeInitialize",
"afterSwap",
"afterSwapReturnDelta"
],
"risk": [
"can_modify_swap_amounts"
],
"risk_level": "low"
},
"known_asset": false,
"launch": {
"flags": [],
"lp_top_wallet": {
"address": "0x34062c5519d27d399b1deb897b6c769683ec7fa3",
"liquidity_usd": 106.386,
"pct": 0.549474
},
"sniper_supply_pct": 30.1177,
"sniper_top_wallet_pct": 24.0035,
"sniper_wallets": 6,
"sniper_window_blocks": 10,
"uniform_holders": null,
"wallet_farm": null
},
"limits": {},
"liquidity": {
"status": "partially_locked",
"summary": {
"burned_pct": 0,
"locked_pct": 98.9946,
"next_unlock_ts": null,
"protocol_fee_pct": 0,
"unlocked_in_wallets_pct": 1.00542,
"weighting": "by pool liquidity_usd"
}
},
"primary_dex": "uniswap_v4",
"risk": "low",
"score": 95,
"tax": {
"buy_pct": 2.69,
"confidence": "high",
"realized": {
"buy_pct": 2.69,
"by_wallet_class": {
"dev_sell_pct": null,
"others_sell_pct": 0
},
"last_sample_ts": 1793225076000,
"max_sell_pct_seen": 65.93,
"samples": {
"buys": 4144,
"sells": 3423
},
"sell_pct": 0,
"window": "30d"
},
"sell_pct": 0,
"simulated": null,
"source": "realized",
"transfer_pct": null
},
"tax_history": [
{
"from_block": 100193859,
"pct": 0,
"side": "buy"
},
{
"from_block": 100193869,
"pct": 0,
"side": "sell"
},
{
"from_block": 100213206,
"pct": 3,
"side": "buy"
},
{
"from_block": 100342818,
"pct": 0,
"side": "buy"
},
{
"from_block": 100344806,
"pct": 3,
"side": "buy"
}
],
"tax_history_total": 7,
"tax_mode": "dynamic",
"token": "0xddccd4690cc99cf19d2e0bdbcb390d17e913958a"
},
"meta": {
"block": 100406831,
"block_age_ms": 624,
"block_ts": 1793225081000,
"chain": "robinhood",
"finalized_block": 100397649,
"lag_ms": 32,
"safe_block": 100401329,
"simulation": "no V2 WETH pair: realized tax only"
}
}

What this tells you

  • score: 95, risk: "low": the only flag is unverified (−5), because the contract source isn’t published on an explorer.
  • honeypot.is_honeypot: false: thousands of wallets have sold.
  • tax.buy_pct is about 2.7% and tax.sell_pct is 0, measured from real trades (tax.source: "realized", confidence: "high"). The buy side is Pons’s standard fee.
  • contract.ownership: "none": nobody can mint, blacklist, pause or change taxes.
  • liquidity.summary.locked_pct is about 97%: the LP sits in Pons’s permanent launch locker.
  • hook.risk_level: "low": the PonsV2MemeHook has thousands of traded pools with no honeypots.
Security checks reference Runs from your browser on the anonymous plan Data looks wrong? Report it

An insider launch: score 45

Rebot (0x192b126efea71ca5e7767bc6fc53038d869fbbba) has a clean contract and locked liquidity, but its price fell 97% within hours. What does the score see?

GET/v1/robinhood/token/0x192b126efea71ca5e7767bc6fc53038d869fbbba/security
curl "https://api.crius.sh/v1/robinhood/token/0x192b126efea71ca5e7767bc6fc53038d869fbbba/security"
Real response 200 Captured Oct 28, 2026 · 180 lines (arrays trimmed)
{
"data": {
"contract": {
"blacklist": false,
"can_change_limits": false,
"can_change_tax": false,
"cooldown": false,
"implementation": null,
"is_proxy": false,
"mintable": false,
"owner": null,
"ownership": "none",
"pausable": false,
"proxy_kind": null,
"self_destruct": false,
"trading_switch": false,
"upgradeable": false,
"verified": null
},
"flags": [
"unverified",
"insider_launch"
],
"honeypot": {
"is_honeypot": false,
"reason": null,
"selective": false
},
"hook": {
"address": "0xe5e702641ea86f4ae6cc3cdaed2b886f976be044",
"capabilities": {
"can_block_swaps": false,
"can_gate_liquidity": false,
"can_modify_liquidity_amounts": false,
"can_modify_swap_amounts": true
},
"code": {
"admin_functions": [],
"checked_ts": 1793207140434,
"code_hash": "0xc21b1e6c1b45403e81a581f22ed6d9c747997af1cfdac1b1dc9f4b1d346a10db",
"family": "0xabda3266e50c",
"kind": "contract",
"logic": null,
"owner": "0x263ed295dafae1d9aadd6e56c4b6f9f38ee019dd",
"ownership": "active",
"size": 15167
},
"family": {
"honeypot_pct": 0,
"hooks": 22,
"id": "0xabda3266e50c",
"liquidity_pulled_pct": 0.684086,
"pools_traded": 10525,
"taxed_pct": 51.9715,
"verified_hooks": 1
},
"flags": [],
"name": "PonsV2MemeHook",
"observed": {
"dynamic_tax_pools": 13,
"first_trade_ts": 1785866942000,
"honeypot_pools": 0,
"last_trade_ts": 1793223683000,
"liquidity_pulled_pct": 0.66813,
"liquidity_pulled_pools": 70,
"max_buy_tax_pct": 10.99,
"max_sell_tax_pct": 0.7,
"median_pool_life_min": 53423.5,
"pools": 10478,
"pools_traded": 10477,
"tax_measured_pools": 10392,
"taxed_10pct_pools": 35,
"taxed_pools": 5463,
"volume_usd": 5384607135
},
"pattern": {
"description": "hooks that change swap amounts only",
"honeypot_pct": 0.0696347,
"id": "swap_delta_only",
"liquidity_pulled_pct": 7.93603,
"pools_traded": 43082,
"taxed_pct": 15.7537
},
"permissions": [
"beforeInitialize",
"afterSwap",
"afterSwapReturnDelta"
],
"risk": [
"can_modify_swap_amounts"
],
"risk_level": "low"
},
"known_asset": false,
"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
},
"limits": {},
"liquidity": {
"status": "partially_locked",
"summary": {
"burned_pct": 0,
"locked_pct": 99.7392,
"next_unlock_ts": null,
"protocol_fee_pct": 0,
"unlocked_in_wallets_pct": 0.260807,
"weighting": "by pool liquidity_usd"
}
},
"primary_dex": "uniswap_v4",
"risk": "high",
"score": 45,
"tax": {
"buy_pct": 2.64,
"confidence": "high",
"realized": {
"buy_pct": 2.64,
"by_wallet_class": {
"dev_sell_pct": 0,
"others_sell_pct": 0
},
"last_sample_ts": 1793224833000,
"max_sell_pct_seen": 0.69,
"samples": {
"buys": 1417,
"sells": 1990
},
"sell_pct": 0,
"window": "30d"
},
"sell_pct": 0,
"simulated": null,
"source": "realized",
"transfer_pct": null
},
"tax_history": [
{
"from_block": 100238946,
"pct": 0,
"side": "buy"
},
{
"from_block": 100238968,
"pct": 0,
"side": "sell"
},
{
"from_block": 100239845,
"pct": 3,
"side": "buy"
}
],
"tax_history_total": 3,
"tax_mode": "dynamic",
"token": "0x192b126efea71ca5e7767bc6fc53038d869fbbba"
},
"meta": {
"block": 100406835,
"block_age_ms": 974,
"block_ts": 1793225081000,
"chain": "robinhood",
"finalized_block": 100397649,
"lag_ms": 46,
"safe_block": 100401329,
"simulation": "no V2 WETH pair: realized tax only"
}
}

What this tells you

  • score: 45, risk: "high": insider_launch (−50) and unverified (−5).
  • launch.sniper_supply_pct is about 61%: four wallets, including the developer’s, bought most of the supply in the first 10 blocks. launch.sniper_top_wallet_pct shows one wallet took 53%.
  • The contract itself is clean and the liquidity is locked, so nothing in the code is a trap. The risk was who held the supply: insiders sold into the buyers who came after.
Security checks reference Runs from your browser on the anonymous plan Data looks wrong? Report it

What costs points

Every deduction appears in flags, so you can show users exactly why a token scored what it did.

FlagPointsWhat it means
honeypot−100The sell simulation failed, or 20+ buys and no non-dev sells. Always critical.
admin_scam_flag−100Reviewed and marked as a scam by Crius.
selective_honeypot−60Only the developer has managed to sell.
transfer_events_dont_match_balances−60Transfer events don't add up to balances (spoofed events).
hook_critical_risk−60The pool's v4 hook has no code, is a delegated wallet, or its code family is behind many honeypots.
insider_launch−50Most of the supply was sniped at launch by a few wallets, including insiders. Always high.
wallet_farm−50Holders are a farm of wallets created and funded together.
high_tax−30Buy or sell tax above 10%.
hook_high_risk−30The hook can block swaps, or its code family has a record of rugs.
uniform_holders−30Holder balances are suspiciously equal (an airdrop to controlled wallets).
lp_single_wallet−25One wallet holds most of the unlocked liquidity.
lp_unlocked−20The liquidity can be withdrawn at any time.
tax_over_5pct−15Buy or sell tax between 5% and 10%.
mintable, blacklist, upgradeable_proxy−15 eachThe owner can mint, blacklist wallets, or swap the contract's code.
ownership_active, pausable, tax_changeable, tax_mismatch, hook_medium_risk−10 eachOwner powers that are still live, or a simulated tax that disagrees with what buyers really paid.
unverified−5The source isn't verified on an explorer.

Owner powers (mintable, blacklist, pausable, tax_changeable) only count while someone owns the contract: once ownership is renounced they can’t be used.

How the verdict is decided

risk is not just the score cut into bands:

  • critical: a honeypot, whatever else the token has.
  • high: a score under 50, or any insider_launch, wallet_farm or hook_critical_risk, even if the score is higher.
  • low: a score of 80 or more.
  • medium: everything in between.

Known assets (known_asset: true: WETH, USDG, tokenized stocks) are always low.

Use it in your app

  1. Call /security before you list or trade a token. It’s on the anonymous plan, so a backend can call it for every new token without a key; with a key it costs 1 credit.

  2. Gate on risk, explain with flags. Block critical, warn on high, and show the flags as plain-language reasons. The table above has wording you can reuse.

  3. Show the evidence. tax.realized.samples tells users how many trades the tax is based on, liquidity.summary how much is locked or burned, and launch who bought the first blocks.

  4. Watch for changes. Taxes and LP status can change after launch. Subscribe to the WebSocket stream for tax and LP events, or re-check on a schedule.

// Minimal risk gate for a trading bot or token list.
const res = await fetch(`https://api.crius.sh/v1/robinhood/token/${token}/security`);
const { data } = await res.json();
if (data.risk === "critical") throw new Error("honeypot: can't sell");
if (data.risk === "high") console.warn(`high risk (${data.score}/100): ${data.flags.join(", ")}`);
console.log(`buy tax ${data.tax.buy_pct ?? "?"}%, sell tax ${data.tax.sell_pct ?? "?"}%`);

Frequently asked questions

What is a good security score?

80 or more is low risk: no honeypot, taxes at or under 5%, no owner powers that matter, liquidity locked or burned, a clean hook and a fair launch. 50–79 is medium. Under 50, or any insider launch, wallet farm or critical hook, is high; a honeypot is always critical. Treat the score as a summary and read the flags: they say exactly what cost points.

Does the score need an API key?

No. /security is on the anonymous plan (1 credit per call with a key). Without a key you get a low per-IP rate; a free key raises it and adds fresh=1 re-simulation on paid plans.

How fresh is the score?

Results are cached for 15 seconds per token and trade size; on paid plans fresh=1 simulates again at the current block. Realized taxes come from the last 30 days of trades (the median of the latest 50 per side), so a tax change appears as new trades arrive. meta.block tells you the block the answer was read at.

Can a token with a high score still go to zero?

Yes. The score measures what can be checked on-chain: the contract, the taxes buyers actually paid, the liquidity and who bought the launch. It can't see a team walking away or a market losing interest. A score of 95 means no trap was found, not that the price will hold.

Why is a well-known token marked low risk with flags?

Known assets (WETH, USDG, tokenized stocks) have known_asset: true and are always low risk; their flags (an upgradeable proxy, for example) are shown for information but don't change the verdict.

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