hoodler

Add ownership to your app.

One question, answered honestly: does this wallet hold this asset, and what does that unlock. Everything else here is built on that.

Ask about one wallet

curl https://hoodler.social/api/v1/eligibility   -H "authorization: Bearer hd_live_…"   -G --data-urlencode "wallet=0x…"      --data-urlencode "asset=0xd0601CE157Db5bdC3162BbaC2a2C8aF5320D9EEC"
{
  "holder": true,
  "tier": "t3",
  "tierLabel": "Anchor",
  "units": 11.7266,
  "usd": 2689.41,
  "priceQuality": "fair",
  "firstSeenBlock": "56552543"
}

A read failure answers 503, never holder: false. “Not a holder” and “could not check” are opposite statements and this API will not blur them.

What it will not do

Gate a page on holding

import { HolderGate } from "@hoodler/react";

<HolderGate asset="0xd0601CE1…" minTier="t2" wallet={address}>
  <ResearchNote />
</HolderGate>

The component asks this API and renders nothing until it answers. It never sends the viewer's address anywhere but here, and it never caches a positive answer past its own page load.

Your keys

Connect a wallet to create a key.