Skip to main content
POST
/
v1
/
custodial_wallets
Create custodial wallet
curl --request POST \
  --url https://api.privy.io/v1/custodial_wallets \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'privy-app-id: <privy-app-id>' \
  --data '
{
  "chain_type": "ethereum",
  "provider": "bridge",
  "provider_user_id": "1234567890"
}
'
{
  "id": "id2tptkqrxd39qo9j423etij",
  "address": "0xB00F0759DbeeF5E543Cc3E3B07A6442F5f3928a2",
  "chain_type": "ethereum",
  "provider": "bridge",
  "policy_ids": [],
  "additional_signers": [],
  "owner_id": null
}

Authorizations

Authorization
string
header
required

Basic Auth header with your app ID as the username and your app secret as the password.

Headers

privy-app-id
string
required

ID of your Privy app.

privy-idempotency-key
string

Idempotency keys ensure API requests are executed only once within a 24-hour window.

Body

application/json

The input for creating a custodial wallet.

chain_type
enum<string>
required

The chain type of the custodial wallet.

Available options:
ethereum
provider_user_id
string
required

The resource ID of the beneficiary of the custodial wallet, given by the licensing provider.

Minimum string length: 1
provider
enum<string>
required

The provider of the custodial wallet.

Available options:
bridge
owner
object
additional_signers
object[]
policy_ids
string<cuid2>[]
Maximum array length: 1

Response

200 - application/json

Newly created custodial wallet.

Information about a custodial wallet.

id
string
required
address
string
required
chain_type
enum<string>
required

The chain type of the custodial wallet.

Available options:
ethereum
provider
enum<string>
required

The provider of the custodial wallet.

Available options:
bridge
owner_id
string<cuid2> | null
required
policy_ids
string[]
Required string length: 24
additional_signers
object[]