Catch pump.fun graduations before the curve completes.
Real-time graduation alert API. Median —s of runway between our ≥0.70 confidence call and the bonding curve completing — built for fast traders, sniper bots, and trading terminals. —% of those calls graduate within 24h. 950,000+ pump.fun mints indexed. Every prediction publicly hashed before the outcome was known. One HTTP call — full receipts at /accuracy.
If you're building a wallet, terminal, sniper, alert tool, or analytics layer on Solana, this is the prediction layer your users currently don't see — and the only one with a public, pre-registered receipts chain. Integrating into a terminal? → /for-terminals (REST, WebSocket, webhook, 30-day pilot). Backed by 950,000+ mints with on-chain-verified outcomes; discipline trail on github.
What we don't do: mature mint tracking, lifetime charting, slow-cook rug detection, trade execution. Out of scope by design — that's how the prediction stays honest. /api/scope documents what's in and out.
What every response includes
Graduation probability score
Each live mint at age 30s or 60s gets a grad_prob score, anchored to 950k+ on-chain observations. Past 60s the field returns null — by design. We predict before the curve reveals itself.
Inline calibration receipt
Every prediction carries grad_prob_calibration: the historical accuracy at this exact (age × confidence) cell. Build accuracy-aware policies on top — your bot can require historical_actual_rate > 0.7 before acting.
Creator track records
Each mint comes with the creator's full launch history — runner_creator flag, rate_5x, n_launches. Now backfilled against on-chain truth (99.4% of labels are direct Solana state, not derived).
Rug detection
rug_heuristic = transparent flag list (bundle %, holder concentration, fresh-wallet first-3, bundle-dump-in-progress). rug_prob = k-NN over labeled rug history. Both ship inline on every mint.
Post-graduation survival
Once a mint graduates, we poll its DEX price at 5/15/30 min checkpoints. The aggregate post_graduation.sustain_rate_30m on /api/accuracy shows ~47% of graduates hold ≥80% of grad price for 30m. The per-mint post_grad_survival_prob field is currently in an auto-lift gate — sunset 2026-05-07 after a snapshot-source bug was found, clean-corpus k-NN re-validating; expected to restore within days. Aggregate stat is unaffected.
Public scope endpoint
GET /api/scope documents what we predict, at what age, against what corpus, with what calibration method. Every claim is auditable. No hidden caveats.
The signals
Six live signals, individually subscribable as Telegram alerts or pollable via API. Paid product — subscribe in SOL or hold $GO. The differentiated alpha is powered by our wallet + creator index; this is the part of the stack competitors can't quickly replicate.
grad_prob
Fires when any non-mayhem mint hits N% graduation probability. The classic signal — observable from any pump.fun websocket.
vsol_burst
Fires when a mint adds N SOL of vSOL in 60 seconds. Surge detector — also publicly observable.
runner_dev 🔒
Fires the moment a wallet with proven 5×+ track record launches a fresh mint. Powered by our creator history index. This is how you front-run the runner before anyone else even knows it's launched.
smart_in 🔒
Fires when N+ leaderboard wallets are currently in a mint's top buyers. Real-time tail-trading of proven wallets — not historical, live.
runner_5x · runner_10x 🔒
Fires when a mint hits N% odds of 5× or 10× from its current price — the trader-relevant question. From-now math nobody else publishes.
wallet 🔒
Fires every time a specific wallet buys a new mint. Pure copy-trading: pick the wallet, get the alert.
Pick your plan
Two ways in: subscribe in SOL via Phantom or hold $GO — pick one.
💎 Subscribe — pay in SOL, founding rate locked permanently. Your price never goes up.
🪙 Hold $GO — hold 500k for TG bot signal access, hold 2.5M for API access. Auto-upgrades when you hold; reverts if you sell.
Activates instantly either way. $GO on-chain tokenomics handled at the trade layer: 50% burn, 30% SOL to holders, 10% public treasury — /for-terminals for details.
| Builder | Pro ★ | Enterprise | |
|---|---|---|---|
| price | 0.4 SOL/mo ~$— /mo |
1 SOL/mo ~$— /mo |
inquire custom |
| API calls / day | 5,000 | 50,000 | custom (millions) |
| live data | real-time | real-time | real-time + websocket firehose |
/probe + /wallet |
✓ | ✓ | ✓ |
/runners + /smart_money_active |
✓ | ✓ | ✓ |
| composite signal (ACT/WATCH/SCOUT) | ✓ | ✓ | ✓ |
| premium alerts (creator/runner/wallet) | ✓ · 10 rules | ✓ · ∞ rules | ✓ · ∞ rules |
| watchlist size | unlimited | unlimited | unlimited |
| webhook delivery | — | ✓ (push, not poll) | ✓ |
| wallet leaderboard (discovery) | — | ✓ | ✓ |
| white-label responses | — | — | ✓ |
| support | community | priority | dedicated · SLA |
- 5,000 API calls / day
- Real-time live data (no delay)
- All endpoints incl.
/runners+/smart_money_active - Premium alerts unlocked:
runner_dev·smart_in·runner_5x·runner_10x·wallet - 10 Telegram alert rules
- Unlimited watchlist · full leaderboards
- 50,000 API calls / day
- Real-time live data
- Unlimited alerts + watchlist
- Webhook delivery (push, not poll)
- Priority support
- Built for trading bots running real volume
Plans activate within ~30 seconds of confirmed on-chain payment. Cancel any time by not renewing — no card, no Stripe, no recurring charges.
Need more than Pro?
For high-volume bot operators, brokers, signal channels, and trading firms embedding our score next to every mint they list. Custom rate limits, dedicated infra, white-label API responses, SLA, direct support.
- WebSocket firehose — every score change pushed in real time, no polling
- Custom rate limits — millions of calls / day, dedicated quota
- White-label responses — embed our calibrated scores in your product without our brand
- Dedicated support — direct line, response SLA, custom integrations
Already have a free key? Upgrade that one instead.
Quickstart
🟢 FREE BETA — through 2026-07-07, the API is open. No key required. Send any request and it works. After beta, add an Authorization: Bearer <key> or X-API-Key: <key> header.
# curl — beta (no key)
curl "https://graduateoracle.fun/api/v1/live?limit=10&min_prob=0.5"
# python
import requests
r = requests.get("https://graduateoracle.fun/api/v1/live",
params={"limit": 10, "min_prob": 0.5})
print(r.json())
# javascript / node
const r = await fetch("https://graduateoracle.fun/api/v1/live?limit=10");
console.log(await r.json());
# Post-beta (after 2026-07-07): add header
# -H "Authorization: Bearer grad_your_key_here"
Full schema + try-it-out interface: /docs (Swagger UI, auto-generated).