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

App secret authentication.

Headers

privy-app-id
string
required

ID of your Privy app.

Body

application/json
wallets
object[]
required
primary_signer
object
required
recovery_user
object
required

Response

200 - application/json
Object with user and wallet data.
wallets
object[]
required

The wallets that were created.

recovery_user_id
string
required

The ID of the created user.