# 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.

Source: https://docs.crius.sh/use-cases/risk-and-compliance/ · Updated 2026-10-28

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}/security`](https://docs.crius.sh/reference/security/security-checks/) the first gate for every token: honeypot, realized taxes, owner powers, LP status, hook risk, and launch flags such as `insider_launch` and `wallet_farm`.
-   [GET`/token/{address}/bundles`](https://docs.crius.sh/reference/wallet-graph/snipers-bundles-clusters/) who bought the first blocks, bundled buys, funding clusters and how much of the supply they still hold.
-   [GET`/dev/{address}`](https://docs.crius.sh/reference/wallets/developer-profile/) the creator’s track record: tokens launched, graduated, rugged, peak market caps.
-   [GET`/wallet/{address}/connections`](https://docs.crius.sh/reference/wallets/wallet-connections/) who funded a wallet, who it funded and which wallets share a funder.
-   [GET`/token/{address}/bubblemap`](https://docs.crius.sh/reference/wallet-graph/bubble-map/) funding and transfer links among the top holders, with infrastructure set aside.
-   [GET`/token/{address}/liquidity`](https://docs.crius.sh/reference/security/liquidity-locks/) every LP position: burned, locked (which locker, until when) or held by a wallet that can pull it.

## Suggested architecture

1.  **Gate everything cheaply.** Run `/security` (1 credit) on every token you might list or show. Reject `critical`; send `high` and anything with launch flags to review.
    
2.  **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.
    
3.  **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.
    
4.  **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 below `meta.safe_block`.
    
5.  **Re-check on change.** Taxes, LP and holder concentration change after launch. Subscribe to `tax:<token>` and `lp:<token>` on the [stream](https://docs.crius.sh/reference/stream/), or re-run the gate on a schedule.
    

## Who bought the launch

Example [Starter plan · 10 credits](https://docs.crius.sh/reference/wallet-graph/snipers-bundles-clusters/)

### An insider launch: four wallets took 61% of the supply

Rebot (0x192b126efea71ca5e7767bc6fc53038d869fbbba) fell 97% within hours. Who bought its first blocks?

GET/v1/robinhood/token/0x192b126efea71ca5e7767bc6fc53038d869fbbba/bundles

 

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/token/0x192b126efea71ca5e7767bc6fc53038d869fbbba/bundles" \
  -H "x-api-key: $CRIUS_API_KEY"
```

**JavaScript**

```js
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();
```

**Python**

```python
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)**

```json
{
  "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: 4` wallets bought `supply_pct: 60.9726` of 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 tagged `dev` and `sniper`: the developer bought in its own launch transaction (`dev.bought_in_launch_tx: true`, bundle type `launch_tx_buy`, 1% of supply).
-   `snipers.still_holding_pct: 0` and `dev.holding_pct: 0`: every sniper has sold. The supply went to the buyers who came after.
-   `trader_funding` shows 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: 54` wallets.

[Snipers, bundles & clusters reference](https://docs.crius.sh/reference/wallet-graph/snipers-bundles-clusters/) [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20An%20insider%20launch%3A%20four%20wallets%20took%2061%25%20of%20the%20supply&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fuse-cases%2Frisk-and-compliance%2F%23insider-launch%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Ftoken%2F0x192b126efea71ca5e7767bc6fc53038d869fbbba%2Fbundles%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

## The developer’s record

Example [Free plan · 5 credits](https://docs.crius.sh/reference/wallets/developer-profile/)

### A creator with one token, graduated and not rugged

What else has CHARGE's creator (0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca) launched, and how did it end?

GET/v1/robinhood/dev/0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca

 

**cURL**

```bash
curl "https://api.crius.sh/v1/robinhood/dev/0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca" \
  -H "x-api-key: $CRIUS_API_KEY"
```

**JavaScript**

```js
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();
```

**Python**

```python
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)**

```json
{
  "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’s `market_cap_usd` is now 3773.42. It isn’t counted as rugged because its liquidity (5611.81) is above the $500 in `meta.rugged_rule`.
-   `funded_by` is 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 with `rugged: true`, and a low `graduation_rate_pct`.

[Developer profile reference](https://docs.crius.sh/reference/wallets/developer-profile/) [Data looks wrong? Report it](mailto:support@crius.sh?subject=Wrong%20data%20in%20docs%20example%3A%20A%20creator%20with%20one%20token%2C%20graduated%20and%20not%20rugged&body=Page%3A%20https%3A%2F%2Fdocs.crius.sh%2Fuse-cases%2Frisk-and-compliance%2F%23dev-record%0ARequest%3A%20GET%20%2Fv1%2Frobinhood%2Fdev%2F0x3ac82d45ff9e4963cefbc3f74dbe293f34c927ca%0A%0AWhat's%20wrong%20or%20missing%3F%0A%0A)

```js
// 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](https://docs.crius.sh/guides/detect-bundles-and-snipers/), [developer history](https://docs.crius.sh/guides/check-developer-history/), [connected wallets](https://docs.crius.sh/guides/find-connected-wallets/), [bubble maps](https://docs.crius.sh/guides/read-a-bubble-map/) and [LP locks](https://docs.crius.sh/guides/check-liquidity-locked/). The score that ties them together is explained in [Token security score](https://docs.crius.sh/guides/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

[Guide **Detect bundles & snipers** Find out who bought a Robinhood Chain token's launch, how much of the supply snipers and bundles took and whether they still hold it, with a real insider launch that fell 97%. Read](https://docs.crius.sh/guides/detect-bundles-and-snipers/) [Guide **Developer history** Check a Robinhood Chain token creator's track record in one call: every token they launched, peak and current market cap, graduations, rugs, dev selling. Read](https://docs.crius.sh/guides/check-developer-history/) [Guide **Connected wallets** Find who funded a Robinhood Chain wallet, which wallets it funded, who it swaps tokens with and who shares its funder, to spot alt wallets, dev links, sybils. Read](https://docs.crius.sh/guides/find-connected-wallets/) [Guide **Read a bubble map** Get a Robinhood Chain token's top holders as a graph, with the funding and transfer links that group them. Real examples, with and without clusters. Read](https://docs.crius.sh/guides/read-a-bubble-map/) [Guide **Check liquidity locks** Find out whether a Robinhood Chain token's liquidity is locked, burned or held by wallets that can pull it, pool by pool, with the locker and unlock date. Real examples from Pons tokens. Read](https://docs.crius.sh/guides/check-liquidity-locked/) [Guide **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. Read](https://docs.crius.sh/guides/token-security-score/)
