---
title: "Create Embedded Wallet"
method: POST
path: "/v1/users/{user_id}/wallets"
tags: ["Users"]
---

# Create Embedded Wallet

`POST /v1/users/{user_id}/wallets`

Creates an embedded wallet for an existing user.

## Path parameters

- `user_id` string, required — ID of the user.

## Headers

- `privy-app-id` string, required — ID of your Privy app.

## Request body

- object
  - `wallets` WalletCreationInput[], required
    - `additional_signers` WalletCreationAdditionalSignerItem[] — Additional signers for the wallet.
      - `override_policy_ids` string[] — The array of policy IDs that will be applied to wallet requests. If specified, this will override the base policy IDs set on the wallet. Currently, only one policy is supported per signer.
      - `signer_id` string, cuid2, required — The key quorum ID for the signer.
    - `chain_type` 'ethereum' | 'solana' | 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet' | 'spark', required — The wallet chain types.
    - `create_smart_wallet` boolean — Create a smart wallet with this wallet as the signer. Only supported for wallets with `chain_type: "ethereum"`.
    - `external_id` string — A customer-provided identifier for mapping to external systems. Write-once, set only at creation. Must be alphanumeric, hyphens, or underscores, max 64 characters.
    - `policy_ids` string[] — Policy IDs to enforce on the wallet. Currently, only one policy is supported per wallet.

## Response `200`

Object with user data.

