Skip to main content
The examples on this page assume you have an initialised client, as described in Choose an interface. Typed message signing is performed through the Create transaction endpoint by setting operation to TYPED_MESSAGE, and the result is a signature over a readable message rather than an on-chain transfer. For the concepts behind typed messages and how to enable the feature in your workspace, see Typed Message Signing.

Request structure

The following fields are required for any typed message signing request. The type of each message is one of EIP191, EIP712, TIP191 or BTC_MESSAGE.
You do not need to add a prefix to the message before you submit it to the API. The only requirement is that for any message type other than EIP712 the content must be submitted in hexadecimal format, whereas for EIP712 the content is the typed data object itself.
For the full list of rawMessageData fields see Raw signing objects, and for all request and response schemas see the Create transaction API reference. To avoid creating duplicate requests when you retry, set a unique externalTxId on every request, as described in Transaction idempotency.

Sign an EIP-191 personal message

This example signs the message Hello, Ethereum! from a vault account on the Sepolia testnet, where the message is submitted as a hex string.

Sign an EIP-712 typed data message

For EIP712 the content is the typed data object, made up of types, primaryType, domain and message, rather than a hex string. The following example signs a Permit message, using placeholder addresses that you replace with your own values.

Network-specific guides

Each network has its own message formats and signature structure, which the following pages cover in detail. After the request is created you can retrieve the signature from the transaction once it completes, as described in Monitoring transaction status.