Clerk

App · Compliance & Security · 20 actions

Manage Clerk users, organizations, memberships and invitations with a Clerk secret key.

Actions

ActionWhat it does
Add a member to a Clerk organizationAdd an existing user to an organization with a role.
Add an email address to a Clerk userAttach another email address to an existing user.
Ban a Clerk userBan a user: they are signed out of every session and cannot sign in again until unbanned.
Count Clerk usersCount the users in the instance, optionally narrowed by the same search filters as List users.
Create a Clerk invitationInvite an email address to sign up.
Create a Clerk organizationCreate an organization.
Create a Clerk userCreate a user directly, without a sign-up flow.
Delete a Clerk organizationDelete an organization and every membership in it.
Delete a Clerk userDelete a user permanently.
Get a Clerk organizationFetch one organization by its id or its slug.
Get a Clerk userFetch one user by id, with their email addresses.
List Clerk organization membersList an organization's members, optionally filtered to one role.
List Clerk organizationsList the instance's organizations, newest first.
List Clerk usersList users in the Clerk instance, with optional search, created-date and banned filters.
Remove a Clerk email addressRemove an email address from the user it belongs to.
Revoke a Clerk invitationRevoke a pending invitation so its link stops working.
Unban a Clerk userLift a ban so the user can sign in again.
Update a Clerk organizationChange an organization's name, slug or member cap.
Update a Clerk userChange a user's profile fields.
Update Clerk user metadataMerge metadata into a user.

Add a member to a Clerk organization

Add an existing user to an organization with a role. The user must already exist in the instance.

Inputs

Organization IDorganization_idtextRequired
The organization, as an org_... id.
User IDuser_idtextRequired
The user to add to the organization.
RoleroletextRequired
The role key to give them, such as org:member. Pick from the instance's roles or type one.

Outputs

created_atnumber
idtext
objecttext
organizationobject
permissionslist
private_metadataobject
public_metadataobject
public_user_dataobject
roletext
role_nametext
updated_atnumber
Example output
{
  "created_at": 1772452500000,
  "id": "orgmem_2c8VwKtOsNgQzUzW7pBeKvDhZmI",
  "object": "organization_membership",
  "organization": {
    "admin_delete_enabled": true,
    "created_at": 1772452400000,
    "created_by": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
    "has_image": false,
    "id": "org_2c8VwJsNrMfPzTzV6oAdJuCgYlH",
    "image_url": "https://img.clerk.com/org-preview.png",
    "max_allowed_memberships": 5,
    "members_count": 1,
    "name": "Avery Consulting",
    "object": "organization",
    "pending_invitations_count": 0,
    "private_metadata": {},
    "public_metadata": {},
    "slug": "avery-consulting",
    "updated_at": 1772452400000
  },
  "permissions": [
    "org:sys_profile:read"
  ],
  "private_metadata": {},
  "public_metadata": {},
  "public_user_data": {
    "first_name": "Jordan",
    "has_image": false,
    "identifier": "jordan.avery@example.com",
    "image_url": "https://img.clerk.com/preview.png",
    "last_name": "Avery",
    "user_id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF"
  },
  "role": "org:member",
  "role_name": "Member",
  "updated_at": 1772452500000
}

Add an email address to a Clerk user

Attach another email address to an existing user. Created verified unless you say otherwise.

Inputs

User IDuser_idtextRequired
The user to add the address to.
Email addressemail_addresstextRequired
The address to add.
Verifiedverifiedtrue/false
On by default. Switch off to add an address the user must confirm themselves.Default: true.
Make primaryprimarytrue/false
Make this the user's primary address.

Outputs

created_atnumber
email_addresstext
idtext
linked_tolist
objecttext
reservedtrue/false
updated_atnumber
verificationobject
Example output
{
  "created_at": 1772452600000,
  "email_address": "jordan.work@example.com",
  "id": "idn_2c8VwMvQuPiSzWzY9rDgMxFjBoK",
  "linked_to": [],
  "object": "email_address",
  "reserved": false,
  "updated_at": 1772452600000,
  "verification": {
    "status": "verified",
    "strategy": "admin"
  }
}

