# namera verify-signature

> Documentation index: [llms.txt](https://namera.ai/llms.txt).

Source: https://namera.ai/docs/cli/reference/signatures/verify-signature

Check an account signature against its original payload.

Check an account signature against its original payload.

## Usage [#usage]

```sh
namera verify-signature \
  --namespace evm \
  --wallet 0199dfe1-0000-7000-8000-000000000001 \
  --network 'Base Sepolia' \
  --type message \
  --message 'Hello from Namera' \
  --signature <hex-signature>
```

## Output [#output]

<div className="docs-response">

```text
Signature valid
-> Account: 👛 Example account
-> Network: Base Sepolia
-> Type: Message
```

</div>

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

<div className="docs-response">

```json
{
  "namespace": "eip155",
  "walletId": "0199dfe1-0000-7000-8000-000000000001",
  "chainId": "eip155:84532",
  "account": "0x1111111111111111111111111111111111111111",
  "valid": true,
  "type": "message"
}
```

</div>

## Options [#options]

### --namespace [#--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 [#--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 [#--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](https://namera.ai/docs/sdk/supported-networks)
lists their identifiers.

### --type [#--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 [#--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 [#--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 [#--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 [#--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 [#--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.

```sh
namera wallet list --profile work
```

The command also accepts [global options](https://namera.ai/docs/cli/reference/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 [#errors]

Failures exit nonzero and are written to stderr. With `--output json`, inspect
`error.code` and `error.nextStep`. See [Output and Errors](https://namera.ai/docs/cli/output-and-errors).
