SDK Explorer

Generates a challenge for signing a message from a specified user-controlled wallet. This endpoint supports Ethereum-based blockchains (using EIP-191) and Solana (using Ed25519 signatures). Note that Smart Contract Accounts (SCA) are specific to Ethereum and EVM-compatible chains. The difference between Ethereum's EOA and SCA can be found in the account types guide. You can also check the list of Ethereum Dapps that support SCA: https://eip1271.io/.

Parameters
SignMessageRequest
object
Required
wallet_id
string
Required

System-generated unique identifier of the resource.

encoded_by_hex
boolean

Indicator of whether the input message is encoded by hex. If TRUE, then the message should be a hex string. By default, it is False.

message
string
Required

The user friendly message that needs to be signed. If it is a hex string, encodedByHex needs to be TRUE. The hex string should start with “0x” and have even length.

memo
string

The human readable explanation for this sign action. Useful for presenting with extra information.

x_user_token
string
Required

Unique system generated JWT session token for specific user.

x_request_id
string

Developer-provided parameter used to identify this request. Useful when communicating with Circle Support.

Responses
Example
1from circle.web3 import user_controlled_wallets
2from circle.web3 import utils
3
4client = utils.init_user_controlled_wallets_client(api_key=key)
5
6api_instance = user_controlled_wallets.SigningApi(client)
7request = user_controlled_wallets.SignMessageRequest.from_dict({
8    "walletId": "290926b7-3790-5789-a7a9-594a9b99f1cc",
9    "message": "Hello World",
10    "memo": "test",
11})
12response = api_instance.sign_user_message(x_user_token=user_token, sign_message_request=request)
13print(response.json())
14
ResponseChoose an example
1{
2  "data": {
3    "challenge_id": "c4d1da72-111e-4d52-bdbf-2e74a2d803d5"
4  }
5}
Did this page help you?
© 2023-2025 Circle Technology Services, LLC. All rights reserved.