Query any wallet's proof of reputation.
One GET returns the evidence behind a wallet: score, tier, proofs, counterparties, attestations, risk. Read-only, no key, CORS-open — built for browsers.
{ "address": "0xa6d9e296e6833d211278faf255c76ed193c9ac19", "walletAgeDays": 16, "uniqueCounterparties": 9, "repeatCounterparties": 3, "attestations": 0, "activeDisputes": 0, "riskSignals": [ { "type": "concentrated_counterparty_graph", "severity": "low", "evidence": { "topCounterparty": "0x953f4734e8173871e67450844acb3f3c8b684d8a", "topInteractions": 14, "counterpartyInteractions": 25, "share": 0.56, "threshold": 0.5 }, "evidence_reference": "https://explorer.testnet.chain.robinhood.com/address/0xa6d9e296e6833d211278faf255c76ed193c9ac19", "detected_at": "2026-09-27T13:38:34.041Z" } ], "riskLevel": "low", "proofs": [ { "type": "wallet_age", "source": "blockscout", "subject": "0xa6d9e296e6833d211278faf255c76ed193c9ac19", "value": { "ageDays": 15, "firstTxAt": "2026-09-11T05:53:10.000Z" }, "timestamp": "2026-09-26T15:07:00.225Z", "confidence": 0.7, "verification_method": "derived", "evidence_reference": "https://explorer.testnet.chain.robinhood.com/tx/0x39e3492c77913c1a48fb3542273a460fb2f23c7033e7fd98cfab52d8b2bea3e5", "evidence_references": [ "https://explorer.testnet.chain.robinhood.com/tx/0x39e3492c77913c1a48fb3542273a460fb2f23c7033e7fd98cfab52d8b2bea3e5" ] }, { "type": "transaction_history", "source": "blockscout", "subject": "0xa6d9e296e6833d211278faf255c76ed193c9ac19", "value": { "txCount": 33 }, "timestamp": "2026-09-26T15:07:00.225Z", "confidence": 1, "verification_method": "indexed", "evidence_reference": "https://explorer.testnet.chain.robinhood.com/tx/0xdeef8c8ef4c2d83d36497328def1188e097ebe47a95ac9280613bcb8e7d5e9c6", "evidence_references": [ "https://explorer.testnet.chain.robinhood.com/tx/0xdeef8c8ef4c2d83d36497328def1188e097ebe47a95ac9280613bcb8e7d5e9c6", "https://explorer.testnet.chain.robinhood.com/tx/0xbdb94c0ff99674b7f8e6231c6d1b60b5459f9a77f6385bbb038f7cc86ad2b740", "https://explorer.testnet.chain.robinhood.com/tx/0x59ccc585a3e1e7357f66a444d55549c40530425d491b73a168c4fbc115141c24", "https://explorer.testnet.chain.robinhood.com/tx/0x5f8aed0eefc23e6c7bb584b15754af8b665b37c3335813459cd707c7be6a16cf", "https://explorer.testnet.chain.robinhood.com/tx/0x45e781c5ba358ca824aa2653335f19e2cbe2ee6570a32311242ee7add57bacd2" ] } ], "claim": null, "vouches": [], "vouchesCount": 0, "dimensions": [ { "id": "economic_history", "label": "Economic History", "proofTypes": [ "wallet_age", "transaction_history", "economic_history" ], "reason": null, "status": "supported" }, { "id": "counterparty_history", "label": "Counterparty History", "proofTypes": [ "unique_counterparty", "repeat_counterparty" ], "reason": "No counterparty relationship evidence exists for this wallet yet.", "status": "supported" }, { "id": "contract_history", "label": "Contract History", "proofTypes": [ "contract_history" ], "reason": "No contract counterparty evidence exists for this wallet yet.", "status": "supported" }, { "id": "community_trust", "label": "Community Trust", "proofTypes": [ "role_attestation" ], "reason": "No structured attestation evidence exists for this wallet yet.", "status": "unsupported" }, { "id": "risk_signals", "label": "Risk Signals", "proofTypes": [], "reason": "No risk signal could be evaluated for this wallet yet.", "status": "supported" } ], "score": 130, "tier": { "id": "new", "label": "New", "minScore": 0, "maxScore": 249 }, "formulaVersion": "1.1.0-provisional", "completeness": "complete"}Access
Read-only
Auth
No API key
Browsers
CORS-open
Edge cache
60 seconds
Coverage
Robinhood Testnet
01 · Playground
Send a request, see the evidence.
Real calls against Robinhood Testnet. Try the sample, an invalid address, or an unknown wallet — each shows what the API actually returns.
curl -s "https://fathom-xi-bice.vercel.app/api/reputation/0x71c4e2a9b30d18f6a5e7c4b2d91f04a83b6c4a3f" \ -H "accept: application/json"No response yet
Send a request — the card fills with the wallet's real evidence.
02 · Endpoint
One route, one wallet.
No endpoints per resource, no pagination, no keys. The wallet address is the only parameter — replace the path segment and go.
GET /api/reputation/{address}Addresses are matched case-insensitively and normalized to lowercase. Unknown wallets still return 200 — fields that cannot be evaluated are null, never fabricated.
03 · Response fields
Click any field to decode it.
Seventeen fields, two honest null rules: null means unknown, and a confirmed zero is a real zero.
Field 1 of 17
address
Lowercase wallet address — the identity this whole object describes.
null means unknown. Never treat it as zero.
04 · Errors
Errors that tell you why.
Three failure modes, one shape. Click a card to see its exact body.
{ "error": { "code": "invalid_address", "message": "Address must be a valid EVM address." }}Always this shape. Never a stack trace.
05 · Limits & notes
Read before you ship.
Four things that keep integrations honest.
No key, no enforced limits
No API key required. No rate limits yet — be reasonable, responses cache at the edge for 60 seconds.
Testnet only
Coverage is Robinhood Chain Testnet (chain 46630). Scores reset between testnet and mainnet.
A score is not a verdict
The number is provisional compression over evidence. Surface proofs and risk signals in your own UI before users act on it.
Null is not zero
Fields that cannot be evaluated return null. Treat unknown as unknown — never as a confirmed zero.
06 · Build with it
What you can build.
Three lines each — badge, gate, check. All read-only, all from the same response.
Wallet badge
Show the tier label anywhere a wallet appears.
const badge = profile.tier?.label ?? "Unrated";Access gate
Let wallets with enough peer attestations into gated spaces.
const allowed = profile.attestations >= 3;Pre-trade check
Surface open disputes before a trade, never after.
const blocked = profile.activeDisputes > 0;07 · Changelog
The formula tells you what changed.
Every response carries formulaVersion, so your integration can react to calibration changes.
1.1.0-provisional
Added riskLevel and vouchesCount; conservative calibration floors.
1.0.0
Initial public shape: score, tier, proofs, dimensions, completeness.
Check a wallet before you trust it.
Paste any address — the playground above runs it for real.