Skip to main content

SDK Verification Patterns

Reuse-first flow

Use this as the default UX. It minimizes user prompts while still issuing new proofs when needed.
<VerifyGate
  requiredVerifiers={['ownership-basic']}
  strategy="reuse-or-create"
>
  <Protected />
</VerifyGate>

Fresh proof flow

Use this when the action is high stakes and you need a newly created assertion.
<VerifyGate
  requiredVerifiers={['wallet-risk']}
  strategy="fresh"
>
  <Protected />
</VerifyGate>

Hosted interactive flow

Interactive verifiers hand off to the hosted verify surface.
<VerifyGate
  requiredVerifiers={['ownership-social']}
  hostedCheckoutUrl="https://neus.network/verify"
/>

Backend policy check

For server-side access, use the SDK gate-check helper instead of reading full proof payloads.
const result = await client.gateCheck({
  address: '0x...',
  verifierIds: ['token-holding'],
  contractAddress: '0x...',
  minBalance: '100',
  chainId: 8453,
  since: Date.now() - 60 * 60 * 1000
});