O R A C L E
how to use it
how to use it

Build on calibrated graduation predictions.

One signal. One endpoint. Every prediction logged before the outcome and resolved against on-chain truth.

93% of high-confidence calls actually graduate
Cross-validated on 8,000+ on-chain verified mints. Live forward predictions converging at 95% (last 7 days). Verify any prediction at /receipts.

Quick start

Three steps. Two endpoints.

1
Get a key
# Free key: 200 calls/day, 5-min delayed data
curl -X POST https://graduateoracle.fun/api/keys/new \
  -H 'Content-Type: application/json' \
  -d '{"email":"you@example.com"}'
2
Read the live firehose
curl https://graduateoracle.fun/api/v1/live \
  -H 'Authorization: Bearer grad_...'
Returns every currently-tracked mint with calibrated grad_prob, entry_mult, age, and supporting context. Updates every ~2 seconds.
3
Filter for actionable signals
curl https://graduateoracle.fun/api/v1/live \
  -H 'Authorization: Bearer grad_...' \
  | 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 with clean entry — 93% historical hit rate, ~22 calls/day.

Pricing

TierCalls/dayData freshnessWebhooksPrice
Free2005-min delayed$0
Builder5,000real-time0.5 SOL/mo
Pro50,000real-time1.5 SOL/mo

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

Authentication

All /api/v1/* endpoints require a bearer token.

Authorization: Bearer grad_xxxxxxxxxxxx

Or via X-API-Key header. Keys are bearer credentials — treat them like passwords.

Reference

EndpointWhat it returns
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 ↗

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