Skip to content

Querying a single user

Privy allows you to query an individual user's data with their Privy DID. This includes their DID, the timestamp of when they were created, and all of their linked accounts.

WARNING

Privy rate limits REST API endpoints that you may call from your server. If you suspect your team will require an increased rate limit, please reach out to support!

Using @privy-io/server-auth

Use the PrivyClient's getUser method to get a single user by their Privy DID. As a parameter, pass the user's DID as a string:

typescript
const user = await privy.getUser('did:privy:XXXXXX');

If a matching user is found, the method will return the corresponding User object. If no matching user is found, the method will throw an error.

Using the REST API

Make a GET request to:

bash
https://auth.privy.io/api/v1/users/<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>"

A successful response will include the user object associated with the DID, like below:

json
{
  "id":"did:privy:cfbsvtqo2c22202mo08847jdux2z",
  "created_at":1667165891,
  "linked_accounts":[
    {
      "type": "wallet",
      "address": "0xABCDEFGHIJKL01234567895C5cAe8B9472c14328",
      "chain_type": "ethereum",
      "chain_id": "eip155:137",
      "wallet_client": "unknown",
      "wallet_client_type": "metamask",
      "connector_type": "injected",
      "verified_at": 1688556783
    }
    {
      "type":"email",
      "address":"[email protected]",
      "verified_at":1667350653
    }
  ]
}

If there is no user associated with the provided DID, the API will return an error.