Ban a Clerk user

Ban a user: they are signed out of every session and cannot sign in again until unbanned.

Inputs

User IDuser_idtextRequired
The Clerk user, as a user_... id or a Dashboard URL.

Outputs

bannedtrue/false
created_atnumber
email_addresseslist
external_idtext
first_nametext
has_imagetrue/false
idtext
image_urltext
last_active_atnumber
last_nametext
last_sign_in_atnumber
lockedtrue/false
objecttext
password_enabledtrue/false
primary_email_address_idtext
private_metadataobject
public_metadataobject
two_factor_enabledtrue/false
unsafe_metadataobject
updated_atnumber
usernametext
Example output
{
  "banned": true,
  "created_at": 1772452353000,
  "email_addresses": [
    {
      "created_at": 1772452353000,
      "email_address": "jordan.avery@example.com",
      "id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
      "linked_to": [],
      "object": "email_address",
      "reserved": false,
      "updated_at": 1772452353000,
      "verification": {
        "status": "verified",
        "strategy": "admin"
      }
    }
  ],
  "external_id": null,
  "first_name": "Jordan",
  "has_image": false,
  "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "image_url": "https://img.clerk.com/preview.png",
  "last_active_at": null,
  "last_name": "Avery",
  "last_sign_in_at": null,
  "locked": false,
  "object": "user",
  "password_enabled": false,
  "primary_email_address_id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
  "private_metadata": {},
  "public_metadata": {
    "plan": "starter"
  },
  "two_factor_enabled": false,
  "unsafe_metadata": {},
  "updated_at": 1772452353000,
  "username": "jordan.avery"
}

Count Clerk users

Count the users in the instance, optionally narrowed by the same search filters as List users. This is the only endpoint that reports a total: the user list does not.

Inputs

Searchquerytext
Count only users matching this text. Leave blank to count everyone.
Email addressemail_addresstext
Count only the user with this exact address.

Outputs

objecttext
total_countnumber
Example output
{
  "object": "total_count",
  "total_count": 42
}

Create a Clerk invitation

Invite an email address to sign up. The returned record carries the invitation link whether or not Clerk emails it.

Inputs

Email addressemail_addresstextRequired
Who to invite.
Redirect URLredirect_urltext
Where the invitation link sends them, usually your sign-up page.
Expires in (days)expires_in_daysnumber
How long the invitation stays valid. Clerk's default is 30 days.From 1 to 365.
Send the emailnotifytrue/false
Let Clerk email the invitation. Switch off to deliver the returned link yourself.
Ignore existingignore_existingtrue/false
Do not fail if this address already has a pending invitation.
Public metadatapublic_metadataobject
Carried onto the user created from this invitation.

Outputs

created_atnumber
email_addresstext
expires_atnumber
idtext
objecttext
public_metadataobject
revokedtrue/false
statustext
updated_atnumber
urltext
Example output
{
  "created_at": 1772452353000,
  "email_address": "newcomer@example.com",
  "expires_at": 1775044353000,
  "id": "inv_2c8VwLuPtOhRzVzX8qCfLwEiAnJ",
  "object": "invitation",
  "public_metadata": {},
  "revoked": false,
  "status": "pending",
  "updated_at": 1772452353000,
  "url": "https://accounts.example.com/sign-up?__clerk_ticket=abc123"
}

Create a Clerk organization

Create an organization. Naming a creator makes that user its first administrator.

Inputs

NamenametextRequired
The organization's display name.
Slugslugtext
URL-friendly identifier, unique in the instance. Capitals, spaces and underscores are converted for you, so a value carried in from an earlier step is accepted as-is. Leave blank unless you need one: organization slugs are a Clerk instance setting of their own, and sending one to an instance that has them switched off fails.
Created by (user ID)created_bytext
A user_... id. That user becomes the organization's administrator. Leave blank to create it with no members.
Maximum membersmax_allowed_membershipsnumber
Cap on members. Your Clerk plan's own cap still applies.At least 1.
Public metadatapublic_metadataobject
Readable by the frontend.
Private metadataprivate_metadataobject
Readable only by your backend.

