Skip to main content
POST
/
api
/
v1
/
wallets
Create wallet
import requests

url = "https://api.example.com/api/v1/wallets"

payload = {
    "wallet_type": "Custodial",
    "name": "<string>",
    "group_type": "agent",
    "main_node_id": "<string>",
    "metadata": {},
    "for_owner": False
}
headers = {"Content-Type": "application/json"}

response = requests.post(url, json=payload, headers=headers)

print(response.text)
{
  "result": {
    "uuid": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "wallet_type": "Custodial",
    "name": "<string>",
    "owner_id": "3c90c3cc-0d44-4b50-8888-8dd25736052a",
    "cobo_wallet_id": "<string>",
    "status": "preparing",
    "metadata": {},
    "created_at": "2023-11-07T05:31:56Z",
    "updated_at": "2023-11-07T05:31:56Z",
    "main_node_id": "<string>"
  },
  "success": true,
  "suggestion": "",
  "message": "",
  "meta": {
    "total": 123,
    "offset": 123,
    "limit": 123,
    "has_more": true,
    "after": "<string>",
    "before": "<string>"
  }
}

Headers

X-API-Key
string | null

Body

application/json

Request payload for creating a wallet.

Ownership can be selected via for_owner:

  • for_owner=False: create for current principal (Agent)
    • for_owner=True: create for current principal's owner (Human), or fallback to current principal when no owner is linked
wallet_type
enum<string>
required

The wallet type. Use MPC.

Available options:
Custodial,
MPC
name
string
required

The wallet name. Max 255 characters.

Required string length: 1 - 255
group_type
enum<string>
default:agent

The MPC key share scheme. AGENT (2-of-2): agent TSS node + Cobo, suitable for automated wallets. HUMAN (2-of-2): mobile TSS node + Cobo, suitable for human-controlled wallets. Defaults to AGENT.

Available options:
agent,
human
main_node_id
string | null

The TSS node ID of the agent's main device. Required when wallet_type=MPC.

metadata
Metadata · object

Arbitrary key-value metadata to associate with the wallet.

for_owner
boolean
default:false

Whether to create the wallet for the principal's linked owner (true) or for the principal itself (false). Defaults to false.

Response

Already exists (idempotent). Successful Response

result
WalletRead · object
required

Wallet response payload.

success
boolean
default:true
suggestion
string
default:""
message
string
default:""
meta
PaginationMeta · object

Pagination metadata for list responses.

Supports both legacy offset-based and cursor-based pagination. Cursor fields (has_more, after, before) are populated for cursor-paginated endpoints. Legacy fields (offset, limit) are populated when the caller uses the deprecated offset parameter.