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 |
JSON Schema
{
"$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