For AI agents: read the documentation index. Documentation pages are available as Markdown by appending .md to their URL, or requesting Accept: text/markdown.

Namera Docs

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: Message

Example 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 work

The 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.