SDK Explorer

Generates a challenge for signing the EIP-712 typed structured data from a specified user-controlled wallet. This endpoint only supports Ethereum and EVM-compatible blockchains. Please note that not all Dapps currently support Smart Contract Accounts (SCA); 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
SignTypedDataRequest
object
Required
wallet_id
string
Required

System-generated unique identifier of the resource.

data
string
Required

A string represents the typed structured data in EIP-712

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
3import json
4
5client = utils.init_user_controlled_wallets_client(api_key=key)
6
7api_instance = user_controlled_wallets.SigningApi(client)
8typed_data = json.dumps({
9    "types": {
10        "EIP712Domain": [
11            {"name": "name", "type": "string"},
12            {"name": "version", "type": "string"},
13            {"name": "chainId", "type": "uint256"},
14            {"name": "verifyingContract", "type": "address"},
15        ],
16        "Person": [
17            {"name": "name", "type": "string"},
18            {"name": "wallet", "type": "address"},
19        ],
20        "Mail": [
21            {"name": "from", "type": "Person"},
22            {"name": "to", "type": "Person"},
23            {"name": "contents", "type": "string"},
24        ],
25    },
26    "primaryType": "Mail",
27    "domain": {
28        "name": "Ether Mail",
29        "version": "1",
30        "chainId": "11155111",
31        "verifyingContract": "0xCcCCccccCCCCcCCCCCCcCcCccCcCCCcCcccccccC",
32    },
33    "message": {
34        "from": {
35            "name": "Cow",
36            "wallet": "0xCD2a3d9F938E13CD947Ec05AbC7FE734Df8DD826",
37        },
38        "to": {
39            "name": "Bob",
40            "wallet": "0xbBbBBBBbbBBBbbbBbbBbbbbBBbBbbbbBbBbbBBbB",
41        },
42        "contents": "Hello, Bob!",
43    },
44})
45request = user_controlled_wallets.SignTypedDataRequest.from_dict({
46    "walletId": "290926b7-3790-5789-a7a9-594a9b99f1cc",
47    "data": typed_data,
48    "memo": "test",
49})
50response = api_instance.sign_user_typed_data(x_user_token=user_token, sign_typed_data_request=request)
51print(response.json())
52
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.