Outputs

admin_delete_enabledtrue/false
created_atnumber
created_bytext
has_imagetrue/false
idtext
image_urltext
max_allowed_membershipsnumber
members_countnumber
nametext
objecttext
pending_invitations_countnumber
private_metadataobject
public_metadataobject
slugtext
updated_atnumber
Example output
{
  "admin_delete_enabled": true,
  "created_at": 1772452400000,
  "created_by": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "has_image": false,
  "id": "org_2c8VwJsNrMfPzTzV6oAdJuCgYlH",
  "image_url": "https://img.clerk.com/org-preview.png",
  "max_allowed_memberships": 5,
  "members_count": 1,
  "name": "Avery Consulting",
  "object": "organization",
  "pending_invitations_count": 0,
  "private_metadata": {},
  "public_metadata": {},
  "slug": "avery-consulting",
  "updated_at": 1772452400000
}

Create a Clerk user

Create a user directly, without a sign-up flow. The email address is created already verified.

Inputs

Email addressemail_addresstext
The user's email address.
First namefirst_nametext
Given name.
Last namelast_nametext
Family name.
Usernameusernametext
Only usable if usernames are enabled for the instance.
Passwordpasswordtext
Optional. Clerk rejects passwords found in known breach lists. Leave blank to create a user who signs in by link or OAuth instead.
External IDexternal_idtext
Your own system's id for this user.
Public metadatapublic_metadataobject
Readable by the frontend and by the user.
Private metadataprivate_metadataobject
Readable only by your backend.

Outputs

bannedtrue/false
created_atnumber
email_addresseslist
external_idtext
first_nametext
has_imagetrue/false
idtext
image_urltext
last_active_atnumber
last_nametext
last_sign_in_atnumber
lockedtrue/false
objecttext
password_enabledtrue/false
primary_email_address_idtext
private_metadataobject
public_metadataobject
two_factor_enabledtrue/false
unsafe_metadataobject
updated_atnumber
usernametext
Example output
{
  "banned": false,
  "created_at": 1772452353000,
  "email_addresses": [
    {
      "created_at": 1772452353000,
      "email_address": "jordan.avery@example.com",
      "id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
      "linked_to": [],
      "object": "email_address",
      "reserved": false,
      "updated_at": 1772452353000,
      "verification": {
        "status": "verified",
        "strategy": "admin"
      }
    }
  ],
  "external_id": null,
  "first_name": "Jordan",
  "has_image": false,
  "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "image_url": "https://img.clerk.com/preview.png",
  "last_active_at": null,
  "last_name": "Avery",
  "last_sign_in_at": null,
  "locked": false,
  "object": "user",
  "password_enabled": false,
  "primary_email_address_id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
  "private_metadata": {},
  "public_metadata": {
    "plan": "starter"
  },
  "two_factor_enabled": false,
  "unsafe_metadata": {},
  "updated_at": 1772452353000,
  "username": "jordan.avery"
}

Delete a Clerk organization

Delete an organization and every membership in it. Clerk keeps no restorable copy.

Inputs

Organization IDorganization_idtextRequired
The organization, as an org_... id.

Outputs

deletedtrue/false
idtext
objecttext
slugtext
Example output
{
  "deleted": true,
  "id": "org_2c8VwJsNrMfPzTzV6oAdJuCgYlH",
  "object": "organization",
  "slug": "avery-consulting"
}

Delete a Clerk user

Delete a user permanently. Clerk keeps no restorable copy.

Inputs

User IDuser_idtextRequired
The Clerk user, as a user_... id or a Dashboard URL.

Outputs

deletedtrue/false
idtext
objecttext
slugtext
Example output
{
  "deleted": true,
  "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "object": "user"
}

