Lookup User by wallet address
curl --request POST \
--url https://api.privy.io/v1/users/wallet/address \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '
{
"address": "<string>"
}
'HttpResponse<String> response = Unirest.post("https://api.privy.io/v1/users/wallet/address")
.header("privy-app-id", "<privy-app-id>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"address\": \"<string>\"\n}")
.asString();const options = {
method: 'POST',
headers: {
'privy-app-id': '<privy-app-id>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({address: '<string>'})
};
fetch('https://api.privy.io/v1/users/wallet/address', 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/wallet/address",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'address' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.privy.io/v1/users/wallet/address"
payload := strings.NewReader("{\n \"address\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("privy-app-id", "<privy-app-id>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
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 wallet address
Looks up a user by their wallet address.
POST
/
v1
/
users
/
wallet
/
address
Lookup User by wallet address
curl --request POST \
--url https://api.privy.io/v1/users/wallet/address \
--header 'Authorization: Basic <encoded-value>' \
--header 'Content-Type: application/json' \
--header 'privy-app-id: <privy-app-id>' \
--data '
{
"address": "<string>"
}
'HttpResponse<String> response = Unirest.post("https://api.privy.io/v1/users/wallet/address")
.header("privy-app-id", "<privy-app-id>")
.header("Authorization", "Basic <encoded-value>")
.header("Content-Type", "application/json")
.body("{\n \"address\": \"<string>\"\n}")
.asString();const options = {
method: 'POST',
headers: {
'privy-app-id': '<privy-app-id>',
Authorization: 'Basic <encoded-value>',
'Content-Type': 'application/json'
},
body: JSON.stringify({address: '<string>'})
};
fetch('https://api.privy.io/v1/users/wallet/address', 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/wallet/address",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "POST",
CURLOPT_POSTFIELDS => json_encode([
'address' => '<string>'
]),
CURLOPT_HTTPHEADER => [
"Authorization: Basic <encoded-value>",
"Content-Type: application/json",
"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"
"strings"
"net/http"
"io"
)
func main() {
url := "https://api.privy.io/v1/users/wallet/address"
payload := strings.NewReader("{\n \"address\": \"<string>\"\n}")
req, _ := http.NewRequest("POST", url, payload)
req.Header.Add("privy-app-id", "<privy-app-id>")
req.Header.Add("Authorization", "Basic <encoded-value>")
req.Header.Add("Content-Type", "application/json")
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
}Authorizations
Basic Auth header with your app ID as the username and your app secret as the password.
Headers
ID of your Privy app.
Body
application/json
Response
200 - application/json
Object with 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?

