Lilac API
Lilac watches every swap on Robinhood Chain and sorts the wallets behind them. This free, read-only API gives you what she sees on a token: serial ruggers, wallet farms and sniper bots buying it, liquidity she could not find locked, big dumps, and buys from wallets with a clean or smart record.
- Base URL:
https://lilac-by-ghost.com/api/v1. JSON over HTTPS, no key, CORS open (Access-Control-Allow-Origin: *). - Rate limit: 60 requests per minute per IP. Headers
X-RateLimit-Remainingand, on429,Retry-After. - Results are recomputed about every 2 minutes; responses may be cached for 60 s.
- Aggregates only. The API never returns a wallet address: wallets are counted, not listed.
- Time window:
hoursfrom 1 to 168 (default 24) on every endpoint that takes it.
Try it
Press Send.
Endpoints
GET/api/v1/token/{address}
Everything Lilac saw on one token in the window. Unknown tokens return "found": false and "risk": "unknown".
| Param | Default | |
|---|---|---|
| hours | 24 | 1–168 |
curl https://lilac-by-ghost.com/api/v1/token/0x6dca55b249017b8e74922745a745726c3c1e49d6
{
"hours": 24, "generatedAt": "2026-10-23T11:20:57.678Z", "found": true,
"token": {
"token": "0x6dca55b249017b8e74922745a745726c3c1e49d6", "symbol": "RIVAL",
"firstSeen": "2026-10-22T20:02:10.625Z", "lastSeen": "2026-10-22T20:12:13.261Z", "mcapUsd": 142235,
"flagged": { "wallets": 143, "buys": 145, "serialRuggers": 27, "weak": 20, "snipers": 0, "farms": 3, "farmWallets": 96 },
"worstRugCount": 8,
"smart": { "buys": 0 }, "clean": { "buys": 0 }, "radar": { "buys": 0 },
"liquidity": "unlocked", "dumps": { "count": 0, "maxPct": 0 },
"alerts": [], "rugged": false, "peakX": null,
"risk": "high",
"signals": ["liquidity not locked", "27 serial ruggers bought (2+ past rugs each)", "20 other flagged wallets (1 past rug or linked funding: weak signal)", "96 flagged wallets moving as 3 coordinated groups (same buys: counted once)"]
}
}
GET/api/v1/scammers
Tokens bought by flagged wallets, ranked by serial ruggers first, then weak flags, then sniper bots.
| Param | Default | |
|---|---|---|
| hours | 24 | 1–168 |
| limit | 50 | 1–200 |
GET/api/v1/tokens
Every token Lilac saw in the window, filtered and sorted.
| Param | Default | |
|---|---|---|
| sort | recent | recent · risk · scammers · clean (clean and smart buys first) |
| risk | high · medium · low · unknown | |
| liquidity | unlocked · concentrated | |
| hours, limit | 24, 50 | as above |
curl "https://lilac-by-ghost.com/api/v1/tokens?risk=high&sort=recent&limit=20"
GET/api/v1/feed
The latest events, like the "What she saw" panel. Types: smart_buy, clean_buy, radar_buy, scammer_buys (sent when a token reaches 3 and 25 buys by flagged wallets), runner, momentum, swarm, dump, liquidity_unlocked, rug.
| Param | Default | |
|---|---|---|
| limit | 50 | 1–200 |
{ "count": 1, "events": [ { "at": "2026-10-23T11:02:41.000Z", "type": "scammer_buys", "token": "0x…", "symbol": "GUST", "count": 3 } ] }
GET/api/v1/alerts
Lilac's alert board with how each alert performed: mcap0 at the alert, max, now, peak multiple and status (win, live, flat, dead). Param hours, default 72.
GET/api/v1/stats
Totals for the window: tokens seen, tokens with serial ruggers, tokens with any flagged buyer, high-risk, liquidity not locked, rugged, with clean or smart buys, flagged buys.
Token fields
| flagged.wallets | Distinct wallets from Lilac's watch list (past rugs, suspicious patterns, linked funding) that bought the token. buys = their buys. They are split into: |
| flagged.serialRuggers | Wallets with 2+ past rugs that are not bots or farms. The strongest of these labels. |
| flagged.farms | Groups of 5+ flagged wallets that bought exactly the same tokens: one coordinated actor, counted once (farmWallets = wallets inside). |
| flagged.snipers | Flagged wallets that buy 10+ different tokens in the window, or were early buyers of tokens that really pumped. They snipe almost everything, including winners: not a rug signal. |
| flagged.weak | The rest: one past rug or a funding link only. Weak signal. |
| worstRugCount | Highest number of past rugs among the flagged buyers. |
| smart.buys / clean.buys | Buys by wallets with a strong track record (smart) or a clean history (clean). |
| radar.buys | Buys by wallets Lilac is still evaluating. |
| liquidity | unlocked: most of the main pool's LP sits in wallets or was pulled. concentrated: the top 10 holders own 30 % or more of the supply. null: not checked. |
| dumps | Big single-holder sells seen (maxPct = largest, in % of their holding). |
| alerts | Lilac alerts fired on the token (smart, flux, clean, momentum, low, pick, runner). |
| rugged | An alerted token whose market cap fell below 10 % of its peak. |
| peakX | Best multiple reached after one of Lilac's alerts. |
| risk / signals | A summary level and the plain-language reasons behind it (rules below). |
How risk is decided
highobjective facts only: the token rugged, or its liquidity is not locked.
medium3+ serial ruggers bought, or a big holder dumped, or the top 10 holders own 30 %+ of the supply.
lownone of the above, and at least one clean or smart buy.
unknownnot enough seen.
Wallet labels are not proven to predict rugs yet: bots and farms buy almost every launch, winners included. That is why they only raise a token to medium and are shown split. These are signals from Lilac's own on-chain analysis, not financial advice and not a security audit.
Using it
const r = await fetch('https://lilac-by-ghost.com/api/v1/token/' + address).then(r => r.json());
if (r.token.risk !== 'low') console.log(r.token.risk, r.token.signals.join(', '));
Free to use in bots, dashboards and tools. A link back to lilac-by-ghost.com is appreciated. Lilac was named by @llmgh0st, the AI that lives on Robinhood Chain.