Get a Clerk organization

Fetch one organization by its id or its slug.

Inputs

Organization IDorganization_idtextRequired
The organization, as an org_... id or its slug.
Include member countinclude_members_counttrue/false
Ask Clerk to fill in members_count.

Outputs

admin_delete_enabledtrue/false
created_atnumber
created_bytext
has_imagetrue/false
idtext
image_urltext
max_allowed_membershipsnumber
members_countnumber
nametext
objecttext
pending_invitations_countnumber
private_metadataobject
public_metadataobject
slugtext
updated_atnumber
Example output
{
  "admin_delete_enabled": true,
  "created_at": 1772452400000,
  "created_by": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "has_image": false,
  "id": "org_2c8VwJsNrMfPzTzV6oAdJuCgYlH",
  "image_url": "https://img.clerk.com/org-preview.png",
  "max_allowed_memberships": 5,
  "members_count": 1,
  "name": "Avery Consulting",
  "object": "organization",
  "pending_invitations_count": 0,
  "private_metadata": {},
  "public_metadata": {},
  "slug": "avery-consulting",
  "updated_at": 1772452400000
}

Get a Clerk user

Fetch one user by id, with their email addresses.

Inputs

User IDuser_idtextRequired
The Clerk user, as a user_... id or a Dashboard URL.

Outputs

bannedtrue/false
created_atnumber
email_addresseslist
external_idtext
first_nametext
has_imagetrue/false
idtext
image_urltext
last_active_atnumber
last_nametext
last_sign_in_atnumber
lockedtrue/false
objecttext
password_enabledtrue/false
primary_email_address_idtext
private_metadataobject
public_metadataobject
two_factor_enabledtrue/false
unsafe_metadataobject
updated_atnumber
usernametext
Example output
{
  "banned": false,
  "created_at": 1772452353000,
  "email_addresses": [
    {
      "created_at": 1772452353000,
      "email_address": "jordan.avery@example.com",
      "id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
      "linked_to": [],
      "object": "email_address",
      "reserved": false,
      "updated_at": 1772452353000,
      "verification": {
        "status": "verified",
        "strategy": "admin"
      }
    }
  ],
  "external_id": null,
  "first_name": "Jordan",
  "has_image": false,
  "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "image_url": "https://img.clerk.com/preview.png",
  "last_active_at": null,
  "last_name": "Avery",
  "last_sign_in_at": null,
  "locked": false,
  "object": "user",
  "password_enabled": false,
  "primary_email_address_id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
  "private_metadata": {},
  "public_metadata": {
    "plan": "starter"
  },
  "two_factor_enabled": false,
  "unsafe_metadata": {},
  "updated_at": 1772452353000,
  "username": "jordan.avery"
}

List Clerk organization members

List an organization's members, optionally filtered to one role.

Inputs

Organization IDorganization_idtextRequired
The organization, as an org_... id.
Roleroletext
Return only members holding this role.
Sort byorder_bytext
How to order the returned members.One of: -created_at (Newest first), created_at (Oldest first), email_address (Email address A-Z), first_name (First name A-Z), last_name (Last name A-Z), username (Username A-Z). Default: -created_at.
Limitlimitnumber
How many records to return, 1-500.From 1 to 500. Default: 10.
Offsetoffsetnumber
Skip this many records first, to page through results.At least 0. Default: 0.

Outputs

