The user object represents a user that has successfully signed up to your application.
Returns a list of all users. The users are returned sorted by creation date, with the newest users appearing first.
Success
Request was not successful
Authentication invalid
Invalid request parameters
[- {
- "id": "string",
- "object": "user",
- "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",
- "profile_image_url": "string",
- "image_url": "string",
- "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "gender": "string",
- "birthday": "string",
- "email_addresses": [
- {
- "id": "string",
- "object": "email_address",
- "email_address": "string",
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
]
}
], - "phone_numbers": [
- {
- "id": "string",
- "object": "phone_number",
- "phone_number": "string",
- "reserved_for_second_factor": true,
- "default_second_factor": true,
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
], - "backup_codes": [
- "string"
]
}
], - "web3_wallets": [
- {
- "id": "string",
- "object": "web3_wallet",
- "web3_wallet": "string",
- "verification": {
- "status": "verified",
- "strategy": "web3_metamask_signature",
- "nonce": "nonce",
- "attempts": 0,
- "expire_at": 0
}
}
], - "password_enabled": true,
- "two_factor_enabled": true,
- "totp_enabled": true,
- "backup_code_enabled": true,
- "external_accounts": [
- { }
], - "saml_accounts": [
- {
- "id": "string",
- "object": "saml_account",
- "email_address": "string",
- "first_name": "string",
- "last_name": "string",
- "verification": {
- "status": "unverified",
- "strategy": "saml",
- "external_verification_redirect_url": "string",
- "error": {
- "message": "string",
- "long_message": "string",
- "code": "string",
- "meta": { },
- "clerk_trace_id": "string"
}, - "expire_at": 0,
- "attempts": 0
}
}
], - "last_sign_in_at": 0,
- "banned": true,
- "updated_at": 0,
- "created_at": 0
}
]
Creates a new user. Your user management settings determine how you should setup your user model.
Any email address and phone number created using this method will be marked as verified.
Note: If you are performing a migration, check out our guide on zero downtime migrations.
A rate limit rule of 20 requests per 10 seconds is applied to this endpoint.
external_id | string or null The ID of the user as used in your external systems or your previous authentication solution. Must be unique across your instance. |
first_name | string or null The first name to assign to the user |
last_name | string or null The last name to assign to the user |
email_address | Array of strings Email addresses to add to the user. Must be unique across your instance. The first email address will be set as the user's primary email address. |
phone_number | Array of strings Phone numbers to add to the user. Must be unique across your instance. The first phone number will be set as the user's primary phone number. |
web3_wallet | Array of strings Web3 wallets to add to the user. Must be unique across your instance. The first wallet will be set as the user's primary wallet. |
username | string or null The username to give to the user. It must be unique across your instance. |
password | string or null The plaintext password to give the user. Must be at least 8 characters long, and can not be in any list of hacked passwords. |
password_digest | string In case you already have the password digests and not the passwords, you can use them for the newly created user via this property.
The digests should be generated with one of the supported algorithms.
The hashing algorithm can be specified using the |
password_hasher | string The hashing algorithm that was used to generate the password digest. The algorithms we support at the moment are bcrypt, bcrypt_sha256_django, md5, pbkdf2_sha256, pbkdf2_sha256_django, scrypt_firebase and 2 argon2 variants, argon2i and argon2id. Each of the above expects the incoming digest to be of a particular format. More specifically: bcrypt: The digest should be of the following form:
bcrypt_sha256_django: This is the Django-specific variant of Bcrypt, using SHA256 hashing function. The format should be as follows (as exported from Django):
md5: The digest should follow the regular form e.g.:
pbkdf2_sha256: This is the PBKDF2 algorithm using the SHA256 hashing function. The format should be as follows:
Note: Both the salt and the hash are expected to be base64-encoded. pbkdf2_sha256_django: This is the Django-specific variant of PBKDF2 and the digest should have the following format (as exported from Django):
Note: The salt is expected to be un-encoded, the hash is expected base64-encoded. pbkdf2_sha1: This is similar to pkbdf2_sha256_django, but with two differences:
The format is the following:
scrypt_firebase: The Firebase-specific variant of scrypt. The value is expected to have 6 segments separated by the $ character and include the following information: hash: The actual Base64 hash. This can be retrieved when exporting the user from Firebase. salt: The salt used to generate the above hash. Again, this is given when exporting the user. signer key: The base64 encoded signer key. salt separator: The base64 encoded salt separator. rounds: The number of rounds the algorithm needs to run. memory cost: The cost of the algorithm run The first 2 (hash and salt) are per user and can be retrieved when exporting the user from Firebase. The other 4 values (signer key, salt separator, rounds and memory cost) are project-wide settings and can be retrieved from the project's password hash parameters. Once you have all these, you can combine it in the following format and send this as the digest in order for Clerk to accept it:
argon2i: Algorithms in the argon2 family generate digests that encode the following information: version (v): The argon version, version 19 is assumed memory (m): The memory used by the algorithm (in kibibytes) iterations (t): The number of iterations to perform parallelism (p): The number of threads to use Parts are demarcated by the
argon2id: See the previous algorithm for an explanation of the formatting. For the argon2id case, the value of the algorithm in the first part of the digest is
If you need support for any particular hashing algorithm, please let us know. |
skip_password_checks | boolean When set to |
skip_password_requirement | boolean When set to |
totp_secret | string In case TOTP is configured on the instance, you can provide the secret to enable it on the newly created user without the need to reset it. Please note that currently the supported options are:
|
backup_codes | Array of strings If Backup Codes are configured on the instance, you can provide them to enable it on the newly created user without the need to reset them. You must provide the backup codes in plain format or the corresponding bcrypt digest. |
public_metadata | object Metadata saved on the user, that is visible to both your Frontend and Backend APIs |
private_metadata | object Metadata saved on the user, that is only visible to your Backend API |
unsafe_metadata | object Metadata saved on the user, that can be updated from both the Frontend and Backend APIs. Note: Since this data can be modified from the frontend, it is not guaranteed to be safe. |
created_at | string A custom date/time denoting when the user signed up to the application, specified in RFC3339 format (e.g. |
Success
Request was not successful
Authentication invalid
Invalid request parameters
{- "external_id": "string",
- "first_name": "string",
- "last_name": "string",
- "email_address": [
- "string"
], - "phone_number": [
- "string"
], - "web3_wallet": [
- "string"
], - "username": "string",
- "password": "string",
- "password_digest": "string",
- "password_hasher": "bcrypt",
- "skip_password_checks": true,
- "skip_password_requirement": true,
- "totp_secret": "string",
- "backup_codes": [
- "string"
], - "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "created_at": "string"
}
{- "id": "string",
- "object": "user",
- "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",
- "profile_image_url": "string",
- "image_url": "string",
- "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "gender": "string",
- "birthday": "string",
- "email_addresses": [
- {
- "id": "string",
- "object": "email_address",
- "email_address": "string",
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
]
}
], - "phone_numbers": [
- {
- "id": "string",
- "object": "phone_number",
- "phone_number": "string",
- "reserved_for_second_factor": true,
- "default_second_factor": true,
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
], - "backup_codes": [
- "string"
]
}
], - "web3_wallets": [
- {
- "id": "string",
- "object": "web3_wallet",
- "web3_wallet": "string",
- "verification": {
- "status": "verified",
- "strategy": "web3_metamask_signature",
- "nonce": "nonce",
- "attempts": 0,
- "expire_at": 0
}
}
], - "password_enabled": true,
- "two_factor_enabled": true,
- "totp_enabled": true,
- "backup_code_enabled": true,
- "external_accounts": [
- { }
], - "saml_accounts": [
- {
- "id": "string",
- "object": "saml_account",
- "email_address": "string",
- "first_name": "string",
- "last_name": "string",
- "verification": {
- "status": "unverified",
- "strategy": "saml",
- "external_verification_redirect_url": "string",
- "error": {
- "message": "string",
- "long_message": "string",
- "code": "string",
- "meta": { },
- "clerk_trace_id": "string"
}, - "expire_at": 0,
- "attempts": 0
}
}
], - "last_sign_in_at": 0,
- "banned": true,
- "updated_at": 0,
- "created_at": 0
}
Returns a total count of all users that match the given filtering criteria.
Success
Invalid request parameters
{- "object": "total_count",
- "total_count": 0
}
Retrieve the details of a user
Success
Request was not successful
Authentication invalid
Resource not found
{- "id": "string",
- "object": "user",
- "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",
- "profile_image_url": "string",
- "image_url": "string",
- "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "gender": "string",
- "birthday": "string",
- "email_addresses": [
- {
- "id": "string",
- "object": "email_address",
- "email_address": "string",
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
]
}
], - "phone_numbers": [
- {
- "id": "string",
- "object": "phone_number",
- "phone_number": "string",
- "reserved_for_second_factor": true,
- "default_second_factor": true,
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
], - "backup_codes": [
- "string"
]
}
], - "web3_wallets": [
- {
- "id": "string",
- "object": "web3_wallet",
- "web3_wallet": "string",
- "verification": {
- "status": "verified",
- "strategy": "web3_metamask_signature",
- "nonce": "nonce",
- "attempts": 0,
- "expire_at": 0
}
}
], - "password_enabled": true,
- "two_factor_enabled": true,
- "totp_enabled": true,
- "backup_code_enabled": true,
- "external_accounts": [
- { }
], - "saml_accounts": [
- {
- "id": "string",
- "object": "saml_account",
- "email_address": "string",
- "first_name": "string",
- "last_name": "string",
- "verification": {
- "status": "unverified",
- "strategy": "saml",
- "external_verification_redirect_url": "string",
- "error": {
- "message": "string",
- "long_message": "string",
- "code": "string",
- "meta": { },
- "clerk_trace_id": "string"
}, - "expire_at": 0,
- "attempts": 0
}
}
], - "last_sign_in_at": 0,
- "banned": true,
- "updated_at": 0,
- "created_at": 0
}
Update a user's attributes.
You can set the user's primary contact identifiers (email address and phone numbers) by updating the primary_email_address_id
and primary_phone_number_id
attributes respectively.
Both IDs should correspond to verified identifications that belong to the user.
You can remove a user's username by setting the username attribute to null or the blank string "". This is a destructive action; the identification will be deleted forever. Usernames can be removed only if they are optional in your instance settings and there's at least one other identifier which can be used for authentication.
This endpoint allows changing a user's password. When passing the password
parameter directly you have two further options.
You can ignore the password policy checks for your instance by setting the skip_password_checks
parameter to true
.
You can also choose to sign the user out of all their active sessions on any device once the password is updated. Just set sign_out_of_other_sessions
to true
.
Success
Request was not successful
Authentication invalid
Resource not found
Invalid request parameters
{- "external_id": "string",
- "first_name": "string",
- "last_name": "string",
- "primary_email_address_id": "string",
- "primary_phone_number_id": "string",
- "primary_web3_wallet_id": "string",
- "username": "string",
- "profile_image_id": "string",
- "password": "string",
- "skip_password_checks": true,
- "sign_out_of_other_sessions": true,
- "totp_secret": "string",
- "backup_codes": [
- "string"
], - "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "created_at": "string"
}
{- "id": "string",
- "object": "user",
- "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",
- "profile_image_url": "string",
- "image_url": "string",
- "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "gender": "string",
- "birthday": "string",
- "email_addresses": [
- {
- "id": "string",
- "object": "email_address",
- "email_address": "string",
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
]
}
], - "phone_numbers": [
- {
- "id": "string",
- "object": "phone_number",
- "phone_number": "string",
- "reserved_for_second_factor": true,
- "default_second_factor": true,
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
], - "backup_codes": [
- "string"
]
}
], - "web3_wallets": [
- {
- "id": "string",
- "object": "web3_wallet",
- "web3_wallet": "string",
- "verification": {
- "status": "verified",
- "strategy": "web3_metamask_signature",
- "nonce": "nonce",
- "attempts": 0,
- "expire_at": 0
}
}
], - "password_enabled": true,
- "two_factor_enabled": true,
- "totp_enabled": true,
- "backup_code_enabled": true,
- "external_accounts": [
- { }
], - "saml_accounts": [
- {
- "id": "string",
- "object": "saml_account",
- "email_address": "string",
- "first_name": "string",
- "last_name": "string",
- "verification": {
- "status": "unverified",
- "strategy": "saml",
- "external_verification_redirect_url": "string",
- "error": {
- "message": "string",
- "long_message": "string",
- "code": "string",
- "meta": { },
- "clerk_trace_id": "string"
}, - "expire_at": 0,
- "attempts": 0
}
}
], - "last_sign_in_at": 0,
- "banned": true,
- "updated_at": 0,
- "created_at": 0
}
Marks the given user as banned, which means that all their sessions are revoked and they are not allowed to sign in again.
Success
Payment required
{- "id": "string",
- "object": "user",
- "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",
- "profile_image_url": "string",
- "image_url": "string",
- "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "gender": "string",
- "birthday": "string",
- "email_addresses": [
- {
- "id": "string",
- "object": "email_address",
- "email_address": "string",
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
]
}
], - "phone_numbers": [
- {
- "id": "string",
- "object": "phone_number",
- "phone_number": "string",
- "reserved_for_second_factor": true,
- "default_second_factor": true,
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
], - "backup_codes": [
- "string"
]
}
], - "web3_wallets": [
- {
- "id": "string",
- "object": "web3_wallet",
- "web3_wallet": "string",
- "verification": {
- "status": "verified",
- "strategy": "web3_metamask_signature",
- "nonce": "nonce",
- "attempts": 0,
- "expire_at": 0
}
}
], - "password_enabled": true,
- "two_factor_enabled": true,
- "totp_enabled": true,
- "backup_code_enabled": true,
- "external_accounts": [
- { }
], - "saml_accounts": [
- {
- "id": "string",
- "object": "saml_account",
- "email_address": "string",
- "first_name": "string",
- "last_name": "string",
- "verification": {
- "status": "unverified",
- "strategy": "saml",
- "external_verification_redirect_url": "string",
- "error": {
- "message": "string",
- "long_message": "string",
- "code": "string",
- "meta": { },
- "clerk_trace_id": "string"
}, - "expire_at": 0,
- "attempts": 0
}
}
], - "last_sign_in_at": 0,
- "banned": true,
- "updated_at": 0,
- "created_at": 0
}
Removes the ban mark from the given user.
Success
Payment required
{- "id": "string",
- "object": "user",
- "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",
- "profile_image_url": "string",
- "image_url": "string",
- "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "gender": "string",
- "birthday": "string",
- "email_addresses": [
- {
- "id": "string",
- "object": "email_address",
- "email_address": "string",
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
]
}
], - "phone_numbers": [
- {
- "id": "string",
- "object": "phone_number",
- "phone_number": "string",
- "reserved_for_second_factor": true,
- "default_second_factor": true,
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
], - "backup_codes": [
- "string"
]
}
], - "web3_wallets": [
- {
- "id": "string",
- "object": "web3_wallet",
- "web3_wallet": "string",
- "verification": {
- "status": "verified",
- "strategy": "web3_metamask_signature",
- "nonce": "nonce",
- "attempts": 0,
- "expire_at": 0
}
}
], - "password_enabled": true,
- "two_factor_enabled": true,
- "totp_enabled": true,
- "backup_code_enabled": true,
- "external_accounts": [
- { }
], - "saml_accounts": [
- {
- "id": "string",
- "object": "saml_account",
- "email_address": "string",
- "first_name": "string",
- "last_name": "string",
- "verification": {
- "status": "unverified",
- "strategy": "saml",
- "external_verification_redirect_url": "string",
- "error": {
- "message": "string",
- "long_message": "string",
- "code": "string",
- "meta": { },
- "clerk_trace_id": "string"
}, - "expire_at": 0,
- "attempts": 0
}
}
], - "last_sign_in_at": 0,
- "banned": true,
- "updated_at": 0,
- "created_at": 0
}
Update a user's metadata attributes by merging existing values with the provided parameters.
This endpoint behaves differently than the Update a user endpoint. Metadata values will not be replaced entirely. Instead, a deep merge will be performed. Deep means that any nested JSON objects will be merged as well.
You can remove metadata keys at any level by setting their value to null
.
Success
Request was not successful
Authentication invalid
Resource not found
Invalid request parameters
{- "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { }
}
{- "id": "string",
- "object": "user",
- "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",
- "profile_image_url": "string",
- "image_url": "string",
- "public_metadata": { },
- "private_metadata": { },
- "unsafe_metadata": { },
- "gender": "string",
- "birthday": "string",
- "email_addresses": [
- {
- "id": "string",
- "object": "email_address",
- "email_address": "string",
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
]
}
], - "phone_numbers": [
- {
- "id": "string",
- "object": "phone_number",
- "phone_number": "string",
- "reserved_for_second_factor": true,
- "default_second_factor": true,
- "reserved": true,
- "verification": {
- "status": "unverified",
- "strategy": "phone_code",
- "attempts": 0,
- "expire_at": 0
}, - "linked_to": [
- {
- "type": "oauth_google",
- "id": "string"
}
], - "backup_codes": [
- "string"
]
}
], - "web3_wallets": [
- {
- "id": "string",
- "object": "web3_wallet",
- "web3_wallet": "string",
- "verification": {
- "status": "verified",
- "strategy": "web3_metamask_signature",
- "nonce": "nonce",
- "attempts": 0,
- "expire_at": 0
}
}
], - "password_enabled": true,
- "two_factor_enabled": true,
- "totp_enabled": true,
- "backup_code_enabled": true,
- "external_accounts": [
- { }
], - "saml_accounts": [
- {
- "id": "string",
- "object": "saml_account",
- "email_address": "string",
- "first_name": "string",
- "last_name": "string",
- "verification": {
- "status": "unverified",
- "strategy": "saml",
- "external_verification_redirect_url": "string",
- "error": {
- "message": "string",
- "long_message": "string",
- "code": "string",
- "meta": { },
- "clerk_trace_id": "string"
}, - "expire_at": 0,
- "attempts": 0
}
}
], - "last_sign_in_at": 0,
- "banned": true,
- "updated_at": 0,
- "created_at": 0
}
Fetch the corresponding OAuth access token for a user that has previously authenticated with a particular OAuth provider. For OAuth 2.0, if the access token has expired and we have a corresponding refresh token, the access token will be refreshed transparently the new one will be returned.
The OAuth access token of the user, if any.
Invalid request parameters
[- {
- "object": "string",
- "token": "string",
- "provider": "string",
- "public_metadata": { },
- "label": "string",
- "scopes": [
- "string"
], - "token_secret": "string"
}
]
Retrieve a paginated list of the user's organization memberships
A list of organization memberships
Request was not successful
{- "data": [
- {
- "id": "string",
- "object": "organization_membership",
- "role": "admin",
- "created_at": 0,
- "updated_at": 0,
- "organization": {
- "object": "organization",
- "id": "string",
- "name": "string",
- "slug": "string",
- "members_count": 0,
- "max_allowed_memberships": 0,
- "public_metadata": { },
- "private_metadata": { },
- "created_by": "string",
- "created_at": 0,
- "updated_at": 0
}, - "public_user_data": {
- "user_id": "string",
- "first_name": "string",
- "last_name": "string",
- "profile_image_url": "string",
- "image_url": "string",
- "identifier": "string"
}
}
], - "total_count": 0
}
Check that the user's password matches the supplied input. Useful for custom auth flows and re-verification.
The provided password was correct.
The user does not have a password set.
The user does not exist.
The provided password was incorrect.
Request was not successful
{- "password": "string"
}
{- "verified": true
}
Verify that the provided TOTP or backup code is valid for the user. Verifying a backup code will result it in being consumed (i.e. it will become invalid). Useful for custom auth flows and re-verification.
The provided TOTP or backup code was correct.
The user does not have TOTP configured for their account.
The user does not exist.
The provided TOTP or backup code was incorrect.
Request was not successful
{- "code": "string"
}
{- "verified": true,
- "code_type": "totp"
}
Disable all of a user's MFA methods (e.g. OTP sent via SMS, TOTP on their authenticator app) at once.
Successful operation.
Resource not found
Request was not successful
{- "user_id": "string"
}