> ## Documentation Index
> Fetch the complete documentation index at: https://docs.proofable.me/llms.txt
> Use this file to discover all available pages before exploring further.

# Verify patterns

> Verification patterns for the Proofable SDK: proof reuse, fresh checks, hosted checkout, and server-side verification for every flow.

Default strategy: **`reuse-or-create`**.

## Privacy

`client.verify()` is an advanced server or controlled-signing path. `VerifyGate` opens **Hosted Verify** for checks that cannot finish inside your app. Full matrix: [Security](../security)

| Option | When |
| - | - |
| `privacyLevel: 'private'` | Default; owner or authorized access for private reads |
| `privacyLevel: 'public'` | Public reuse without owner auth; pair with `publicDisplay` |
| `publicDisplay: false` | Unlisted - still public to anyone with id |
| `publicDisplay: true` | Listed / discoverable (needs `public`) |

`storeOriginalContent` and explicit visibility options are advanced `client.verify()` storage controls, not the default VerifyGate path.

## Reuse-first

```jsx theme={"system"}
<VerifyGate
  gate={[{ verifierId: 'proof-of-human' }]}
  strategy="reuse-or-create"
>
  <Protected />
</VerifyGate>
```

## Fresh

High-stakes actions - force new proof:

```jsx theme={"system"}
<VerifyGate strategy="fresh" gate={[{ verifierId: 'proof-of-human' }]}>
  <Protected />
</VerifyGate>
```

## Read-only gate

```jsx theme={"system"}
<VerifyGate strategy="reuse" gate={[{ verifierId: 'proof-of-human' }]}>
  <Protected />
</VerifyGate>
```

## Hosted interactive

Hand off to `/verify` for the missing verifier:

```jsx theme={"system"}
<VerifyGate
  gate={[{ verifierId: 'proof-of-human' }]}
  hostedCheckoutUrl="https://proofable.me/verify"
/>
```

[Hosted Verify](../verification/hosted)

## Server check

Prefer **`gateCheck`** over pulling full proofs for every decision:

```javascript theme={"system"}
const result = await client.gateCheck({
  gate: [{ verifierId: 'proof-of-human' }],
  subject: { accountId: user.accountAddress },
});

if (!result.satisfied) throw new Error('Verification required');
```

## Next

<CardGroup cols={2}>
  <Card title="VerifyGate" icon="object-group" href="../widgets/verifygate">
    Props.
  </Card>

  <Card title="Start" icon="bolt" href="/">
    Loop.
  </Card>
</CardGroup>


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.