Every public score, tier, watchlist action, and methodology version — over a versioned REST API and bulk exports. The same data the site renders, nothing more: paid access never buys different numbers, and corrections propagate to every consumer within one release cycle. Full reference: developer docs →
| Method | Endpoint | Returns | Min. plan |
|---|---|---|---|
| GET | /v1/projects | Paginated directory — rank, score, tier, category, chains, TVL, entity status, last-review date | Free |
| GET | /v1/projects/{slug} | Full rating object — 14 sub-criteria with points, audits, treasury addresses, review record | Free |
| GET | /v1/projects/{slug}/history | Score time series with the methodology version each point was scored under | Pro |
| GET | /v1/watchlist | All public cases — action type, before/after score, key facts, evidence links, case ID | Free |
| GET | /v1/apps | App Store directory — review status, permissions, on-chain usage, version history | Free |
| GET | /v1/providers | Marketplace providers — service lines, published pricing, response record | Free |
| GET | /v1/methodology/{version} | The full framework as config — criteria, weights, tier thresholds, changelog diff | Free |
| GET | /v1/exports/daily | Bulk snapshot — gzipped JSONL of the entire public dataset, signed checksum | Pro |
| WS | /v1/stream | Webhook + websocket feed — score changes, new cases, tier moves, corrections, as they publish | Enterprise |
# API key in header · never in the URL curl https://api.onyx.dev/v1/projects/uniswap \ -H "Authorization: Bearer onyx_pk_····" \ -H "Accept: application/json"
{
"slug": "uniswap",
"score": 94,
"tier": "certified",
"methodology": "v3.2",
"last_review": "2026-06-14",
"criteria": { "security": 28, "transparency": 24, … },
"watchlist": null,
"audits": [ { "firm": "Trail of Bits", … } ],
"entity": { "status": "verified", "jurisdiction": "US" }
}