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
| Tier | Calls/day | Data freshness | Webhooks | Price |
|---|---|---|---|---|
| Free | 200 | 5-min delayed | — | $0 |
| Builder | 5,000 | real-time | — | 0.5 SOL/mo |
| Pro | 50,000 | real-time | ✓ | 1.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
| Endpoint | What it returns |
|---|---|
GET /api/v1/live | Every 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/commits | Hourly 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/accuracy | Live calibration receipts (LOO + forward) |
GET /api/scope | What 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"
}
}
| Status | Error | Meaning |
|---|---|---|
| 401 | invalid_or_expired_key | Auth header missing/wrong |
| 429 | rate_limit_exceeded | Daily quota hit |
| 503 | no_snapshot | Observer warming up — retry in seconds |
NFA · DYOR · prediction model output, not financial advice · @GraduateOracle