JSON API

Read-only and free, the same public data as the website. Every score is an automated transparency score from public data, not a security audit. Only projects that have a public page are in the API.

Basics

Endpoints

GET /api/v1/projects

The public list. Query: limit (1 to 500, default 100), cursor (the next_cursor of the last page; needs the default sort), q (name, domain or address), cat, band (A to F or none), track (onchain or offchain), status (claimed or unclaimed), scoring (scored or unscored), sort (name, score or checked). Projects that have no published score have scored: false and no grade, number or date.

curl -s 'https://recheckable.com/api/v1/projects?limit=2&status=claimed'
{
 "items": [
  {
   "slug": "example-dex",
   "name": "Example DEX",
   "category": "DeFi",
   "chain": "Solana",
   "domain": "example.org",
   "demo": false,
   "claimed": true,
   "scored": true,
   "badge": "active",
   "score": 71,
   "band": "B",
   "coverage": 88,
   "tracks": [
    "onchain"
   ],
   "reviewed": 1792000000,
   "method": "0.2.1",
   "label": "Automated score"
  },
  {
   "slug": "example-wallet",
   "name": "Example Wallet",
   "category": "Wallets & tools",
   "chain": "Solana (offchain)",
   "domain": "example.net",
   "demo": false,
   "claimed": false,
   "scored": false,
   "label": "Not scored yet"
  }
 ],
 "count": 2,
 "total": 2,
 "limit": 100,
 "next_cursor": null
}

GET /api/v1/projects/<slug>

One project. Scored: the project, its badge state, the full report with every check, its status, source links and evidence hashes, and the event history. Listed but not scored: only name-level data and "scored": false. Unknown or non-public slugs return 404.

curl -s https://recheckable.com/api/v1/projects/example-dex | head -c 400

GET /api/v1/weekly/<year>-w<week>.json

The weekly list (new, newly claimed, movers). Same as the weekly page.

curl -s https://recheckable.com/api/v1/weekly/2026-w42.json

Badges

For claimed projects only: https://recheckable.com/badge/<slug>.svg. Copy-paste code on /badge-embed/<slug>.

Errors

400 a bad parameter ({"error": "limit must be between 1 and 500"}), 404 not found, 429 rate limited. A slug without a public page gives the same 404 as one that does not exist.