curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "personal_sign",
"params": {
"message": "Hello from Privy!",
"encoding": "utf-8"
}
}'
{
"method": "personal_sign",
"data": {
"signature": "0x0db9c7bd881045cbba28c347de6cc32a653e15d7f6f2f1cec21d645f402a64196e877eb45d3041f8d2ab1a76f57f408b63894cfc6f339d8f584bd26efceae3081c",
"encoding": "hex"
}
}
Ethereum
personal_sign
Sign a message using the personal_sign method.
POST
/
v1
/
wallets
/
{wallet_id}
/
rpc
curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "personal_sign",
"params": {
"message": "Hello from Privy!",
"encoding": "utf-8"
}
}'
{
"method": "personal_sign",
"data": {
"signature": "0x0db9c7bd881045cbba28c347de6cc32a653e15d7f6f2f1cec21d645f402a64196e877eb45d3041f8d2ab1a76f57f408b63894cfc6f339d8f584bd26efceae3081c",
"encoding": "hex"
}
}
SDK methods
Learn more about signing messages using our SDKs here.Idempotency on errors: On 4xx or 5xx, Privy caches the response and replays it for the same
key. Generate a new key to retry after a server error. Policy violations are an exception and
allow same-key retries.
curl --request POST \
--url https://api.privy.io/v1/wallets/{wallet_id}/rpc \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '{
"method": "personal_sign",
"params": {
"message": "Hello from Privy!",
"encoding": "utf-8"
}
}'
{
"method": "personal_sign",
"data": {
"signature": "0x0db9c7bd881045cbba28c347de6cc32a653e15d7f6f2f1cec21d645f402a64196e877eb45d3041f8d2ab1a76f57f408b63894cfc6f339d8f584bd26efceae3081c",
"encoding": "hex"
}
}
Headers
string
required
ID of your Privy app.
string
Request authorization signature. If multiple signatures are required, they should be comma
separated.
string
Request expiry. Value is a Unix timestamp in milliseconds representing the deadline by which the
request must be processed.
Path Parameters
string
required
ID of the wallet to get.
Body
string
required
Available options:
personal_signstring
A CAIP-2 chain ID specifying which chain to sign on (e.g.
eip155:1). Required when using
signature_options.object
Options controlling signature production. Required for ERC-1271 signing with EIP-7702 delegated
(gas-sponsored) wallets. Learn more in the ERC-1271 signatures guide.
Hide child properties
Hide child properties
enum<string>
required
The type of cryptographic signature to produce. Use
erc1271 for ERC-1271 compliant
signatures for smart account wallets, or ecdsa for standard ECDSA signatures.Available options: ecdsa, erc1271Response
enum<string>
required
Available options:
personal_signWas this page helpful?

