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

Response

200 - application/json
Object with user and wallet data.

The response is of type object.