POST
/
2025-06-09
/
wallets
Create Wallet
curl --request POST \
  --url https://staging.crossmint.com/api/2025-06-09/wallets \
  --header 'Content-Type: application/json' \
  --header 'X-API-KEY: <x-api-key>' \
  --data '{
  "chainType": "evm",
  "type": "smart",
  "config": {
    "adminSigner": {
      "type": "external-wallet",
      "address": "0x1234567890123456789012345678901234567890"
    }
  },
  "owner": "email:user@example.com"
}'
{
  "chainType": "evm",
  "type": "smart",
  "owner": "email:user@example.com",
  "address": "0x1234567890123456789012345678901234567890",
  "config": {
    "adminSigner": {
      "type": "external-wallet",
      "address": "0x1234567890123456789012345678901234567890",
      "locator": "external-wallet:0x1234567890123456789012345678901234567890"
    }
  }
}

Headers

X-API-KEY
string
required

API key required for authentication

x-idempotency-key
string

Unique key to prevent duplicate wallet creation

Body

application/json

EVM wallet creation input

chainType
enum<string>
required
Available options:
evm
type
enum<string>
default:smart
Available options:
smart,
mpc
config
owner
string

A user locator can be of the format:

  • email:<email>
  • userId:<userId>
  • phoneNumber:<phoneNumber>
  • twitter:<handle>
  • x:<handle>
Example:
[
"email:user@example.com",
"userId:507f1f77bcf86cd799439011",
"userId:did:example:cm4lr5piw0h6t1bjho0onryql",
"phoneNumber:+12125551234",
"twitter:johndoe",
"x:@johndoe"
]

Response

Returns an existing wallet (200) if one already exists for the provided owner or idempotencyKey, or creates and returns a new wallet (201). The response includes the wallet details and whether it was newly created.

Complete wallet configuration including type-specific settings

chainType
enum<string>
required

The blockchain type of the wallet

Available options:
evm
type
enum<string>
required

The wallet type (smart or mpc)

Available options:
smart,
mpc
Example:

"smart"

address
string
required

The onchain address of the wallet

Example:

"0x1234567890123456789012345678901234567890"

config
object

EVM wallet type specific configuration settings

owner
string

The user that owns this wallet in format <locatorType>:<value>

Example:

"email:test@example.com"

createdAt

ISO timestamp of when the wallet was created ISO 8601 formatted timestamp

Example:

"2024-01-01T00:00:00.000Z"