Get User
curl --request GET \
--url https://api.privy.io/v1/users/{user_id} \
--header 'Authorization: Basic <encoded-value>' \
--header 'privy-app-id: <privy-app-id>'HttpResponse<String> response = Unirest.get("https://api.privy.io/v1/users/{user_id}")
.header("privy-app-id", "<privy-app-id>")
.header("Authorization", "Basic <encoded-value>")
.asString();const options = {
method: 'GET',
headers: {'privy-app-id': '<privy-app-id>', Authorization: 'Basic <encoded-value>'}
};
fetch('https://api.privy.io/v1/users/{user_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.privy.io/v1/users/{user_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"privy-app-id: <privy-app-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.privy.io/v1/users/{user_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("privy-app-id", "<privy-app-id>")
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "did:privy:cm3np4u9j001rc8b73seqmqqk",
"created_at": 1731974895,
"linked_accounts": [
{
"address": "[email protected]",
"type": "email",
"first_verified_at": 1674788927,
"latest_verified_at": 1674788927,
"verified_at": 1674788927
},
{
"type": "farcaster",
"fid": 4423,
"owner_address": "0xE6bFb4137F3A8C069F98cc775f324A84FE45FdFF",
"username": "payton",
"display_name": "payton ↑",
"bio": "engineering at /privy. building pixelpool.xyz, the first Farcaster video client. nyc. 👨💻🍎🏳️🌈 nf.td/payton",
"profile_picture": "https://supercast.mypinata.cloud/ipfs/QmNexfCxdnFzWdJqKVgrjd27UGLMexNaw5FXu1XKR3cQF7?filename=IMG_2799.png",
"profile_picture_url": "https://supercast.mypinata.cloud/ipfs/QmNexfCxdnFzWdJqKVgrjd27UGLMexNaw5FXu1XKR3cQF7?filename=IMG_2799.png",
"verified_at": 1740678402,
"first_verified_at": 1740678402,
"latest_verified_at": 1741194370
},
{
"type": "passkey",
"credential_id": "Il5vP-3Tm3hNmDVBmDlREgXzIOJnZEaiVnT-XMliXe-BufP9GL1-d3qhozk9IkZwQ_",
"authenticator_name": "1Password",
"public_key": "pQECAyYgASFYIKdGwx5XxZ/7CJJzT8d5L6jyLNQdTH7X+rSZdPJ9Ux/QIlggRm4OcJ8F3aB5zYz3T9LxLdDfGpWvYkHgS4A8tPz9CqE=",
"created_with_browser": "Chrome",
"created_with_os": "Mac OS",
"created_with_device": "Macintosh",
"enrolled_in_mfa": true,
"verified_at": 1741194420,
"first_verified_at": 1741194420,
"latest_verified_at": 1741194420
}
],
"mfa_methods": [
{
"type": "passkey",
"verified_at": 1741194420
}
],
"has_accepted_terms": true,
"is_guest": false
}Get user
Get user by ID
Get a user by user ID.
GET
/
v1
/
users
/
{user_id}
Get User
curl --request GET \
--url https://api.privy.io/v1/users/{user_id} \
--header 'Authorization: Basic <encoded-value>' \
--header 'privy-app-id: <privy-app-id>'HttpResponse<String> response = Unirest.get("https://api.privy.io/v1/users/{user_id}")
.header("privy-app-id", "<privy-app-id>")
.header("Authorization", "Basic <encoded-value>")
.asString();const options = {
method: 'GET',
headers: {'privy-app-id': '<privy-app-id>', Authorization: 'Basic <encoded-value>'}
};
fetch('https://api.privy.io/v1/users/{user_id}', options)
.then(res => res.json())
.then(res => console.log(res))
.catch(err => console.error(err));<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.privy.io/v1/users/{user_id}",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"privy-app-id: <privy-app-id>"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}package main
import (
"fmt"
"net/http"
"io"
)
func main() {
url := "https://api.privy.io/v1/users/{user_id}"
req, _ := http.NewRequest("GET", url, nil)
req.Header.Add("privy-app-id", "<privy-app-id>")
req.Header.Add("Authorization", "Basic <encoded-value>")
res, _ := http.DefaultClient.Do(req)
defer res.Body.Close()
body, _ := io.ReadAll(res.Body)
fmt.Println(string(body))
}{
"id": "did:privy:cm3np4u9j001rc8b73seqmqqk",
"created_at": 1731974895,
"linked_accounts": [
{
"address": "[email protected]",
"type": "email",
"first_verified_at": 1674788927,
"latest_verified_at": 1674788927,
"verified_at": 1674788927
},
{
"type": "farcaster",
"fid": 4423,
"owner_address": "0xE6bFb4137F3A8C069F98cc775f324A84FE45FdFF",
"username": "payton",
"display_name": "payton ↑",
"bio": "engineering at /privy. building pixelpool.xyz, the first Farcaster video client. nyc. 👨💻🍎🏳️🌈 nf.td/payton",
"profile_picture": "https://supercast.mypinata.cloud/ipfs/QmNexfCxdnFzWdJqKVgrjd27UGLMexNaw5FXu1XKR3cQF7?filename=IMG_2799.png",
"profile_picture_url": "https://supercast.mypinata.cloud/ipfs/QmNexfCxdnFzWdJqKVgrjd27UGLMexNaw5FXu1XKR3cQF7?filename=IMG_2799.png",
"verified_at": 1740678402,
"first_verified_at": 1740678402,
"latest_verified_at": 1741194370
},
{
"type": "passkey",
"credential_id": "Il5vP-3Tm3hNmDVBmDlREgXzIOJnZEaiVnT-XMliXe-BufP9GL1-d3qhozk9IkZwQ_",
"authenticator_name": "1Password",
"public_key": "pQECAyYgASFYIKdGwx5XxZ/7CJJzT8d5L6jyLNQdTH7X+rSZdPJ9Ux/QIlggRm4OcJ8F3aB5zYz3T9LxLdDfGpWvYkHgS4A8tPz9CqE=",
"created_with_browser": "Chrome",
"created_with_os": "Mac OS",
"created_with_device": "Macintosh",
"enrolled_in_mfa": true,
"verified_at": 1741194420,
"first_verified_at": 1741194420,
"latest_verified_at": 1741194420
}
],
"mfa_methods": [
{
"type": "passkey",
"verified_at": 1741194420
}
],
"has_accepted_terms": true,
"is_guest": false
}SDK methods
Learn more about querying users using our SDKs here.This endpoint is heavily rate limited. If you’re looking to get information about an authenticated
user, consider using identity tokens as a more efficient
way to access user data.
Authorizations
Basic Auth header with your app ID as the username and your app secret as the password.
Headers
ID of your Privy app.
Path Parameters
User ID
Response
200 - application/json
Requested user data.
A Privy user object.
linked_accounts
(LinkedAccountEmail · object | LinkedAccountPhone · object | LinkedAccountEthereum · object | LinkedAccountSolana · object | LinkedAccountSmartWallet · object | LinkedAccountEthereumEmbeddedWallet · object | LinkedAccountSolanaEmbeddedWallet · object | LinkedAccountBitcoinSegwitEmbeddedWallet · object | LinkedAccountBitcoinTaprootEmbeddedWallet · object | LinkedAccountCurveSigningEmbeddedWallet · object | LinkedAccountGoogleOauth · object | LinkedAccountTwitterOauth · object | LinkedAccountDiscordOauth · object | LinkedAccountGithubOauth · object | LinkedAccountSpotifyOauth · object | LinkedAccountInstagramOauth · object | LinkedAccountTiktokOauth · object | LinkedAccountLineOauth · object | LinkedAccountTwitchOauth · object | LinkedAccountLinkedInOauth · object | LinkedAccountAppleOauth · object | LinkedAccountCustomOauth · object | LinkedAccountCustomJwt · object | LinkedAccountFarcaster · object | LinkedAccountPasskey · object | LinkedAccountTelegram · object | LinkedAccountCrossApp · object | LinkedAccountAuthorizationKey · object)[]
required
An email account linked to the user.
- LinkedAccountEmail
- LinkedAccountPhone
- LinkedAccountEthereum
- LinkedAccountSolana
- LinkedAccountSmartWallet
- LinkedAccountEthereumEmbeddedWallet
- LinkedAccountSolanaEmbeddedWallet
- LinkedAccountBitcoinSegwitEmbeddedWallet
- LinkedAccountBitcoinTaprootEmbeddedWallet
- LinkedAccountCurveSigningEmbeddedWallet
- LinkedAccountGoogleOauth
- LinkedAccountTwitterOauth
- LinkedAccountDiscordOauth
- LinkedAccountGithubOauth
- LinkedAccountSpotifyOauth
- LinkedAccountInstagramOauth
- LinkedAccountTiktokOauth
- LinkedAccountLineOauth
- LinkedAccountTwitchOauth
- LinkedAccountLinkedInOauth
- LinkedAccountAppleOauth
- LinkedAccountCustomOauth
- LinkedAccountCustomJwt
- LinkedAccountFarcaster
- LinkedAccountPasskey
- LinkedAccountTelegram
- LinkedAccountCrossApp
- LinkedAccountAuthorizationKey
Show child attributes
Show child attributes
mfa_methods
(SmsMfaMethod · object | TotpMfaMethod · object | PasskeyMfaMethod · object | EmailMfaMethod · object)[]
required
A SMS MFA method.
- SmsMfaMethod
- TotpMfaMethod
- PasskeyMfaMethod
- EmailMfaMethod
Show child attributes
Show child attributes
Unix timestamp of when the user was created in seconds.
Indicates if the user has accepted the terms of service.
Indicates if the user is a guest account user.
Custom metadata associated with the user.
Show child attributes
Show child attributes
Was this page helpful?

