O R A C L E
pump.fun decoded
how to use it

Build on the real-time graduation alert.

Catch pump.fun mints before the bonding curve completes. One endpoint. Every prediction logged with a hash before the outcome, resolved against on-chain truth.

—s median runway between our ≥0.70 call and the curve completing
Built for sniper bots, fast traders, and trading terminals embedding a graduation-aware feed. —% of those calls actually graduate within 24h () — when we say ≥0.90, reality lands close to 99%. Every prediction publicly hashed before the outcome was known. Pre-launch audit on /verdict.

🟢 FREE BETA — API is open, no key required

During the beta window (through 2026-07-07), every endpoint accepts unauthenticated requests. Just curl and go. Auth will return after beta — see the Authentication section for the post-beta shape.

Quick start

Two steps. Two endpoints.

1
Read the live firehose
curl https://graduateoracle.fun/api/v1/live
Returns every currently-tracked mint with calibrated grad_prob, entry_mult, age, and supporting context. Updates every ~2 seconds.
2
Filter for actionable signals
curl https://graduateoracle.fun/api/v1/live \
  | jq '.mints[] | select(.grad_prob >= 0.70 and .current_mult <= 2.0)'
That's the same gate the TG bot fires on. ≥70% grad_prob—% forward, on-chain-resolved hit rate over the last 30 days (n=—) — resolved against truth, not a backtest.

Pricing

Beta: free, all tiers, no key. The tiers below activate after beta closes (2026-07-07).

TierCalls/dayData freshnessWebhooksPrice
Builder5,000real-time0.5 SOL/mo
Pro50,000real-time1.5 SOL/mo

Post-beta pricing in SOL, paid on-chain via the /upgrade flow. See pricing →

$GO — Proof Launch tokenomics

$GO launches on Proof Launch — a Solana launchpad where tokenomics are enforced by programmable bots at the trade layer, not promised in a whitepaper. Every buy and sell triggers the same skim, deterministically, every trade, forever.

BotShareWhat it does
BURN50%Tokens routed to the burn address. Supply shrinks every trade.
SOL → HOLDERS30%SOL distributed pro-rata to $GO holders. Hold the token → earn SOL yield from volume, automatically.
TREASURY10%Routes to the graduate-oracle treasury — funds infra, model retrains, and buyback budget.
PLATFORM10%Proof Launch's protocol fee. This is how the launchpad gets paid.

Why this matters for terminals. The tokenomics aren't a roadmap — they're sealed by Proof's bot contracts at deploy time. The burn happens whether we ship features or not. The holder yield happens whether anyone subscribes or not. You're holding a supply schedule, not a pitch deck.

Authentication

During beta: auth is disabled. Send any request to /api/v1/* without headers — it works.

After beta (post 2026-07-07): all /api/v1/* endpoints require a bearer token. Both forms supported:

Authorization: Bearer grad_xxxxxxxxxxxx
# or
X-API-Key: grad_xxxxxxxxxxxx

Keys are bearer credentials — treat them like passwords. Subscribe in SOL via Phantom at /api, or hold 2.5M $GO in a linked wallet for Builder access.

Reference

EndpointWhat it returns
GET /api/v1/signalsCursor-paginated cross stream — the machine-consumable feed (poll, zero-miss, resumable)
GET /api/v1/liveEvery tracked mint, scored
GET /api/v1/probe/{mint}Single mint, full breakdown
GET /api/predictions/by_mint/{mint}All historical predictions for a mint (receipts)
GET /api/ledger/commitsHourly Merkle commits — verify a prediction was logged before its outcome
GET /api/ledger/proof/{prediction_id}Cryptographic proof of a single prediction's commit
GET /api/accuracyLive calibration receipts (LOO + forward)
GET /api/scopeWhat we predict, calibration bands, label sources

Full schema reference: Swagger UI ↗ · OpenAPI spec ↗

Signals stream

The machine-consumable feed. GET /api/v1/signals returns composite-receipts crossings in the order they became deliverable. Poll with the cursor from the prior response as since — zero missed crossings, zero duplicates, fully resumable after a crash. Built for execution bots, not dashboards.

curl https://graduateoracle.fun/api/v1/signals?since=<cursor> \
  -H "Authorization: Bearer $KEY"

 { "count", "cursor", "signals": [ {
      "mint", "tier", "composite_score", "score_ratio",
      "smart_money_in", "max_mult_at_cross", "age_s_at_cross",
      "mc_at_cross_usd", "cross_at", "delivered_at" } ] }

Filter by tier: ?tier=ACT / WATCH / SCOUT / all. Webhook push (HMAC-signed POST on every cross) available via POST /api/v1/webhooks.

Tier semantics

TierGateWhat it means
⚡ ACTmodel confidence ≥ 0.15Highest conviction. Trust-it band.
📊 WATCH0.05–0.15Mid conviction.
🛰 SCOUT0.02–0.05, or strong compositeRecall tier — surfaced so it isn't missed; you judge it.

Honest status: the 3-tier structure shipped 2026-05-16 and is forward-validating in public right now. Per-tier hit rates are back-test projections under live verification — not yet proven forward numbers. We publish the verdict (whichever way it breaks) on the receipts trail when the pre-registered sample floor is hit. We don't quote a rate we haven't earned forward. Pilot phase — no pricing on this feed yet, deliberately, until the numbers are real.

Errors

All errors are JSON with the same shape:

{
  "detail": {
    "error":   "rate_limit_exceeded",
    "message": "Daily quota of 200 reached. Resets at 1777502400.",
    "hint":    "/upgrade for higher limits"
  }
}
StatusErrorMeaning
401invalid_or_expired_keyAuth header missing/wrong
429rate_limit_exceededDaily quota hit
503no_snapshotObserver warming up — retry in seconds
Try the TG bot → See the receipts Verify a prediction

NFA · DYOR · prediction model output, not financial advice · @GraduateOracle