POST
/
v1
/
wallets_with_recovery
curl --request POST \
  --url https://api.privy.io/v1/wallets_with_recovery \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'privy-app-id: <privy-app-id>' \
  --data '{
  "wallets": [
    {
      "chain_type": "ethereum",
      "policy_ids": []
    },
    {
      "chain_type": "solana",
      "policy_ids": []
    }
  ],
  "primary_signer": {
    "subject_id": "cm7oxq1el000e11o8iwp7d0d0"
  },
  "recovery_user": {
    "linked_accounts": [
      {
        "type": "email",
        "address": "[email protected]"
      }
    ]
  }
}'
{
  "wallets": [
    {
      "id": "ubul5xhljqorce73sf82u0p3",
      "address": "0x3DE69Fd93873d40459f27Ce5B74B42536f8d6149",
      "chain_type": "ethereum",
      "policy_ids": [],
      "additional_signers": [],
      "created_at": 1744300912643,
      "owner_id": "lzjb3xnjk2ntod3w1hgwa358"
    },
    {
      "id": "sb4y18l68xze8gfszafmyv3q",
      "address": "9wtGmqMamnKfz49XBwnJASbjcVnnKnT78qKopCL54TAk",
      "chain_type": "solana",
      "policy_ids": [],
      "additional_signers": [],
      "created_at": 1744300912644,
      "owner_id": "lzjb3xnjk2ntod3w1hgwa358"
    }
  ],
  "recovery_user_id": "so6bsadjfi3ihhkyt9hlqv6x"
}

Directly managing user authorization keys via the API is an advanced setting. We recommend using Privy’s SDKs, which internally manage user authorization keys if applicable.

This endpoint creates the requested wallets with the associated signer and recovery accounts. After creation, you can make a request to authenticate with a valid user JWT to obtain a time-bound user authorization key to use to take actions on the user’s wallet.

Authorizations

Authorization
string
header
required

Basic Auth header with your app ID as the username and your app secret as the password.

Headers

privy-app-id
string
required

ID of your Privy app.

Body

application/json

Response

200 - application/json

Object with user and wallet data.

The response is of type object.