Skip to main content
POST
/
v1
/
users
/
{user_id}
/
custom_metadata
Create Custom Metadata
curl --request POST \
  --url https://api.privy.io/v1/users/{user_id}/custom_metadata \
  --header 'Authorization: Basic <encoded-value>' \
  --header 'Content-Type: application/json' \
  --header 'privy-app-id: <privy-app-id>' \
  --data '
{
  "custom_metadata": {
    "key": "value"
  }
}
'
{
  "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 custom metadata using our SDKs here.

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.

Path Parameters

user_id
string
required

ID of the user.

Body

application/json
custom_metadata
CustomMetadata · object
required

Custom metadata associated with the user.

Response

200 - application/json

User with updated custom metadata.

A Privy user object.

id
string
required
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.

mfa_methods
(SmsMfaMethod · object | TotpMfaMethod · object | PasskeyMfaMethod · object)[]
required

A SMS MFA method.

created_at
number
required

Unix timestamp of when the user was created in milliseconds.

has_accepted_terms
boolean
required

Indicates if the user has accepted the terms of service.

is_guest
boolean
required

Indicates if the user is a guest account user.

custom_metadata
CustomMetadata · object

Custom metadata associated with the user.