Base Verify Onchain

API reference

POST /v1/onchain_verifications

Exchanges a SIWE signature for a signed verification. No API key — the SIWE signature is the credential, and the verification is only usable by the signing wallet at the contract it names.

Request

{ "message": "<SIWE message; its Resources line names your contract>", "signature": "0x<wallet signature over the message>" }

Response 200

{ "identityHash": "0x<bytes32>", "expiration": 1723497600, "signature": "0x<eip-712 signature>" }

Pass these straight to your contract's claim function.

Errors

StatusMeaning
400Malformed or expired SIWE, wrong statement, or wrong chain
404 contract_not_foundThe named contract isn't deployed or doesn't expose a policy
404 verification_not_foundThe wallet has no credential for the contract's provider
404 needs_reauthThe credential predates the contract's cutoffBlock — send the user to re-verify
400 conditions_not_satisfiedThe credential doesn't meet the contract's conditions
400 invalid_policyThe contract's provider/condition/operator combo isn't supported

SIWE requirements

  • statement must be exactly: Claim eligibility for a Base Verify onchain benefit.
  • Resources must include eip155:<chainId>:<yourContractAddress>.
  • chainId must be the chain you're claiming on — Base Sepolia (84532) during the test phase.