Skip to main content
Accounts represent a grouping of wallets across multiple chain types and custody configurations. You should think of accounts as a single unit of balance; you might consider creating one account for each end user of your application or each customer of your service. When creating an account, you can specify:
  • a display name for the account
  • the account’s wallet configuration, including which wallets the account should contain. For each wallet, you can also specify the wallet’s owner.
Accounts currently support non-custodial EVM wallets, custodial EVM wallets with Bridge, and non-custodial SVM wallets.
View the full API reference for creating an account.

Usage

To create an account via REST API, make a POST request to:
https://api.privy.io/v1/accounts

Body

display_name
string
An optional display name for the account
wallets_configuration
{chain_type: 'ethereum' | 'solana'; custody: CustodyConfiguration | undefined}
required
The wallets to include in the account, specified with their chain type and custody configuration.If custody is undefined, the wallet is non-custodial.The CustodyConfiguration type is defined as {provider: string; provider_user_id: string} where:
  • provider is the custody provider. Currently, 'bridge' is the only supported custody provider.
  • provider_user_id is the custody provider’s unique ID for the KYC’ed entity for the wallet.

Response

The response will include the following fields:
id
string
Unique ID of the created account. This will be the primary identifier when using the account in the future.
display_name
string | undefined
An optional display name for the account.
wallets
{id: string; chain_type: 'ethereum' | 'solana'; address: string; custody: CustodyConfiguration | undefined}
required
The wallets included in the account, with their chain type, address and custody configuration.If custody is undefined, the wallet is non-custodial. If defined, the wallet is custodial per the specified configuration.The CustodyConfiguration type is defined as {provider: string; provider_user_id: string} where:
  • provider is the custody provider.
  • provider_user_id is the custody provider’s unique ID for the KYC’ed entity for the wallet.

Example

Request

curl --request POST https://api.privy.io/v1/accounts \
  -u "your-app-id:your-app-secret" \
  -H "privy-app-id: your-app-id" \
  -H "Content-Type: application/json" \
  -d '{
    "display_name": "<insert-display-name>",
    "wallets_configuration": [
      {
        "chain_type": "ethereum"
      },
      {
        "chain_type": "ethereum",
        "custody": {
          "provider": "bridge",
          "provider_user_id": "<insert-provider-user-id>"
        }
      },
      {
        "chain_type": "solana"
      }
    ]
  }'

Response

{
  "id": "<string>",
  "display_name": "<insert-display-name>",
  "wallets": [
    {
      "id": "<string>",
      "chain_type": "ethereum",
      "address": "<address>"
    },
    {
      "id": "<string>",
      "chain_type": "ethereum",
      "address": "<address>",
      "custody": {
        "provider": "bridge",
        "provider_user_id": "<insert-provider-user-id>"
      }
    },
    {
      "id": "<string>",
      "chain_type": "solana",
      "address": "<address>"
    }
  ]
}