The pump.fun graduation prediction API. Built for builders.
One HTTP call → calibrated graduation probability + buyer quality on every mint in its first 30 seconds. Of mints we score ≥70% to graduate, 65% actually do. Of mints we score ≥90%, 90% actually do. Every accuracy claim is verifiable.
If you're building a wallet, terminal, sniper, alert tool, or analytics layer in the pump.fun ecosystem, this is the prediction layer your users currently don't see. Backed by 137,000+ mints with on-chain-verified outcomes; every prediction publicly hashed before resolution; discipline trail on github.
What we don't do: mature mint tracking, lifetime charting, slow-cook rug detection. Out of scope by design — that's how the prediction stays honest. /api/scope documents what's in and out.
What every response includes
Calibrated graduation prediction
Each live mint at age 30s or 60s gets a grad_prob score, calibrated against 137k on-chain outcomes. 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 — free vs paid, side by side
Six live signals, individually subscribable as Telegram alerts or pollable via API. Free tier gets the publicly-observable ones. The differentiated alpha — powered by our wallet leaderboard + creator history index — is paid because it's 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 23k-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
Three tiers. Pay in SOL via Phantom. Activates instantly. No cards, no Stripe, no recurring charges. 5-30% under comparable intel/data services with more features per tier.
| Free | Builder | Pro ★ | Enterprise | |
|---|---|---|---|---|
| price | 0 SOL | 0.4 SOL/mo ~$— /mo |
1 SOL/mo ~$— /mo |
inquire custom |
| API calls / day | 200 | 5,000 | 50,000 | custom (millions) |
| live data | 5-min delayed | real-time | real-time | real-time + websocket firehose |
/probe + /wallet |
✓ | ✓ | ✓ | ✓ |
/runners + /smart_money_active |
— | ✓ | ✓ | ✓ |
| calibrated probabilities | ✓ | ✓ | ✓ | ✓ |
basic alerts (grad_prob, vsol_burst) |
✓ · 1 rule | ✓ · 10 rules | ✓ · ∞ rules | ✓ · ∞ rules |
| premium alerts 🔒 | 1 sample / 24h | ✓ · 10 rules | ✓ · ∞ rules | ✓ · ∞ rules |
| watchlist size | 5 | unlimited | unlimited | unlimited |
| webhook delivery | — | — | ✓ (push, not poll) | ✓ |
| white-label responses | — | — | — | ✓ |
| support | community | community | priority | dedicated · SLA |
- 200 API calls / day
- 5-min delayed live data
- Probe + wallet endpoints
- Basic alerts only —
grad_prob,vsol_burst - 1 Telegram alert rule
- 5 watchlist mints
- 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
Send your key on every request via Authorization: Bearer <key> or X-API-Key: <key> header.
# curl
curl -H "Authorization: Bearer grad_your_key_here" \
"https://graduateoracle.fun/api/v1/live?limit=10&min_prob=0.5"
# python
import requests
r = requests.get("https://graduateoracle.fun/api/v1/live",
headers={"Authorization": "Bearer grad_your_key_here"},
params={"limit": 10, "min_prob": 0.5})
print(r.json())
# javascript / node
const r = await fetch("https://graduateoracle.fun/api/v1/live?limit=10", {
headers: { Authorization: "Bearer grad_your_key_here" }
});
console.log(await r.json());
Full schema + try-it-out interface: /docs (Swagger UI, auto-generated).