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
| Status | Meaning |
|---|---|
400 | Malformed or expired SIWE, wrong statement, or wrong chain |
404 contract_not_found | The named contract isn't deployed or doesn't expose a policy |
404 verification_not_found | The wallet has no credential for the contract's provider |
404 needs_reauth | The credential predates the contract's cutoffBlock — send the user to re-verify |
400 conditions_not_satisfied | The credential doesn't meet the contract's conditions |
400 invalid_policy | The contract's provider/condition/operator combo isn't supported |
SIWE requirements
statementmust be exactly:Claim eligibility for a Base Verify onchain benefit.Resourcesmust includeeip155:<chainId>:<yourContractAddress>.chainIdmust be the chain you're claiming on — Base Sepolia (84532) during the test phase.