Analyze a token: lite
A fast holder read: top-10 share, developer stake, launch buy, developer sells and tracked callers.
Takes about one to two seconds. Send an Idempotency-Key header so a retried request never runs twice.
Parameters
| Name | Type | Description |
|---|---|---|
mint | string, required | Solana token mint, base58, 32 to 44 characters. |
depth | "lite" | Selects the lite read. |
max_data_age_seconds | integer, 0 to 3600 | Optional. Accept a cached read up to this age. |
Request
curl -s -X POST https://api.stillroach.com/v1/token-analysis \
-H "Authorization: Bearer $ROACH_API_KEY" \
-H 'content-type: application/json' \
-d '{"mint":"Examp1eMint1111111111111111111111111111pump","depth":"lite"}'const res = await fetch('https://api.stillroach.com/v1/token-analysis', {
method: 'POST',
headers: {
Authorization: `Bearer ${process.env.ROACH_API_KEY}`,
'content-type': 'application/json',
},
body: JSON.stringify({"mint": "Examp1eMint1111111111111111111111111111pump", "depth": "lite"}),
});
console.log(res.status, await res.json());import os, requests
r = requests.post(
'https://api.stillroach.com/v1/token-analysis',
headers={'Authorization': f"Bearer {os.environ['ROACH_API_KEY']}"},
json={'mint': 'Examp1eMint1111111111111111111111111111pump', 'depth': 'lite'},
timeout=60,
)
print(r.status_code, r.json())Example response 200 · example data
{
"schema": "roach.analysis.v1",
"request_id": "req_5f1c2a9e7b3d4e10",
"analysis_version": "bagcheck.lite.v1",
"depth": "lite",
"mint": "Examp1eMint1111111111111111111111111111pump",
"data_as_of": 1793098800,
"cached": false,
"credits": {
"charged": 0,
"free_lite": true,
"remaining": 10,
"free_lite_left_today": 2
},
"result": {
"schema": "bagcheck.lite.v1",
"mint": "Examp1eMint1111111111111111111111111111pump",
"scan_seconds": 1.4,
"token": {
"symbol": "EXAMPLE",
"name": "Example Coin",
"mcap_usd": 412000.0,
"mcap_source": "dexscreener",
"liquidity_usd": 61500.0,
"age_hours": 30.2,
"ath_mcap_usd": 980000.0,
"off_ath_pct": -58.0
},
"verdict": {
"label": "SKITTISH ROACH",
"emoji": "💨",
"line": "scatters when the lights come on"
},
"holders": {
"top10_pct": 18.6,
"top10_source": "holder_scan",
"top10_scope": "top 10 holders excl. pool",
"pool_pct_supply": 21.3,
"holders": 1840
},
"dev": {
"dev_pct": 0.0,
"dev_source": "pump.fun creator",
"launch_buy_pct": 2.1,
"dev_sold_pct": 100.0,
"creator_coins": 3
},
"callers": {
"kol_count": 1,
"kols": [
"example_caller"
]
},
"not_included": [
"holder history (never sold / sold / churn)",
"bundles & snipers",
"linked-wallet clusters",
"dump impact",
"every top-30 wallet"
]
},
"disclaimer": "Holder data from public Solana RPC. Not financial advice."
}Errors
| Status | Code | Meaning |
|---|---|---|
| 400 | bad_input | The mint is malformed, the depth is unknown, or the body has an unknown field. |
| 401 | key_required, bad_key | Send a valid key in the Authorization header. |
| 409 | in_progress | The same scan is already running. Retry in a few seconds. |
| 429 | quota_exhausted, free_lite_used | No credits left. Buy a pack or pay per call with x402. |
| 502 | scan_failed | The scan failed upstream. Nothing is charged. Retry later. |