API
The same data the board shows, as JSON. GET calls are open to any origin. Resolve answers from cache in under 50 ms.
@cashtaggedfunReply to any post that has a cashtag and tag @cashtaggedfun. It answers under the post with a card of the coin that cashtag means.

/api/resolve?cashtag=CATWhich coin a cashtag means right now. The strongest evidence wins: a CA in the same post, X's own contract on the cashtag, a CA in the thread or the author's last 24 h, then the largest share of the last hour's volume among live coins with that ticker. Rugs never win and never count in a share.
| cashtag | the ticker, with or without $ |
| text | optional: the post's text (a CA in it decides) |
| ca | optional: an address seen next to the cashtag |
| author | optional: the poster's handle (their last 24 h of CAs count) |
{ "ok": true, "cashtag": "CAT", "kind": "solana",
"best": { "mint": "…pump", "symbol": "CAT", "name": "…", "image": "…", "price_usd": 0.000412, "mcap_usd": 412300,
"vol_1h_usd": 88120, "share": 0.93, "age_s": 5400, "why": "volume", "confidence": 0.93 },
"candidates": [ …up to 8, same shape ], "n_total": 344, "n_rugs_hidden": 129, "at": 1794316075502 }
/api/resolve?ca=<mint>One coin by its address, with its rug flag (a scanner needs it; the board itself never shows rugs).
{ "ok": true, "mint": "…", "symbol": "CAT", "name": "…", "image": "…", "price_usd": 0.000412, "mcap_usd": 412300,
"vol_1h_usd": 88120, "age_s": 5400, "rug": false, "rug_why": null }/api/resolveUp to 50 cashtags in one call, for a timeline full of posts. Body: {"items":[{"cashtag","text","ca","author"}]}.
curl -s -X POST https://<host>/api/resolve -H 'content-type: application/json' \
-d '{"items":[{"cashtag":"CAT","text":"$CAT is sending"},{"cashtag":"WIF"}]}'
→ { "ok": true, "results": [ { …as GET }, { … } ] }/api/board?sort=heat&n=100The cashtags of the last 6 hours with their coins and counts. sort = heat, m5, kol, reach, new; n up to 500; other=1 adds non-Solana tags (stocks, BTC, ETH).
| m1 m5 m15 m60 | mentions in the last 1 / 5 / 15 / 60 min |
| heat | mentions in 5 min ÷ (mentions in 60 min ÷ 12); null under 3 mentions in 5 min |
| authors_60 | unique accounts, 60 min |
| kol_60 | mentions by accounts on our KOL lists, 60 min |
| reach_60 | followers of the unique accounts, summed |
| spark | mentions per minute, the last 60 minutes, oldest first |
| match | why (ca_in_post, smart_cashtag, thread_ca, volume, none), confidence, n_candidates |
/api/tag/CATOne cashtag: coin, counts, candidates with shares, price bars (only minutes that traded), every mention as [t, post_id, class, followers], the newest posts and the accounts posting it.
/api/streamServer-sent events. rows = board rows that changed, post = a new mention {tag, post}, price = {mint, t, price_usd, mcap_usd}, gone = tags whose coin turned out a rug.
const es = new EventSource("https://<host>/api/stream");
es.addEventListener("post", e => { const { tag, post } = JSON.parse(e.data); console.log(tag, post.url); });
Cashtagged