Clerk · Schema

Clerk User

Clerk User object.

AuthenticationAuthorizationB2B SaaSCIAMIdentity ManagementMFAOAuthOpenID ConnectOrganizationsPasskeysSAMLSecuritySessionsSSOUser Management

Properties

Name Type Description
id string
object string String representing the object's type. Objects of the same type share the same value.
external_id string
primary_email_address_id string
primary_phone_number_id string
primary_web3_wallet_id string
username string
first_name string
last_name string
locale string
profile_image_url string
image_url string
has_image boolean
public_metadata object
private_metadata object
unsafe_metadata object
email_addresses array
phone_numbers array
web3_wallets array
passkeys array
password_enabled boolean
two_factor_enabled boolean
totp_enabled boolean
backup_code_enabled boolean
mfa_enabled_at integer Unix timestamp of when MFA was last enabled for this user. It should be noted that this field is not nullified if MFA is disabled.
mfa_disabled_at integer Unix timestamp of when MFA was last disabled for this user. It should be noted that this field is not nullified if MFA is enabled again.
password_last_updated_at integer Unix timestamp of when the user's password was last updated.
external_accounts array
saml_accounts array
enterprise_accounts array
organization_memberships array
last_sign_in_at integer Unix timestamp of last sign-in.
banned boolean Flag to denote whether user is banned or not.
locked boolean Flag to denote whether user is currently locked, i.e. restricted from signing in or not.
deprovisioned boolean Flag to denote whether user has been deprovisioned and is restricted from signing in.
lockout_expires_in_seconds integer The number of seconds remaining until the lockout period expires for a locked user. A null value for a locked user indicates that lockout never expires.
verification_attempts_remaining integer The number of verification attempts remaining until the user is locked. Null if account lockout is not enabled. Note: if a user is locked explicitly via the Backend API, they may still have verificati
updated_at integer Unix timestamp of last update.
created_at integer Unix timestamp of creation.
delete_self_enabled boolean If enabled, user can delete themselves via FAPI.
create_organization_enabled boolean If enabled, user can create organizations via FAPI.
create_organizations_limit integer The maximum number of organizations the user can create. 0 means unlimited.
last_active_at integer Unix timestamp of the latest session activity, with day precision.
legal_accepted_at integer Unix timestamp of when the user accepted the legal requirements.
bypass_client_trust boolean When set to `true`, the user will bypass client trust checks during sign-in.
scim object
View JSON Schema on GitHub

JSON Schema