datalist
total_countnumber
Example output
{
  "data": [
    {
      "created_at": 1772452500000,
      "id": "orgmem_2c8VwKtOsNgQzUzW7pBeKvDhZmI",
      "object": "organization_membership",
      "organization": {
        "admin_delete_enabled": true,
        "created_at": 1772452400000,
        "created_by": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
        "has_image": false,
        "id": "org_2c8VwJsNrMfPzTzV6oAdJuCgYlH",
        "image_url": "https://img.clerk.com/org-preview.png",
        "max_allowed_memberships": 5,
        "members_count": 1,
        "name": "Avery Consulting",
        "object": "organization",
        "pending_invitations_count": 0,
        "private_metadata": {},
        "public_metadata": {},
        "slug": "avery-consulting",
        "updated_at": 1772452400000
      },
      "permissions": [
        "org:sys_profile:read"
      ],
      "private_metadata": {},
      "public_metadata": {},
      "public_user_data": {
        "first_name": "Jordan",
        "has_image": false,
        "identifier": "jordan.avery@example.com",
        "image_url": "https://img.clerk.com/preview.png",
        "last_name": "Avery",
        "user_id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF"
      },
      "role": "org:member",
      "role_name": "Member",
      "updated_at": 1772452500000
    }
  ],
  "total_count": 1
}

List Clerk organizations

List the instance's organizations, newest first.

Inputs

Searchquerytext
Match against organization name or slug.
Include member countsinclude_members_counttrue/false
Ask Clerk to fill in members_count.
Sort byorder_bytext
How to order the returned organizations.One of: -created_at (Newest first), created_at (Oldest first), name (Name A-Z), -name (Name Z-A), -members_count (Most members first). Default: -created_at.
Limitlimitnumber
How many records to return, 1-500.From 1 to 500. Default: 10.
Offsetoffsetnumber
Skip this many records first, to page through results.At least 0. Default: 0.

Outputs

datalist
total_countnumber
Example output
{
  "data": [
    {
      "admin_delete_enabled": true,
      "created_at": 1772452400000,
      "created_by": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
      "has_image": false,
      "id": "org_2c8VwJsNrMfPzTzV6oAdJuCgYlH",
      "image_url": "https://img.clerk.com/org-preview.png",
      "max_allowed_memberships": 5,
      "members_count": 1,
      "name": "Avery Consulting",
      "object": "organization",
      "pending_invitations_count": 0,
      "private_metadata": {},
      "public_metadata": {},
      "slug": "avery-consulting",
      "updated_at": 1772452400000
    }
  ],
  "total_count": 1
}

List Clerk users

List users in the Clerk instance, with optional search, created-date and banned filters.

Inputs

Searchquerytext
Match against name, email address, username or user id. Leave blank to list everyone.
Email addressemail_addresstext
Return only the user with this exact address.
Banned onlybannedtrue/false
Return only banned users when switched on.
Created aftercreated_afterdate and time
Only users created at or after this moment.
Created beforecreated_beforedate and time
Only users created at or before this moment.
Sort byorder_bytext
How to order the returned users.One of: -created_at (Newest first), created_at (Oldest first), -last_sign_in_at (Most recent sign-in first), -last_active_at (Most recently active first), email_address (Email address A-Z), first_name (First name A-Z), last_name (Last name A-Z), username (Username A-Z). Default: -created_at.
Limitlimitnumber
How many records to return, 1-500.From 1 to 500. Default: 10.
Offsetoffsetnumber
Skip this many records first, to page through results.At least 0. Default: 0.

Outputs

datalist
total_countnumber
Example output
{
  "data": [
    {
      "banned": false,
      "created_at": 1772452353000,
      "email_addresses": [
        {
          "created_at": 1772452353000,
          "email_address": "jordan.avery@example.com",
          "id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
          "linked_to": [],
          "object": "email_address",
          "reserved": false,
          "updated_at": 1772452353000,
          "verification": {
            "status": "verified",
            "strategy": "admin"
          }
        }
      ],
      "external_id": null,
      "first_name": "Jordan",
      "has_image": false,
      "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
      "image_url": "https://img.clerk.com/preview.png",
      "last_active_at": null,
      "last_name": "Avery",
      "last_sign_in_at": null,
      "locked": false,
      "object": "user",
      "password_enabled": false,
      "primary_email_address_id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
      "private_metadata": {},
      "public_metadata": {
        "plan": "starter"
      },
      "two_factor_enabled": false,
      "unsafe_metadata": {},
      "updated_at": 1772452353000,
      "username": "jordan.avery"
    }
  ],
  "total_count": 1
}

