Create a user
Creates a new user.
This function should only be called on a server. Never expose your service_role
key in the browser.
- To confirm the user's email address or phone number, set
email_confirm
orphone_confirm
to true. Both arguments default to false. createUser()
will not send a confirmation email to the user. You can useinviteUserByEmail()
if you want to send them an email invite instead.- If you are sure that the created user's email or phone number is legitimate and verified, you can set the
email_confirm
orphone_confirm
param totrue
.
Parameters
- attributesREQUIREDAdminUserAttributesapp_metadataOptionalobject
A custom data object to store the user's application specific metadata. This maps to the `auth.users.app_metadata` column. Only a service role can modify. The `app_metadata` should be a JSON object that includes app-specific info, such as identity providers, roles, and other access control information.
ban_durationOptionalstringDetermines how long a user is banned for. The format for the ban duration follows a strict sequence of decimal numbers with a unit suffix. Valid time units are "ns", "us" (or "µs"), "ms", "s", "m", "h". For example, some possible durations include: '300ms', '2h45m'. Setting the ban duration to 'none' lifts the ban on the user.
emailOptionalstringThe user's email.
email_confirmOptionalbooleanConfirms the user's email address if set to true. Only a service role can modify.
nonceOptionalstringThe nonce sent for reauthentication if the user's password is to be updated. Call reauthenticate() to obtain the nonce first.
passwordOptionalstringThe user's password.
phoneOptionalstringThe user's phone.
phone_confirmOptionalbooleanConfirms the user's phone number if set to true. Only a service role can modify.
user_metadataOptionalobjectA custom data object to store the user's metadata. This maps to the `auth.users.user_metadata` column. The `user_metadata` should be a JSON object that includes user-specific info, such as their first and last name. Note: When using the GoTrueAdminApi and wanting to modify a user's metadata, this attribute is used instead of UserAttributes data.
const { data, error } = await supabase.auth.admin.createUser({
email: 'user@email.com',
password: 'password',
user_metadata: { name: 'Yoda' }
})