EVM
Verify a signed message (recover signer) API
Recover the wallet address that signed a message (EIP-191 personal_sign) and optionally confirm it matches an expected signer. The core check for agent auth, login-with-wallet, and x402-style payment authorization.
Price$0.01per request
MethodPOST
Route/v1/evm/verify-signature
StatusLive
MIME typeapplication/json
Rate limit120/minute
CacheNo cache
evmsignatureecrecoverautheip191verifywallet
API URL
Integration docshttps://x402.hexl.dev/v1/evm/verify-signatureExample request
{
"message": "x402 marketplace signature demo",
"signature": "0x9f63c92c5d5751515875261f638e9df309d6d156722834672bb4cf4663337db7795a962b02719c38942fb2d40e73818cffc62ee808bdc2afae15d07d4f2663821b",
"expectedAddress": "0x70997970C51812dc3A010C7d01b50e0d17dc79C8"
}Example response
{
"signer": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045",
"valid": true,
"expectedAddress": "0xd8dA6BF26964aF9D7eEd9e03E53415D37aA96045"
}Input schema
{
"type": "object",
"required": [
"message",
"signature"
],
"properties": {
"message": {
"type": "string",
"examples": [
"Login to Acme at 2026-06-02"
]
},
"signature": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]+$"
},
"expectedAddress": {
"type": "string",
"pattern": "^0x[0-9a-fA-F]{40}$"
}
}
}Output schema
{
"type": "object",
"required": [
"signer",
"valid"
],
"properties": {
"signer": {
"type": "string"
},
"valid": {
"type": "boolean"
},
"expectedAddress": {
"type": [
"string",
"null"
]
}
}
}