Appearance
Getting a user's delegated wallets
From your server, you can query Privy to determine what wallets have been delegated by a given user to allow your app to take actions on their behalf.
Using @privy-io/server-auth
Use the Privy client's getUser
method to get the user object for your user. As a parameter to this method, pass the user's DID as a string
:
tsx
const user = await client.getUser('did:privy:insert-user-did');
Then, to get a list of the user's delegated wallets, first find all of the user's embedded wallets from the user's linked accounts. Simply filter the user.linkedAccounts
array for wallet entries with walletClientType: 'privy'
:
tsx
// The `WalletWithMetadata` type can be imported from '@privy-io/server-auth'
const embeddedWallets = user.linkedAccounts.filter(
(account): account is WalletWithMetadata =>
account.type === 'wallet' && account.walletClientType === 'privy',
);
Then, filter the array of embedded wallets for entries where the delegated
flag is set to true:
tsx
const delegatedWallets = embeddedWallets.filter((wallet) => wallet.delegated);
This constitutes the user's delegated wallets. Delegated wallets will always have the delegated
flag set to true
.
For wallets included in this array, your app may make requests to Privy to execute actions on Solana or EVM networks on behalf of the user.
Using the REST API
Make a GET
request to:
bash
https://auth.privy.io/api/v1/users/<user-did>
Replace <did>
with your desired Privy DID. It should have the format did:privy:XXXXXX
.
Below is a sample cURL command for this request:
bash
curl --request GET https://auth.privy.io/api/v1/users/<user-did> \
-u "<your-privy-app-id>:<your-privy-app-secret>" \
-H "privy-app-id: <your-privy-app-id>"
Then, to get a list of the user's delegated wallets, inspect the linked_accounts
field of the response body for all entries with the fields type: 'wallet'
and delegated: true
.