Guides
Step-by-step integrations you can clone. Each guide ends with a minimal working server.
By framework
Node
- Gate an Express route
- Gate a Next.js route (Pages)
- Gate a Next.js route (App Router)
- Gate a Fastify route
- Hono / Cloudflare Workers
Python
Product flows
- Sign in with Bitcoin — full signed-challenge auth flow.
- Sybil-filtered Nostr relay — Strfry plugin drop-in.
- Gate an airdrop — CSV of candidates → sybil-resistant allowlist.
General pattern
Every gate decision boils down to:
- Extract a subject (address, attestation ID, or bound identity) from the request.
- Call
/api/check(or@orangecheck/sdk'scheck(), or the gate middleware). - Pass if
ok: true; reject with a clear reason otherwise.
The only thing that varies across stacks is how you express that. These guides are recipes for that expression.
Can't find your stack?
The raw primitive is GET /api/check. Call it from anything that speaks HTTP:
curl "https://ochk.io/api/check?addr=bc1q...&min_sats=100000&min_days=30"
If the result's .ok is true, proceed. That's every gate, in one line.