Skip to Content
Clerk logo

Clerk Docs

Ctrl + K
Go to


Updates the metadata associated with the specified user.

function updateUserMetadata: (userId: string, params: UpdateUserMetadataParams) => Promise<User>;


userIdstringThe ID of the organization to update.
publicMetadata?Record<string, unknown>Metadata saved on the organization, that is visible to both your Frontend and Backend APIs.
privateMetadata?Record<string, unknown>Metadata saved on the organization that is only visible to your Backend API.

updateUserMetadata() example

In this example, you can see that the returned User object has its publicMetadata property updated with the new metadata provided.

const userId = 'user_2bxfCJOe0Ocd8DNe9hFN3EXvfOu'; const response = await clerkClient.users.updateUserMetadata(userId, { publicMetadata:{ "example": "metadata" } }); console.log(response); /* _User { id: 'user_2cSSCzV7948rhPJMsY601tXsEU4', passwordEnabled: true, totpEnabled: false, backupCodeEnabled: false, twoFactorEnabled: false, banned: false, createdAt: 1708103362688, updatedAt: 1708103702285, imageUrl: '', hasImage: false, primaryEmailAddressId: 'idn_2cSSCuFhU35F5u5Labwtmj7xU6B', primaryPhoneNumberId: null, primaryWeb3WalletId: null, lastSignInAt: null, externalId: null, username: null, firstName: 'Test', lastName: 'User', publicMetadata: { example: 'metadata' }, privateMetadata: {}, unsafeMetadata: {}, emailAddresses: [ _EmailAddress { id: 'idn_2cSSCuFhU35F5u5Labwtmj7xU6B', emailAddress: '', verification: [_Verification], linkedTo: [] } ], phoneNumbers: [], web3Wallets: [], externalAccounts: [], lastActiveAt: null, createOrganizationEnabled: true } */

Backend API (BAPI) endpoint

This method in the SDK is a wrapper around the BAPI endpoint PATCH/users/{user_id}/metadata. See the BAPI reference(opens in a new tab) for more details.

Last updated on March 7, 2024

What did you think of this content?

Clerk © 2024