clerk-user-schema.json Raw ↑
{
  "$schema": "https://json-schema.org/draft/2020-12/schema",
  "$id": "https://raw.githubusercontent.com/api-evangelist/clerk-com/main/json-schema/clerk-user-schema.json",
  "title": "Clerk User",
  "description": "Clerk User object.",
  "type": "object",
  "additionalProperties": false,
  "properties": {
    "id": {
      "type": "string"
    },
    "object": {
      "type": "string",
      "description": "String representing the object's type. Objects of the same type share the same value.\n",
      "enum": [
        "user"
      ]
    },
    "external_id": {
      "nullable": true,
      "type": "string"
    },
    "primary_email_address_id": {
      "nullable": true,
      "type": "string"
    },
    "primary_phone_number_id": {
      "nullable": true,
      "type": "string"
    },
    "primary_web3_wallet_id": {
      "nullable": true,
      "type": "string"
    },
    "username": {
      "nullable": true,
      "type": "string"
    },
    "first_name": {
      "nullable": true,
      "type": "string"
    },
    "last_name": {
      "nullable": true,
      "type": "string"
    },
    "locale": {
      "nullable": true,
      "type": "string"
    },
    "profile_image_url": {
      "type": "string",
      "deprecated": true
    },
    "image_url": {
      "type": "string"
    },
    "has_image": {
      "type": "boolean"
    },
    "public_metadata": {
      "type": "object",
      "additionalProperties": true
    },
    "private_metadata": {
      "nullable": true,
      "type": "object",
      "additionalProperties": true
    },
    "unsafe_metadata": {
      "type": "object",
      "additionalProperties": true
    },
    "email_addresses": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string",
            "x-speakeasy-unknown-values": "allow",
            "description": "String representing the object's type. Objects of the same type share the same value.\n",
            "enum": [
              "email_address"
            ]
          },
          "email_address": {
            "type": "string"
          },
          "reserved": {
            "type": "boolean"
          },
          "verification": {
            "type": "object",
            "nullable": true,
            "oneOf": [
              {
                "x-speakeasy-name-override": "OTP",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_otp"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unverified",
                      "verified",
                      "failed",
                      "expired"
                    ]
                  },
                  "strategy": {
                    "x-speakeasy-unknown-values": "allow",
                    "type": "string",
                    "enum": [
                      "phone_code",
                      "email_code",
                      "reset_password_email_code"
                    ]
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              },
              {
                "x-speakeasy-name-override": "Admin",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_admin"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "verified"
                    ]
                  },
                  "strategy": {
                    "x-speakeasy-unknown-values": "allow",
                    "type": "string",
                    "enum": [
                      "admin"
                    ]
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              },
              {
                "x-speakeasy-name-override": "FromOAuth",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_from_oauth"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unverified",
                      "verified"
                    ]
                  },
                  "strategy": {
                    "type": "string",
                    "pattern": "^from_oauth_(?:(?:token_)|(?:custom_))?[a-z]+$"
                  },
                  "error": {
                    "type": "object",
                    "nullable": true,
                    "oneOf": [
                      {}
                    ]
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              },
              {
                "x-speakeasy-name-override": "Ticket",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_ticket"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unverified",
                      "verified",
                      "expired"
                    ]
                  },
                  "strategy": {
                    "x-speakeasy-unknown-values": "allow",
                    "type": "string",
                    "enum": [
                      "ticket"
                    ]
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              },
              {
                "x-speakeasy-name-override": "SAML",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_saml"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unverified",
                      "verified",
                      "failed",
                      "expired",
                      "transferable"
                    ]
                  },
                  "strategy": {
                    "type": "string",
                    "enum": [
                      "saml"
                    ]
                  },
                  "external_verification_redirect_url": {
                    "nullable": true,
                    "type": "string"
                  },
                  "error": {
                    "nullable": true,
                    "type": "object",
                    "oneOf": [
                      {}
                    ]
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts"
                ]
              },
              {
                "x-speakeasy-name-override": "EmailLink",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_email_link"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unverified",
                      "verified",
                      "failed",
                      "expired"
                    ]
                  },
                  "strategy": {
                    "type": "string",
                    "enum": [
                      "email_link"
                    ]
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              }
            ],
            "discriminator": {
              "propertyName": "object",
              "mapping": {
                "verification_otp": "#/components/schemas/verification_otp",
                "verification_admin": "#/components/schemas/verification_admin",
                "verification_from_oauth": "#/components/schemas/verification_from_oauth",
                "verification_ticket": "#/components/schemas/verification_ticket",
                "verification_saml": "#/components/schemas/verification_saml",
                "verification_email_link": "#/components/schemas/verification_email_link"
              }
            }
          },
          "linked_to": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "type": {
                  "type": "string",
                  "pattern": "^oauth_[a-z]+$"
                },
                "id": {
                  "type": "string"
                }
              },
              "required": [
                "type",
                "id"
              ]
            }
          },
          "matches_sso_connection": {
            "description": "Indicates whether this email address domain matches an active enterprise connection.\n",
            "type": "boolean"
          },
          "created_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of creation\n"
          },
          "updated_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of creation\n"
          }
        },
        "required": [
          "object",
          "email_address",
          "verification",
          "linked_to",
          "reserved",
          "created_at",
          "updated_at"
        ]
      }
    },
    "phone_numbers": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string",
            "description": "String representing the object's type. Objects of the same type share the same value.\n",
            "enum": [
              "phone_number"
            ]
          },
          "phone_number": {
            "type": "string"
          },
          "reserved_for_second_factor": {
            "type": "boolean"
          },
          "default_second_factor": {
            "type": "boolean"
          },
          "reserved": {
            "type": "boolean"
          },
          "verification": {
            "type": "object",
            "nullable": true,
            "oneOf": [
              {
                "x-speakeasy-name-override": "OTP",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_otp"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unverified",
                      "verified",
                      "failed",
                      "expired"
                    ]
                  },
                  "strategy": {
                    "x-speakeasy-unknown-values": "allow",
                    "type": "string",
                    "enum": [
                      "phone_code",
                      "email_code",
                      "reset_password_email_code"
                    ]
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              },
              {
                "x-speakeasy-name-override": "Admin",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_admin"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "verified"
                    ]
                  },
                  "strategy": {
                    "x-speakeasy-unknown-values": "allow",
                    "type": "string",
                    "enum": [
                      "admin"
                    ]
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              }
            ],
            "discriminator": {
              "propertyName": "object",
              "mapping": {
                "verification_otp": "#/components/schemas/verification_otp",
                "verification_admin": "#/components/schemas/verification_admin"
              }
            }
          },
          "linked_to": {
            "type": "array",
            "items": {
              "type": "object",
              "additionalProperties": false,
              "properties": {
                "type": {
                  "type": "string",
                  "pattern": "^oauth_[a-z]+$"
                },
                "id": {
                  "type": "string"
                }
              },
              "required": [
                "type",
                "id"
              ]
            }
          },
          "backup_codes": {
            "type": "array",
            "items": {
              "type": "string"
            },
            "nullable": true
          },
          "created_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of creation\n"
          },
          "updated_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of creation\n"
          }
        },
        "required": [
          "object",
          "phone_number",
          "verification",
          "linked_to",
          "reserved",
          "created_at",
          "updated_at"
        ]
      }
    },
    "web3_wallets": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string",
            "description": "String representing the object's type. Objects of the same type share the same value.\n",
            "enum": [
              "web3_wallet"
            ]
          },
          "web3_wallet": {
            "type": "string"
          },
          "verification": {
            "type": "object",
            "nullable": true,
            "oneOf": [
              {
                "x-speakeasy-name-override": "Web3Signature",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_web3"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unverified",
                      "verified",
                      "failed",
                      "expired"
                    ]
                  },
                  "strategy": {
                    "type": "string",
                    "enum": [
                      "web3_metamask_signature",
                      "web3_base_signature",
                      "web3_coinbase_wallet_signature",
                      "web3_okx_wallet_signature",
                      "web3_solana_signature"
                    ]
                  },
                  "nonce": {
                    "type": "string",
                    "nullable": true
                  },
                  "message": {
                    "type": "string",
                    "nullable": true
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              },
              {
                "x-speakeasy-name-override": "Admin",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_admin"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "verified"
                    ]
                  },
                  "strategy": {
                    "x-speakeasy-unknown-values": "allow",
                    "type": "string",
                    "enum": [
                      "admin"
                    ]
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              }
            ],
            "discriminator": {
              "propertyName": "object"
            }
          },
          "created_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of creation\n"
          },
          "updated_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of creation\n"
          }
        },
        "required": [
          "object",
          "web3_wallet",
          "verification",
          "created_at",
          "updated_at"
        ]
      }
    },
    "passkeys": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": false,
        "properties": {
          "id": {
            "type": "string"
          },
          "object": {
            "type": "string",
            "description": "String representing the object's type. Objects of the same type share the same value.\n",
            "enum": [
              "passkey"
            ]
          },
          "name": {
            "type": "string"
          },
          "last_used_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of when the passkey was last used.\n"
          },
          "verification": {
            "type": "object",
            "nullable": true,
            "oneOf": [
              {
                "x-speakeasy-name-override": "Passkey",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_passkey"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "verified"
                    ]
                  },
                  "strategy": {
                    "type": "string",
                    "enum": [
                      "passkey"
                    ]
                  },
                  "nonce": {
                    "type": "string",
                    "enum": [
                      "nonce"
                    ]
                  },
                  "message": {
                    "type": "string",
                    "nullable": true
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              }
            ],
            "discriminator": {
              "propertyName": "object"
            }
          }
        },
        "required": [
          "object",
          "name",
          "last_used_at",
          "verification"
        ]
      }
    },
    "password_enabled": {
      "type": "boolean"
    },
    "two_factor_enabled": {
      "type": "boolean"
    },
    "totp_enabled": {
      "type": "boolean"
    },
    "backup_code_enabled": {
      "type": "boolean"
    },
    "mfa_enabled_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix timestamp of when MFA was last enabled for this user. It should be noted that this field is not nullified if MFA is disabled.\n",
      "nullable": true
    },
    "mfa_disabled_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix timestamp of when MFA was last disabled for this user. It should be noted that this field is not nullified if MFA is enabled again.\n",
      "nullable": true
    },
    "password_last_updated_at": {
      "type": "integer",
      "format": "int64",
      "description": "Unix timestamp of when the user's password was last updated.\n",
      "nullable": true
    },
    "external_accounts": {
      "type": "array",
      "items": {
        "type": "object",
        "additionalProperties": true,
        "properties": {
          "object": {
            "type": "string",
            "description": "String representing the object's type. Objects of the same type share the same value.",
            "enum": [
              "external_account",
              "facebook_account",
              "google_account"
            ]
          },
          "id": {
            "type": "string"
          },
          "provider": {
            "type": "string"
          },
          "identification_id": {
            "type": "string"
          },
          "provider_user_id": {
            "description": "The unique ID of the user in the external provider's system",
            "type": "string"
          },
          "approved_scopes": {
            "type": "string"
          },
          "email_address": {
            "type": "string"
          },
          "email_address_verified": {
            "type": "boolean",
            "nullable": true,
            "description": "Whether the email was verified by the OAuth provider at creation time. null = unknown (pre-migration data or custom OAuth providers), true = provider confirmed email was verified, false = provider confirmed email was NOT verified\n"
          },
          "first_name": {
            "type": "string"
          },
          "last_name": {
            "type": "string"
          },
          "avatar_url": {
            "type": "string",
            "deprecated": true,
            "description": "Please use `image_url` instead"
          },
          "image_url": {
            "type": "string",
            "nullable": true
          },
          "username": {
            "type": "string",
            "nullable": true
          },
          "phone_number": {
            "type": "string",
            "nullable": true
          },
          "public_metadata": {
            "type": "object",
            "additionalProperties": true
          },
          "label": {
            "type": "string",
            "nullable": true
          },
          "created_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of creation\n"
          },
          "updated_at": {
            "type": "integer",
            "format": "int64",
            "description": "Unix timestamp of creation\n"
          },
          "verification": {
            "type": "object",
            "nullable": true,
            "oneOf": [
              {
                "x-speakeasy-name-override": "Oauth",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_oauth"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "x-speakeasy-unknown-values": "allow",
                    "enum": [
                      "unverified",
                      "verified",
                      "failed",
                      "expired",
                      "transferable"
                    ]
                  },
                  "strategy": {
                    "type": "string",
                    "x-speakeasy-unknown-values": "allow",
                    "pattern": "^oauth_(?:(?:token_)|(?:custom_))?[a-z]+$"
                  },
                  "external_verification_redirect_url": {
                    "type": "string"
                  },
                  "error": {
                    "type": "object",
                    "nullable": true,
                    "oneOf": [
                      {}
                    ]
                  },
                  "expire_at": {
                    "type": "integer"
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  }
                },
                "required": [
                  "status",
                  "strategy",
                  "attempts",
                  "expire_at"
                ]
              },
              {
                "x-speakeasy-name-override": "GoogleOneTap",
                "type": "object",
                "additionalProperties": false,
                "properties": {
                  "object": {
                    "type": "string",
                    "enum": [
                      "verification_google_one_tap"
                    ]
                  },
                  "status": {
                    "type": "string",
                    "enum": [
                      "unverified",
                      "verified"
                    ]
                  },
                  "strategy": {
                    "type": "string",
                    "enum": [
                      "google_one_tap"
                    ]
                  },
                  "expire_at": {
                    "type": "integer",
                    "nullable": true
                  },
                  "attempts": {
                    "type": "integer",
                    "nullable": true
                  },
                  "verified_at_client": {
                    "type": "string",
                    "nullable": true
                  },
                  "error": {
                    "type": "object",
                    "nullable": true,
                    "oneOf": [
                      {}
                    ]
                  }
                },


# --- truncated at 32 KB (60 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/clerk-com/refs/heads/main/json-schema/clerk-user-schema.json