# Create user **POST /api/users** Create a new user with the given data. ## Servers - Logto endpoint address.: https://[tenant_id].logto.app (Logto endpoint address.) ## Authentication methods - O auth2 ## Parameters ### Body: application/json (object) - **primaryPhone** (string(regex)) Primary phone number for the user. It should be unique across all users. - **primaryEmail** (string(regex)) Primary email address for the user. It should be unique across all users. - **username** (string(regex)) Username for the user. It should be unique across all users. - **password** (string) Plain text password for the user. - **passwordDigest** (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 algorithm can be specified using the `passwordAlgorithm` property. For `Legacy`, pass a JSON string in the format `[algorithm, args, encryptedPassword]`, where `args` is a string array that MUST contain an `@` placeholder, which will be replaced by the plain text password at runtime. For PBKDF2 under `Legacy`, `args` is expected to be in the order `[salt, iterations, keylen, digest, '@']`. The salt supports a plain string or a `hex:`-prefixed hex string (for binary salt bytes). - **passwordAlgorithm** (string) The hash algorithm used for the password. It should be one of the supported algorithms, including `Legacy` for custom legacy expressions. Should the encryption algorithm differ from `Argon2i`, it will automatically be upgraded to `Argon2i` upon the user's next sign-in. - **name** (string) - **avatar** (string(url) | null | string(empty)) - **customData** (object) arbitrary - **profile** (object) ## Responses ### 200 User data for the newly created user. #### Body: application/json (object) - **id** (string) - **username** (string | null) - **primaryEmail** (string | null) - **primaryPhone** (string | null) - **name** (string | null) - **avatar** (string | null) - **customData** (object) arbitrary - **identities** (object) - **lastSignInAt** (number | null) - **createdAt** (number) - **updatedAt** (number) - **profile** (object) - **applicationId** (string | null) - **cimdClientId** (string | null) The identifier of the CIMD (client ID metadata document) client from the user's first consent. `null` unless the user's first consent was granted to a CIMD client. Mutually exclusive with `applicationId`. - **isSuspended** (boolean) - **hasPassword** (boolean) - **hasSecurityVerificationMethod** (boolean) - **ssoIdentities** (array[object]) - **passwordDigest** (string | null) - **passwordAlgorithm** (string | null) ### 400 Bad Request ### 401 Unauthorized ### 403 Forbidden ### 404 Not Found ### 422 Unprocessable Content [Powered by Bump.sh](https://bump.sh)