Skip to main content
When a user signs, Wallet Verification checks the signature and stores an attestation on the verification. The attestation holds everything you need to re-check the proof independently.

Verification states

failure_reason is currently always invalid_signature.

Verification object

The create response also includes url. No other response returns it.

Attestation object

ecrecover and ed25519 are stateless. erc1271 and erc6492 call the wallet contract, so they record the block.
Attestations are kept for 5 years.

Verify an attestation yourself

You can re-check any attestation without trusting Wallet Verification. Pick the check that matches verification_method.
These examples are illustrative. Use them as a starting point and adapt chain selection, RPC endpoints, and error handling to your stack.
Recover the EIP-191 personal_sign signer over message and compare it to address.
verify-ecrecover.ts

Signed message

EVM wallets sign an EIP-4361 (Sign-In with Ethereum) message. Solana wallets sign the equivalent CAIP-122 message.
Signed message format
The requester name is the business name from Customization, with accents stripped to fit the format. Without one, it reads “The requester”. Your reference_id and metadata are not part of the message. To fetch only the signed text, call GET /verifications/{id}/message. It returns text/plain, or 409 not_verified if the verification is not verified.