namera verify-signature
Check an account signature against its original payload.
Check an account signature against its original payload.
Usage
namera verify-signature \
--namespace evm \
--wallet 0199dfe1-0000-7000-8000-000000000001 \
--network 'Base Sepolia' \
--type message \
--message 'Hello from Namera' \
--signature <hex-signature>Output
Signature valid
-> Account: 👛 Example account
-> Network: Base Sepolia
-> Type: MessageExample output uses fixture accounts and hashes, captured with the CLI's output formatters. Plain-text output is shown without terminal colors; your values and relative expiry dates will differ.
With --output json:
{
"namespace": "eip155",
"walletId": "0199dfe1-0000-7000-8000-000000000001",
"chainId": "eip155:84532",
"account": "0x1111111111111111111111111111111111111111",
"valid": true,
"type": "message"
}Options
--namespace
- Type:
evm | eip155 - Required: for non-interactive input flags
Select the EVM network family. Both values resolve to the same namespace. This is not the chain ID; choose the network separately.
--wallet
- Type:
string(account ID) - Required: for non-interactive input flags
Use an ID from namera --output json wallet list, not an Ethereum address.
With input flags, the CLI reads the account to validate your selection.
--network
- Type: network name, numeric chain ID, or CAIP-2 ID
- Required: for non-interactive input flags
For Base Sepolia, use --network 'Base Sepolia', --network 84532, or
--network eip155:84532. Names are case-insensitive. The supported networks are
Ethereum, Sepolia, Base, Base Sepolia, Arbitrum One, Arbitrum Sepolia,
OP Mainnet, and OP Sepolia. Supported Networks
lists their identifiers.
--type
- Type:
message | typed-data - Required: for non-interactive input flags
Choose a UTF-8 message or an EIP-712 structured payload. There is no default.
--message
- Type:
string - Required: when
--type message
The exact UTF-8 message. Quote it to preserve spaces. Whitespace and letter case
are part of the signed payload. Do not combine this with --typed-data.
--typed-data
- Type: JSON string
- Required: when
--type typed-data
Supply domain, types, primaryType, and message following EIP-712.
The domain identifies the application and can bind the signature to a chain and
verifying contract. Use the same full object when verifying. Do not combine it
with --message.
--signature
- Type: even-length
0x-prefixed hex - Required: for non-interactive input flags
Pass the complete signature returned by namera sign, with the same account,
network, and original message or typed data. Do not strip its smart-account prefix.
--params
- Type: JSON string
- Required: only when replacing individual input flags
Pass the complete request as one JSON object. Use this for batch calls or
scripts that already construct requests. JSON uses eip155 for the namespace,
CAIP-2 chain IDs, and decimal strings for bigint quantities.
Do not combine it with individual transaction or signature input flags. It can
be used with --profile and global output options. Supplying JSON skips the
interactive selection and its extra account/session-key reads; authorization
and request validation still apply.
--profile
- Type:
string - Default:
personal
Choose the saved CLI connection for this command. Pass the same name used at
login. If NAMERA_API_KEY is set, ordinary API commands use that key instead of
the profile's OAuth credentials.
namera wallet list --profile workThe command also accepts global options:
--output pretty|json, --quiet, and --help.
There is no --session-key option. Verification establishes whether the account
accepts the signature; it does not identify which session key signed.
A successful command may return valid: false. Scripts must inspect this
field rather than treating exit code zero as proof of validity.
Errors
Failures exit nonzero and are written to stderr. With --output json, inspect
error.code and error.nextStep. See Output and Errors.