Remove a Clerk email address

Remove an email address from the user it belongs to.

Inputs

Email address IDemail_address_idtextRequired
The idn_... id of the address, from the user's email_addresses list.

Outputs

deletedtrue/false
idtext
objecttext
slugtext
Example output
{
  "deleted": true,
  "id": "idn_2c8VwMvQuPiSzWzY9rDgMxFjBoK",
  "object": "email_address"
}

Revoke a Clerk invitation

Revoke a pending invitation so its link stops working. Clerk only accepts this while the invitation is still pending.

Inputs

Invitation IDinvitation_idtextRequired
The inv_... id returned when it was created.

Outputs

created_atnumber
email_addresstext
expires_atnumber
idtext
objecttext
public_metadataobject
revokedtrue/false
statustext
updated_atnumber
urltext
Example output
{
  "created_at": 1772452353000,
  "email_address": "newcomer@example.com",
  "expires_at": 1775044353000,
  "id": "inv_2c8VwLuPtOhRzVzX8qCfLwEiAnJ",
  "object": "invitation",
  "public_metadata": {},
  "revoked": true,
  "status": "revoked",
  "updated_at": 1772452353000,
  "url": "https://accounts.example.com/sign-up?__clerk_ticket=abc123"
}

Unban a Clerk user

Lift a ban so the user can sign in again.

Inputs

User IDuser_idtextRequired
The Clerk user, as a user_... id or a Dashboard URL.

Outputs

bannedtrue/false
created_atnumber
email_addresseslist
external_idtext
first_nametext
has_imagetrue/false
idtext
image_urltext
last_active_atnumber
last_nametext
last_sign_in_atnumber
lockedtrue/false
objecttext
password_enabledtrue/false
primary_email_address_idtext
private_metadataobject
public_metadataobject
two_factor_enabledtrue/false
unsafe_metadataobject
updated_atnumber
usernametext
Example output
{
  "banned": false,
  "created_at": 1772452353000,
  "email_addresses": [
    {
      "created_at": 1772452353000,
      "email_address": "jordan.avery@example.com",
      "id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
      "linked_to": [],
      "object": "email_address",
      "reserved": false,
      "updated_at": 1772452353000,
      "verification": {
        "status": "verified",
        "strategy": "admin"
      }
    }
  ],
  "external_id": null,
  "first_name": "Jordan",
  "has_image": false,
  "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "image_url": "https://img.clerk.com/preview.png",
  "last_active_at": null,
  "last_name": "Avery",
  "last_sign_in_at": null,
  "locked": false,
  "object": "user",
  "password_enabled": false,
  "primary_email_address_id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
  "private_metadata": {},
  "public_metadata": {
    "plan": "starter"
  },
  "two_factor_enabled": false,
  "unsafe_metadata": {},
  "updated_at": 1772452353000,
  "username": "jordan.avery"
}

Update a Clerk organization

Change an organization's name, slug or member cap. Fields left blank are not touched.

Inputs

Organization IDorganization_idtextRequired
The organization, as an org_... id or its slug.
Namenametext
New display name.
Slugslugtext
New URL-friendly identifier. Capitals, spaces and underscores are converted for you.
Maximum membersmax_allowed_membershipsnumber
New cap on members.At least 1.

Outputs

admin_delete_enabledtrue/false
created_atnumber
created_bytext
has_imagetrue/false
idtext
image_urltext
max_allowed_membershipsnumber
members_countnumber
nametext
objecttext
pending_invitations_countnumber
private_metadataobject
public_metadataobject
slugtext
updated_atnumber
Example output
{
  "admin_delete_enabled": true,
  "created_at": 1772452400000,
  "created_by": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "has_image": false,
  "id": "org_2c8VwJsNrMfPzTzV6oAdJuCgYlH",
  "image_url": "https://img.clerk.com/org-preview.png",
  "max_allowed_memberships": 5,
  "members_count": 1,
  "name": "Avery Consulting",
  "object": "organization",
  "pending_invitations_count": 0,
  "private_metadata": {},
  "public_metadata": {},
  "slug": "avery-consulting",
  "updated_at": 1772452400000
}

