> ## 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.

# Check gate eligibility or proof criteria (server-side)

> Primary server-side integrator and x402 v2 resource for pre-action trust decisions. Pass gateId from your deployed gate, or explicit verifier/criteria filters. Unpaid public calls receive HTTP 402 with base64-encoded PAYMENT-REQUIRED instructions; retry the identical request with PAYMENT-SIGNATURE. Returns eligible plus matched proof references without exposing private proof payloads.



## OpenAPI

````yaml /openapi/public-api.json get /api/v1/proofs/check
openapi: 3.0.3
info:
  title: Proofable API
  version: 1.3.9
  description: >-
    Public HTTP API for Proofable integrators.


    Recommended integration order (simplest first):

    1. Browser: VerifyGate widget or hosted verify at
    https://proofable.me/verify (wallet, passkey, and OAuth handled by
    Proofable).

    2. JavaScript: `@proofable/sdk` `client.verify()` signs and submits for
    signature-based verifiers; use VerifyGate for hosted/interactive verifiers.

    3. Server gate checks: `GET /api/v1/proofs/check` with `gateId` or criteria
    before granting access.

    4. Raw HTTP: two-phase signing below only when you cannot use the SDK or
    hosted flows.


    Raw HTTP verification uses POST /api/v1/verification/standardize → sign
    signerString → POST /api/v1/verification with the same body plus signature.
    Session-authenticated callers may skip the signature when a valid session is
    present.


    Use your deployment base URL (for example https://api.proofable.me). Some
    verifiers require pro access. Administrative endpoints are not included in
    this specification.


    Versioning: public HTTP is `/api/v1` on https://api.proofable.me. Breaking
    changes ship as a new path version. The current public surface stays
    `/api/v1`. Deprecations are announced in the public changelog. Retired paths
    will send `Deprecation` and `Sunset` headers.


    Machine-readable spec: https://api.proofable.me/openapi.json

    Typed errors use the ErrorResponse object (`success`, `error.code`,
    `error.message`). See https://docs.proofable.me/api/errors.
  license:
    name: Proprietary — all rights reserved
    url: https://proofable.me/legal/terms-of-use
servers:
  - url: https://api.proofable.me
    description: Production API
security: []
paths:
  /api/v1/proofs/check:
    get:
      tags:
        - Proofs
        - Gates
      summary: Check gate eligibility or proof criteria (server-side)
      description: >-
        Primary server-side integrator and x402 v2 resource for pre-action trust
        decisions. Pass gateId from your deployed gate, or explicit
        verifier/criteria filters. Unpaid public calls receive HTTP 402 with
        base64-encoded PAYMENT-REQUIRED instructions; retry the identical
        request with PAYMENT-SIGNATURE. Returns eligible plus matched proof
        references without exposing private proof payloads.
      operationId: proofCheck
      parameters:
        - name: address
          in: query
          required: false
          schema:
            type: string
        - name: qHash
          in: query
          required: false
          schema:
            type: string
            pattern: ^0x[a-fA-F0-9]{64}$
        - name: gateId
          in: query
          required: false
          schema:
            type: string
            maxLength: 80
            pattern: ^[a-zA-Z0-9:_-]+$
        - name: verifierIds
          in: query
          required: false
          schema:
            type: string
        - name: verifierId
          in: query
          required: false
          schema:
            type: string
        - name: requireAll
          in: query
          required: false
          schema:
            type: boolean
        - name: minCount
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 1000
        - name: sinceDays
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 3650
        - name: since
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
        - name: limit
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 1000
        - name: referenceType
          in: query
          required: false
          schema:
            type: string
        - name: referenceId
          in: query
          required: false
          schema:
            type: string
        - name: tag
          in: query
          required: false
          schema:
            type: string
        - name: tags
          in: query
          required: false
          schema:
            type: string
        - name: contentType
          in: query
          required: false
          schema:
            type: string
        - name: content
          in: query
          required: false
          schema:
            type: string
        - name: contentHash
          in: query
          required: false
          schema:
            type: string
        - name: contractAddress
          in: query
          required: false
          schema:
            type: string
        - name: tokenId
          in: query
          required: false
          schema:
            type: string
        - name: chainId
          in: query
          required: false
          schema:
            type: integer
            minimum: 1
            description: >-
              EVM chain ID of the asset being checked (e.g. 1 for Ethereum
              Mainnet, 8453 for Base). Required for asset verifiers
              (nft-ownership, token-holding, contract-ownership). Not a hub or
              proof-storage filter.
        - name: domain
          in: query
          required: false
          schema:
            type: string
        - name: minBalance
          in: query
          required: false
          schema:
            type: string
        - name: provider
          in: query
          required: false
          schema:
            type: string
        - name: handle
          in: query
          required: false
          schema:
            type: string
        - name: namespace
          in: query
          required: false
          description: >-
            When set, requires ownership-pseudonym proofs to include this
            namespace (matches verifier data.namespace; legacy proofs without
            namespace default to neus).
          schema:
            type: string
            minLength: 1
            maxLength: 64
            pattern: ^[a-z0-9._-]+$
        - name: traitPath
          in: query
          required: false
          schema:
            type: string
        - name: traitGte
          in: query
          required: false
          schema:
            type: number
            minimum: 0
        - name: select
          in: query
          required: false
          schema:
            type: string
        - name: ownerAddress
          in: query
          required: false
          schema:
            type: string
        - name: riskLevel
          in: query
          required: false
          schema:
            type: string
        - name: sanctioned
          in: query
          required: false
          schema:
            type: boolean
        - name: poisoned
          in: query
          required: false
          schema:
            type: boolean
        - name: primaryWalletAddress
          in: query
          required: false
          schema:
            type: string
        - name: secondaryWalletAddress
          in: query
          required: false
          schema:
            type: string
        - name: controllerWallet
          in: query
          required: false
          description: >-
            Approving account (delegation grantor) for agent-delegation checks;
            optional filter. Not the agent wallet.
          schema:
            type: string
        - name: agentWallet
          in: query
          required: false
          schema:
            type: string
        - name: delegationScope
          in: query
          required: false
          schema:
            type: string
        - name: agentId
          in: query
          required: false
          schema:
            type: string
        - name: verificationMethod
          in: query
          required: false
          schema:
            type: string
        - name: neusPersonhoodId
          in: query
          required: false
          schema:
            type: string
        - name: ageMin
          in: query
          required: false
          schema:
            type: integer
            minimum: 0
            maximum: 150
        - name: sanctionsPassed
          in: query
          required: false
          schema:
            type: boolean
        - name: subject
          in: query
          required: false
          schema:
            type: string
            enum:
              - me
        - name: includePrivate
          in: query
          required: false
          schema:
            type: boolean
        - name: x-wallet-address
          in: header
          required: false
          schema:
            type: string
        - name: x-signature
          in: header
          required: false
          schema:
            type: string
        - name: x-signed-timestamp
          in: header
          required: false
          schema:
            type: string
        - name: x-chain
          in: header
          required: false
          schema:
            type: string
            description: >-
              CAIP-2 chain reference for non-EVM signature verification (e.g.
              solana:mainnet)
        - name: x-signature-method
          in: header
          required: false
          schema:
            type: string
            description: Signature method hint for non-EVM signatures (e.g. ed25519)
      responses:
        '200':
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GateCheckResponse'
          headers:
            PAYMENT-RESPONSE:
              description: >-
                Base64-encoded x402 v2 settlement result when the request was
                paid with x402
              schema:
                type: string
        '400':
          description: Invalid request
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '401':
          description: Authentication required for subject=me
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '402':
          description: x402 v2 payment required
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
          headers:
            PAYMENT-REQUIRED:
              description: Base64-encoded x402 v2 PaymentRequired object
              schema:
                type: string
        '403':
          description: Forbidden
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '404':
          description: Not found
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '429':
          description: Rate limited
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '500':
          description: Server error
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
        '503':
          description: Service unavailable
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ErrorResponse'
components:
  schemas:
    GateCheckResponse:
      type: object
      required:
        - success
        - data
      properties:
        success:
          type: boolean
          enum:
            - true
        data:
          $ref: '#/components/schemas/GateCheckData'
        timestamp:
          $ref: '#/components/schemas/Timestamp'
      additionalProperties: true
    ErrorResponse:
      type: object
      required:
        - success
        - error
      properties:
        success:
          type: boolean
          enum:
            - false
        error:
          type: object
          required:
            - code
            - message
          properties:
            code:
              type: string
            message:
              type: string
            type:
              type: string
            details: {}
          additionalProperties: true
        timestamp:
          $ref: '#/components/schemas/Timestamp'
        requestId:
          type: string
      additionalProperties: true
    GateCheckData:
      type: object
      description: >-
        Gate eligibility result. The gate block is the readiness contract.
        allRequiredSatisfied is the only signal that authorizes submit/fulfill.
      properties:
        gate:
          type: object
          description: Gate evaluation against the caller's proof inventory.
          properties:
            allRequiredSatisfied:
              type: boolean
              description: >-
                True when every gate requirement row is satisfied by an existing
                or reused proof. This is the only signal that authorizes
                submit/fulfill.
            satisfiedVerifierIds:
              type: array
              items:
                type: string
              description: Verifier IDs whose requirement rows are satisfied.
            missingVerifierIds:
              type: array
              items:
                type: string
              description: Verifier IDs that still need a proof to satisfy the gate.
            reusedVerifierProofs:
              type: object
              description: >-
                Map of verifierId to qHash (or qHash array) of existing proofs
                that can be reused instead of re-running a check.
              additionalProperties: true
            matchedQHashes:
              type: array
              items:
                type: string
              description: qHashes of proofs that matched gate requirements.
            rows:
              type: array
              description: Per-requirement row evaluation results.
              items:
                type: object
                properties:
                  verifierId:
                    type: string
                  satisfied:
                    type: boolean
                  qHash:
                    nullable: true
                    type: string
                  reused:
                    type: boolean
                additionalProperties: true
          additionalProperties: true
      additionalProperties: true
    Timestamp:
      oneOf:
        - type: string
          format: date-time
        - type: number

````