- User — A Privy user object.
  - `created_at` number, required — Unix timestamp of when the user was created in seconds.
  - `custom_metadata` CustomMetadata — Custom metadata associated with the user.
  - `has_accepted_terms` boolean, required — Indicates if the user has accepted the terms of service.
  - `id` string, required
  - `is_guest` boolean, required — Indicates if the user is a guest account user.
  - `linked_accounts` LinkedAccount[], required
    - union — A linked account for the user.
      - object — An email account linked to the user.
        - `address` string, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `type` 'email', required
        - `verified_at` number, required
      - object — A phone number account linked to the user.
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `number` string
        - `phoneNumber` string, required
        - `type` 'phone', required
        - `verified_at` number, required
      - object — An Ethereum wallet account linked to the user.
        - `address` string, required
        - `chain_id` string
        - `chain_type` 'ethereum', required
        - `connector_type` string
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `type` 'wallet', required
        - `verified_at` number, required
        - `wallet_client` 'unknown', required
        - `wallet_client_type` string
      - object — A Solana wallet account linked to the user.
        - `address` string, required
        - `chain_type` 'solana', required
        - `connector_type` string
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `type` 'wallet', required
        - `verified_at` number, required
        - `wallet_client` 'unknown', required
        - `wallet_client_type` string
      - object — A smart wallet account linked to the user.
        - `address` string, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `smart_wallet_type` 'safe' | 'kernel' | 'light_account' | 'biconomy' | 'coinbase_smart_wallet' | 'thirdweb' | 'nexus', required — The supported smart wallet providers.
        - `smart_wallet_version` string
        - `type` 'smart_wallet', required
        - `verified_at` number, required
      - object — An Ethereum embedded wallet account linked to the user.
        - `address` string, required
        - `chain_id` string, required
        - `chain_type` 'ethereum', required
        - `connector_type` 'embedded', required
        - `delegated` boolean, required
        - `first_verified_at` number, nullable, required
        - `id` string, nullable, required
        - `imported` boolean, required
        - `latest_verified_at` number, nullable, required
        - `recovery_method` 'privy' | 'user-passcode' | 'google-drive' | 'icloud' | 'recovery-encryption-key' | 'privy-v2', required — The method used to recover an embedded wallet account.
        - `type` 'wallet', required
        - `verified_at` number, required
        - `wallet_client` 'privy', required
        - `wallet_client_type` 'privy', required
        - `wallet_index` number, required
      - object — A Solana embedded wallet account linked to the user.
        - `address` string, required
        - `chain_id` string, required
        - `chain_type` 'solana', required
        - `connector_type` 'embedded', required
        - `delegated` boolean, required
        - `first_verified_at` number, nullable, required
        - `id` string, nullable, required
        - `imported` boolean, required
        - `latest_verified_at` number, nullable, required
        - `public_key` string, required
        - `recovery_method` 'privy' | 'user-passcode' | 'google-drive' | 'icloud' | 'recovery-encryption-key' | 'privy-v2', required — The method used to recover an embedded wallet account.
        - `type` 'wallet', required
        - `verified_at` number, required
        - `wallet_client` 'privy', required
        - `wallet_client_type` 'privy', required
        - `wallet_index` number, required
      - object — A Bitcoin SegWit embedded wallet account linked to the user.
        - `address` string, required
        - `chain_id` string, required
        - `chain_type` 'bitcoin-segwit', required
        - `connector_type` 'embedded', required
        - `delegated` boolean, required
        - `first_verified_at` number, nullable, required
        - `id` string, nullable, required
        - `imported` boolean, required
        - `latest_verified_at` number, nullable, required
        - `public_key` string, required
        - `recovery_method` 'privy' | 'user-passcode' | 'google-drive' | 'icloud' | 'recovery-encryption-key' | 'privy-v2', required — The method used to recover an embedded wallet account.
        - `type` 'wallet', required
        - `verified_at` number, required
        - `wallet_client` 'privy', required
        - `wallet_client_type` 'privy', required
        - `wallet_index` number, required
      - object — A Bitcoin Taproot embedded wallet account linked to the user.
        - `address` string, required
        - `chain_id` string, required
        - `chain_type` 'bitcoin-taproot', required
        - `connector_type` 'embedded', required
        - `delegated` boolean, required
        - `first_verified_at` number, nullable, required
        - `id` string, nullable, required
        - `imported` boolean, required
        - `latest_verified_at` number, nullable, required
        - `public_key` string, required
        - `recovery_method` 'privy' | 'user-passcode' | 'google-drive' | 'icloud' | 'recovery-encryption-key' | 'privy-v2', required — The method used to recover an embedded wallet account.
        - `type` 'wallet', required
        - `verified_at` number, required
        - `wallet_client` 'privy', required
        - `wallet_client_type` 'privy', required
        - `wallet_index` number, required
      - object — A curve signing embedded wallet account linked to the user.
        - `address` string, required
        - `chain_id` string, required
        - `chain_type` 'cosmos' | 'stellar' | 'sui' | 'aptos' | 'movement' | 'tron' | 'bitcoin-segwit' | 'bitcoin-taproot' | 'pearl' | 'near' | 'ton' | 'starknet', required — The wallet chain types that support curve-based signing.
        - `connector_type` 'embedded', required
        - `delegated` boolean, required
        - `first_verified_at` number, nullable, required
        - `id` string, nullable, required
        - `imported` boolean, required
        - `latest_verified_at` number, nullable, required
        - `public_key` string, required
        - `recovery_method` 'privy' | 'user-passcode' | 'google-drive' | 'icloud' | 'recovery-encryption-key' | 'privy-v2', required — The method used to recover an embedded wallet account.
        - `type` 'wallet', required
        - `verified_at` number, required
        - `wallet_client` 'privy', required
        - `wallet_client_type` 'privy', required
        - `wallet_index` number, required
      - object — A Google OAuth account linked to the user.
        - `email` string, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `name` string, nullable, required
        - `subject` string, required
        - `type` 'google_oauth', required
        - `verified_at` number, required
      - object — A Twitter OAuth account linked to the user.
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `name` string, nullable, required
        - `profile_picture_url` string, nullable, required
        - `subject` string, required
        - `type` 'twitter_oauth', required
        - `username` string, nullable, required
        - `verified_at` number, required
      - object — A Discord OAuth account linked to the user.
        - `email` string, nullable, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `subject` string, required
        - `type` 'discord_oauth', required
        - `username` string, nullable, required
        - `verified_at` number, required
      - object — A GitHub OAuth account linked to the user.
        - `email` string, nullable, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `name` string, nullable, required
        - `subject` string, required
        - `type` 'github_oauth', required
        - `username` string, nullable, required
        - `verified_at` number, required
      - object — A Spotify OAuth account linked to the user.
        - `email` string, nullable, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `name` string, nullable, required
        - `subject` string, required
        - `type` 'spotify_oauth', required
        - `verified_at` number, required
      - object — An Instagram OAuth account linked to the user.
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `subject` string, required
        - `type` 'instagram_oauth', required
        - `username` string, nullable, required
        - `verified_at` number, required
      - object — A TikTok OAuth account linked to the user.
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `name` string, nullable, required
        - `subject` string, required
        - `type` 'tiktok_oauth', required
        - `username` string, nullable, required
        - `verified_at` number, required
      - object — A LINE OAuth account linked to the user.
        - `email` string, nullable, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `name` string, nullable, required
        - `profile_picture_url` string, nullable, required
        - `subject` string, required
        - `type` 'line_oauth', required
        - `verified_at` number, required
      - object — A Twitch OAuth account linked to the user.
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `subject` string, required
        - `type` 'twitch_oauth', required
        - `username` string, nullable, required
        - `verified_at` number, required
      - object — A LinkedIn OAuth account linked to the user.
        - `email` string, nullable, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `name` string
        - `subject` string, required
        - `type` 'linkedin_oauth', required
        - `vanity_name` string
        - `verified_at` number, required
      - object — An Apple OAuth account linked to the user.
        - `email` string, nullable, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `subject` string, required
        - `type` 'apple_oauth', required
        - `verified_at` number, required
      - object — A custom OAuth account linked to the user.
        - `email` string
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `name` string
        - `profile_picture_url` string
        - `subject` string, required
        - `type` string, required — The ID of a custom OAuth provider, set up for this app. Must start with "custom:".
        - `username` string
        - `verified_at` number, required
      - object — A custom JWT account linked to the user.
        - `custom_user_id` string, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `type` 'custom_auth', required
        - `verified_at` number, required
      - object — A Farcaster account linked to the user.
        - `bio` string
        - `display_name` string
        - `fid` number, required
        - `first_verified_at` number, nullable, required
        - `homepage_url` string
        - `latest_verified_at` number, nullable, required
        - `owner_address` string, required
        - `profile_picture` string
        - `profile_picture_url` string
        - `signer_public_key` string
        - `type` 'farcaster', required
        - `username` string
        - `verified_at` number, required
      - object — A passkey account linked to the user.
        - `authenticator_name` string
        - `created_with_browser` string
        - `created_with_device` string
        - `created_with_os` string
        - `credential_id` string, required
        - `enrolled_in_mfa` boolean, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `public_key` string
        - `type` 'passkey', required
        - `verified_at` number, required
      - object — A Telegram account linked to the user.
        - `first_name` string, nullable
        - `first_verified_at` number, nullable, required
        - `last_name` string, nullable
        - `latest_verified_at` number, nullable, required
        - `photo_url` string, nullable
        - `telegram_user_id` string, required
        - `type` 'telegram', required
        - `username` string, nullable
        - `verified_at` number, required
      - object — A cross-app account linked to the user.
        - `embedded_wallets` CrossAppEmbeddedWallet[], required
          - `address` string, required
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `provider_app_id` string, required
        - `smart_wallets` CrossAppSmartWallet[], required
          - `address` string, required
        - `subject` string, required
        - `type` 'cross_app', required
        - `verified_at` number, required
      - object — An authorization key linked to the user.
        - `first_verified_at` number, nullable, required
        - `latest_verified_at` number, nullable, required
        - `public_key` string, required
        - `type` 'authorization_key', required
        - `verified_at` number, required
  - `mfa_methods` LinkedMfaMethod[], required
    - union — A multi-factor authentication method linked to the user.
      - object — A SMS MFA method.
        - `type` 'sms', required
        - `verified_at` number, required
      - object — A TOTP MFA method.
        - `type` 'totp', required
        - `verified_at` number, required
      - object — A Passkey MFA method.
        - `type` 'passkey', required
        - `verified_at` number, required

---

[API](https://skmtc.net/privy-io/apis/privy-api.md) · [All operations](https://skmtc.net/privy-io/apis/privy-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/privy-io/privy-api/versions/bb2eb34156cc/schema)