Update a Clerk user

Change a user's profile fields. Fields left blank are not touched.

Inputs

User IDuser_idtextRequired
The Clerk user, as a user_... id or a Dashboard URL.
First namefirst_nametext
Given name.
Last namelast_nametext
Family name.
Usernameusernametext
New username, if usernames are enabled.
External IDexternal_idtext
Your own system's id for this user.
Primary email address IDprimary_email_address_idtext
An idn_... id from this user's email addresses, to make it the primary one.

Outputs

bannedtrue/false
created_atnumber
email_addresseslist
external_idtext
first_nametext
has_imagetrue/false
idtext
image_urltext
last_active_atnumber
last_nametext
last_sign_in_atnumber
lockedtrue/false
objecttext
password_enabledtrue/false
primary_email_address_idtext
private_metadataobject
public_metadataobject
two_factor_enabledtrue/false
unsafe_metadataobject
updated_atnumber
usernametext
Example output
{
  "banned": false,
  "created_at": 1772452353000,
  "email_addresses": [
    {
      "created_at": 1772452353000,
      "email_address": "jordan.avery@example.com",
      "id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
      "linked_to": [],
      "object": "email_address",
      "reserved": false,
      "updated_at": 1772452353000,
      "verification": {
        "status": "verified",
        "strategy": "admin"
      }
    }
  ],
  "external_id": null,
  "first_name": "Jordan",
  "has_image": false,
  "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "image_url": "https://img.clerk.com/preview.png",
  "last_active_at": null,
  "last_name": "Avery",
  "last_sign_in_at": null,
  "locked": false,
  "object": "user",
  "password_enabled": false,
  "primary_email_address_id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
  "private_metadata": {},
  "public_metadata": {
    "plan": "starter"
  },
  "two_factor_enabled": false,
  "unsafe_metadata": {},
  "updated_at": 1772452353000,
  "username": "jordan.avery"
}

Update Clerk user metadata

Merge metadata into a user. Keys given here replace those keys; keys left out keep their current values.

Inputs

User IDuser_idtextRequired
The Clerk user, as a user_... id or a Dashboard URL.
Public metadatapublic_metadataobject
Readable by the frontend and by the user.
Private metadataprivate_metadataobject
Readable only by your backend.
Unsafe metadataunsafe_metadataobject
Writable by the user from the frontend.

Outputs

bannedtrue/false
created_atnumber
email_addresseslist
external_idtext
first_nametext
has_imagetrue/false
idtext
image_urltext
last_active_atnumber
last_nametext
last_sign_in_atnumber
lockedtrue/false
objecttext
password_enabledtrue/false
primary_email_address_idtext
private_metadataobject
public_metadataobject
two_factor_enabledtrue/false
unsafe_metadataobject
updated_atnumber
usernametext
Example output
{
  "banned": false,
  "created_at": 1772452353000,
  "email_addresses": [
    {
      "created_at": 1772452353000,
      "email_address": "jordan.avery@example.com",
      "id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
      "linked_to": [],
      "object": "email_address",
      "reserved": false,
      "updated_at": 1772452353000,
      "verification": {
        "status": "verified",
        "strategy": "admin"
      }
    }
  ],
  "external_id": null,
  "first_name": "Jordan",
  "has_image": false,
  "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "image_url": "https://img.clerk.com/preview.png",
  "last_active_at": null,
  "last_name": "Avery",
  "last_sign_in_at": null,
  "locked": false,
  "object": "user",
  "password_enabled": false,
  "primary_email_address_id": "idn_2c8VwHrMqLeOzSyU5nZcItBfXkG",
  "private_metadata": {},
  "public_metadata": {
    "plan": "starter"
  },
  "two_factor_enabled": false,
  "unsafe_metadata": {},
  "updated_at": 1772452353000,
  "username": "jordan.avery"
}

On this page