# Clerk

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

App · Compliance & Security · 20 actions. Web page: https://docs.lodol.com/docs/integrations/clerk

## Actions

### 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 ID (`organization_id`, text, required): The organization, as an org_... id.
- User ID (`user_id`, text, required): The user to add to the organization.
- Role (`role`, text, required): The role key to give them, such as org:member. Pick from the instance's roles or type one.

**Outputs**

- `created_at` (number)
- `id` (text)
- `object` (text)
- `organization` (object)
- `permissions` (list)
- `private_metadata` (object)
- `public_metadata` (object)
- `public_user_data` (object)
- `role` (text)
- `role_name` (text)
- `updated_at` (number)

**Example output**

```json
{
  "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 ID (`user_id`, text, required): The user to add the address to.
- Email address (`email_address`, text, required): The address to add.
- Verified (`verified`, true/false): On by default. Switch off to add an address the user must confirm themselves. Default: `true`.
- Make primary (`primary`, true/false): Make this the user's primary address.

**Outputs**

- `created_at` (number)
- `email_address` (text)
- `id` (text)
- `linked_to` (list)
- `object` (text)
- `reserved` (true/false)
- `updated_at` (number)
- `verification` (object)

**Example output**

```json
{
  "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 ID (`user_id`, text, required): The Clerk user, as a user_... id or a Dashboard URL.

**Outputs**

- `banned` (true/false)
- `created_at` (number)
- `email_addresses` (list)
- `external_id` (text)
- `first_name` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `last_active_at` (number)
- `last_name` (text)
- `last_sign_in_at` (number)
- `locked` (true/false)
- `object` (text)
- `password_enabled` (true/false)
- `primary_email_address_id` (text)
- `private_metadata` (object)
- `public_metadata` (object)
- `two_factor_enabled` (true/false)
- `unsafe_metadata` (object)
- `updated_at` (number)
- `username` (text)

**Example output**

```json
{
  "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**

- Search (`query`, text): Count only users matching this text. Leave blank to count everyone.
- Email address (`email_address`, text): Count only the user with this exact address.

**Outputs**

- `object` (text)
- `total_count` (number)

**Example output**

```json
{
  "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 address (`email_address`, text, required): Who to invite.
- Redirect URL (`redirect_url`, text): Where the invitation link sends them, usually your sign-up page.
- Expires in (days) (`expires_in_days`, number): How long the invitation stays valid. Clerk's default is 30 days. From 1 to 365.
- Send the email (`notify`, true/false): Let Clerk email the invitation. Switch off to deliver the returned link yourself.
- Ignore existing (`ignore_existing`, true/false): Do not fail if this address already has a pending invitation.
- Public metadata (`public_metadata`, object): Carried onto the user created from this invitation.

**Outputs**

- `created_at` (number)
- `email_address` (text)
- `expires_at` (number)
- `id` (text)
- `object` (text)
- `public_metadata` (object)
- `revoked` (true/false)
- `status` (text)
- `updated_at` (number)
- `url` (text)

**Example output**

```json
{
  "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**

- Name (`name`, text, required): The organization's display name.
- Slug (`slug`, text): 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_by`, text): A user_... id. That user becomes the organization's administrator. Leave blank to create it with no members.
- Maximum members (`max_allowed_memberships`, number): Cap on members. Your Clerk plan's own cap still applies. At least 1.
- Public metadata (`public_metadata`, object): Readable by the frontend.
- Private metadata (`private_metadata`, object): Readable only by your backend.

**Outputs**

- `admin_delete_enabled` (true/false)
- `created_at` (number)
- `created_by` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `max_allowed_memberships` (number)
- `members_count` (number)
- `name` (text)
- `object` (text)
- `pending_invitations_count` (number)
- `private_metadata` (object)
- `public_metadata` (object)
- `slug` (text)
- `updated_at` (number)

**Example output**

```json
{
  "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 address (`email_address`, text): The user's email address.
- First name (`first_name`, text): Given name.
- Last name (`last_name`, text): Family name.
- Username (`username`, text): Only usable if usernames are enabled for the instance.
- Password (`password`, text): Optional. Clerk rejects passwords found in known breach lists. Leave blank to create a user who signs in by link or OAuth instead.
- External ID (`external_id`, text): Your own system's id for this user.
- Public metadata (`public_metadata`, object): Readable by the frontend and by the user.
- Private metadata (`private_metadata`, object): Readable only by your backend.

**Outputs**

- `banned` (true/false)
- `created_at` (number)
- `email_addresses` (list)
- `external_id` (text)
- `first_name` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `last_active_at` (number)
- `last_name` (text)
- `last_sign_in_at` (number)
- `locked` (true/false)
- `object` (text)
- `password_enabled` (true/false)
- `primary_email_address_id` (text)
- `private_metadata` (object)
- `public_metadata` (object)
- `two_factor_enabled` (true/false)
- `unsafe_metadata` (object)
- `updated_at` (number)
- `username` (text)

**Example output**

```json
{
  "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 ID (`organization_id`, text, required): The organization, as an org_... id.

**Outputs**

- `deleted` (true/false)
- `id` (text)
- `object` (text)
- `slug` (text)

**Example output**

```json
{
  "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 ID (`user_id`, text, required): The Clerk user, as a user_... id or a Dashboard URL.

**Outputs**

- `deleted` (true/false)
- `id` (text)
- `object` (text)
- `slug` (text)

**Example output**

```json
{
  "deleted": true,
  "id": "user_2c8VwGqLpKdNzRxT4mYbHsAeWjF",
  "object": "user"
}
```

### Get a Clerk organization

Fetch one organization by its id or its slug.

**Inputs**

- Organization ID (`organization_id`, text, required): The organization, as an org_... id or its slug.
- Include member count (`include_members_count`, true/false): Ask Clerk to fill in members_count.

**Outputs**

- `admin_delete_enabled` (true/false)
- `created_at` (number)
- `created_by` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `max_allowed_memberships` (number)
- `members_count` (number)
- `name` (text)
- `object` (text)
- `pending_invitations_count` (number)
- `private_metadata` (object)
- `public_metadata` (object)
- `slug` (text)
- `updated_at` (number)

**Example output**

```json
{
  "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 ID (`user_id`, text, required): The Clerk user, as a user_... id or a Dashboard URL.

**Outputs**

- `banned` (true/false)
- `created_at` (number)
- `email_addresses` (list)
- `external_id` (text)
- `first_name` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `last_active_at` (number)
- `last_name` (text)
- `last_sign_in_at` (number)
- `locked` (true/false)
- `object` (text)
- `password_enabled` (true/false)
- `primary_email_address_id` (text)
- `private_metadata` (object)
- `public_metadata` (object)
- `two_factor_enabled` (true/false)
- `unsafe_metadata` (object)
- `updated_at` (number)
- `username` (text)

**Example output**

```json
{
  "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 ID (`organization_id`, text, required): The organization, as an org_... id.
- Role (`role`, text): Return only members holding this role.
- Sort by (`order_by`, text): 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`.
- Limit (`limit`, number): How many records to return, 1-500. From 1 to 500. Default: `10`.
- Offset (`offset`, number): Skip this many records first, to page through results. At least 0. Default: `0`.

**Outputs**

- `data` (list)
- `total_count` (number)

**Example output**

```json
{
  "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**

- Search (`query`, text): Match against organization name or slug.
- Include member counts (`include_members_count`, true/false): Ask Clerk to fill in members_count.
- Sort by (`order_by`, text): 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`.
- Limit (`limit`, number): How many records to return, 1-500. From 1 to 500. Default: `10`.
- Offset (`offset`, number): Skip this many records first, to page through results. At least 0. Default: `0`.

**Outputs**

- `data` (list)
- `total_count` (number)

**Example output**

```json
{
  "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**

- Search (`query`, text): Match against name, email address, username or user id. Leave blank to list everyone.
- Email address (`email_address`, text): Return only the user with this exact address.
- Banned only (`banned`, true/false): Return only banned users when switched on.
- Created after (`created_after`, date and time): Only users created at or after this moment.
- Created before (`created_before`, date and time): Only users created at or before this moment.
- Sort by (`order_by`, text): 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`.
- Limit (`limit`, number): How many records to return, 1-500. From 1 to 500. Default: `10`.
- Offset (`offset`, number): Skip this many records first, to page through results. At least 0. Default: `0`.

**Outputs**

- `data` (list)
- `total_count` (number)

**Example output**

```json
{
  "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 ID (`email_address_id`, text, required): The idn_... id of the address, from the user's email_addresses list.

**Outputs**

- `deleted` (true/false)
- `id` (text)
- `object` (text)
- `slug` (text)

**Example output**

```json
{
  "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 ID (`invitation_id`, text, required): The inv_... id returned when it was created.

**Outputs**

- `created_at` (number)
- `email_address` (text)
- `expires_at` (number)
- `id` (text)
- `object` (text)
- `public_metadata` (object)
- `revoked` (true/false)
- `status` (text)
- `updated_at` (number)
- `url` (text)

**Example output**

```json
{
  "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 ID (`user_id`, text, required): The Clerk user, as a user_... id or a Dashboard URL.

**Outputs**

- `banned` (true/false)
- `created_at` (number)
- `email_addresses` (list)
- `external_id` (text)
- `first_name` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `last_active_at` (number)
- `last_name` (text)
- `last_sign_in_at` (number)
- `locked` (true/false)
- `object` (text)
- `password_enabled` (true/false)
- `primary_email_address_id` (text)
- `private_metadata` (object)
- `public_metadata` (object)
- `two_factor_enabled` (true/false)
- `unsafe_metadata` (object)
- `updated_at` (number)
- `username` (text)

**Example output**

```json
{
  "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 ID (`organization_id`, text, required): The organization, as an org_... id or its slug.
- Name (`name`, text): New display name.
- Slug (`slug`, text): New URL-friendly identifier. Capitals, spaces and underscores are converted for you.
- Maximum members (`max_allowed_memberships`, number): New cap on members. At least 1.

**Outputs**

- `admin_delete_enabled` (true/false)
- `created_at` (number)
- `created_by` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `max_allowed_memberships` (number)
- `members_count` (number)
- `name` (text)
- `object` (text)
- `pending_invitations_count` (number)
- `private_metadata` (object)
- `public_metadata` (object)
- `slug` (text)
- `updated_at` (number)

**Example output**

```json
{
  "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 ID (`user_id`, text, required): The Clerk user, as a user_... id or a Dashboard URL.
- First name (`first_name`, text): Given name.
- Last name (`last_name`, text): Family name.
- Username (`username`, text): New username, if usernames are enabled.
- External ID (`external_id`, text): Your own system's id for this user.
- Primary email address ID (`primary_email_address_id`, text): An idn_... id from this user's email addresses, to make it the primary one.

**Outputs**

- `banned` (true/false)
- `created_at` (number)
- `email_addresses` (list)
- `external_id` (text)
- `first_name` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `last_active_at` (number)
- `last_name` (text)
- `last_sign_in_at` (number)
- `locked` (true/false)
- `object` (text)
- `password_enabled` (true/false)
- `primary_email_address_id` (text)
- `private_metadata` (object)
- `public_metadata` (object)
- `two_factor_enabled` (true/false)
- `unsafe_metadata` (object)
- `updated_at` (number)
- `username` (text)

**Example output**

```json
{
  "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 ID (`user_id`, text, required): The Clerk user, as a user_... id or a Dashboard URL.
- Public metadata (`public_metadata`, object): Readable by the frontend and by the user.
- Private metadata (`private_metadata`, object): Readable only by your backend.
- Unsafe metadata (`unsafe_metadata`, object): Writable by the user from the frontend.

**Outputs**

- `banned` (true/false)
- `created_at` (number)
- `email_addresses` (list)
- `external_id` (text)
- `first_name` (text)
- `has_image` (true/false)
- `id` (text)
- `image_url` (text)
- `last_active_at` (number)
- `last_name` (text)
- `last_sign_in_at` (number)
- `locked` (true/false)
- `object` (text)
- `password_enabled` (true/false)
- `primary_email_address_id` (text)
- `private_metadata` (object)
- `public_metadata` (object)
- `two_factor_enabled` (true/false)
- `unsafe_metadata` (object)
- `updated_at` (number)
- `username` (text)

**Example output**

```json
{
  "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"
}
```
