Returns the full passport for a given wallet address — score, tier, all six dimensions, metrics, and earned credentials. The same payload that powers the Passport page.
{ "address": "0x7a3f...e2c1", "ens": "vitalik.eth", "score": 847, "tier": "trusted", "dimensions": { "activity": 78, "history": 95, "diversity": 82, "defi": 88, "governance": 71, "risk": 98 }, "metrics": { "first_seen": "2017-06-14T08:21:00Z", "tx_count": 1847, "protocols": 34, "chains": 9, "lifetime_volume_usd": 2412304.5 }, "flags": [], "credentials": [ "og_wallet_2017", "dao_voter", "lp_provider", "ens_holder" ], "computed_at": "2026-05-24T16:43:00Z", "model_version": "0.4.2" }
Lightweight endpoint returning only the composite score and tier. Use this when you don't need the full breakdown — about 8× cheaper to call than /passport.
{ "address": "0x7a3f...e2c1", "score": 847, "tier": "trusted" }
Score up to 100 wallets in a single call. Useful for backfilling allowlists or analyzing the holders of a token.
{ "addresses": [ "0x7a3f...e2c1", "0x9d1b...4f8a", "0x2e5c...a9d3" ], "include_dimensions": true }
{ "results": [ { "address": "0x7a3f...e2c1", "score": 847, "tier": "trusted" }, { "address": "0x9d1b...4f8a", "score": 762, "tier": "trusted" }, { "address": "0x2e5c...a9d3", "score": 412, "tier": "neutral" } ], "computed_at": "2026-05-24T16:43:00Z" }
Returns only the tier as a plain string. The cheapest endpoint — useful for smart contracts via an oracle or for gating logic that only needs categorical input.
trusted
Returns only the risk flags. Returns an empty array if the wallet has none. Use this if you want to gate purely on risk rather than the full composite score.
{ "address": "0xb04f...1e7b", "flags": [ { "type": "sanctioned_counterparty", "severity": "high" }, { "type": "mixer_interaction", "severity": "high" }, { "type": "new_wallet", "severity": "low" } ] }
Rate limits
During the preview, requests are limited per IP. Higher limits are available with an API key once the program graduates.
Error codes
All errors return JSON of shape { "error": "code", "message": "human-readable" }.
Retry-After header
500
indexer_unavailable — temporary; retry with backoff
503
computing — first-time score; retry in ~30s