Skip to main content
VerifyGate checks eligibility, launches hosted verify for interactive verifiers, and unlocks content. It is the reuse-first React surface: create mode defaults to unlisted public proofs so gateCheck and reuse work without passing proofOptions. Raw client.verify() stays private-by-default. See Security and trust. appId and sponsorGrant: Get started.

Default create behavior

When proofOptions is omitted, create mode merges:
FieldDefault
privacyLevelpublic
publicDisplayfalse
storeOriginalContenttrue
Pass proofOptions to force listed public (public + publicDisplay: true) or private storage.

Basic usage

import { VerifyGate } from '@neus/sdk/widgets';

export function Page() {
  return (
    <VerifyGate
      requiredVerifiers={['nft-ownership']}
      verifierData={{
        'nft-ownership': {
          contractAddress: '0x...',
          tokenId: '1',
          chainId: 8453
        }
      }}
      appId="your-app-id"
    >
      <div>Unlocked</div>
    </VerifyGate>
  );
}

Key props

PropWhat it does
requiredVerifiersSets the verification policy
verifierDataSupplies verifier-specific inputs
strategyChooses reuse, reuse-or-create, or fresh
proofOptionsOverrides privacy and content storage (defaults are unlisted public)
modeChooses create vs access behavior
proofIdPass a proof receipt ID directly for access mode
appIdSends public app attribution
sponsorGrantEnables sponsored proof creation
hostedCheckoutUrlOverrides the hosted verify URL when needed
oauthProviderPre-selects the OAuth provider when the user already chose one in your app

Best use cases

  • gating paid or premium content
  • checking NFT or token access
  • launching hosted social or org verification
  • requiring fresh proof creation for high-stakes actions

Hosted OAuth

Interactive verifiers (ownership-social, ownership-org-oauth, proof-of-human) use Hosted Verify. Set oauthProvider when the user already picked a provider in your app.
import { VerifyGate } from '@neus/sdk/widgets';

export function ConnectGithub() {
  return (
    <VerifyGate
      requiredVerifiers={['ownership-social']}
      oauthProvider="github"
      appId="your-app-id"
    />
  );
}
Allowed values:
  • Social: x, twitter, github, discord, facebook, linkedin, telegram, farcaster
  • Org: google, microsoft
Popup: still neus_checkout_done. oauthProvider only picks which sign-in opens first; proof payload and your handling stay the same.

Direct-sign vs hosted

  • ownership-basic and other wallet-creatable verifiers can run in-widget with a connected wallet.
  • Social, org, and human flows route through hosted verify. Start from Hosted Verify when you are unsure.

Integration

Check, verify, save, reuse.

SDK verifications

Patterns.