- Airdrops and rewards: Distribute tokens or NFTs to users before they sign up
- Web2 to web3 migrations: Import existing users from a database and provision wallets for them
- Frictionless onboarding: Allow users to receive assets before creating an account
- Server-side provisioning: Generate wallets programmatically based on off-chain events or criteria
Pregenerating wallets for new users
Create new users with pregenerated wallets in a single operation. This is useful for airdrops, migrations, or any scenario where wallets need to exist before authentication.- NodeJS
- NodeJS (server-auth)
- Java
- REST API
To pregenerate embedded wallets for a new user, use the
create method on the users() interface of the Privy client.Usage
Params and returns
Check out the API reference for more details.Creating wallets for existing users
Add additional embedded wallets to users who already have Privy accounts. This is useful when expanding to support new chains or creating wallets based on in-app actions.- NodeJS
- NodeJS (server-auth)
- REST API
To create embedded wallets for an existing user, use the Check out the API reference for more details.
pregenerateWallets method from the users() interface of the Privy client.Usage
Batch importing users with wallets
Import multiple users with pregenerated wallets in a single batch operation. This is more efficient than creating users individually when provisioning wallets for hundreds or thousands of users at once.- REST API
To batch import multiple users with pregenerated wallets, make a POST request to A successful response will include an array of the newly created users with their wallet addresses:
https://auth.privy.io/api/v1/apps/<your-app-id>/users/import.Usage
Below is a sample cURL command for batch importing users with pregenerated wallets:Parameters
An array of user objects to import. Each object has the following fields:

