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
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.
Determines 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.
The user's email.
Confirms the user's email address if set to true. Only a service role can modify.
The nonce sent for reauthentication if the user's password is to be updated. Call reauthenticate() to obtain the nonce first.
The user's password.
The user's phone.
Confirms the user's phone number if set to true. Only a service role can modify.
The `role` claim set in the user's access token JWT. When a user signs up, this role is set to `authenticated` by default. You should only modify the `role` if you need to provision several levels of admin access that have different permissions on individual columns in your database. Setting this role to `service_role` is not recommended as it grants the user admin privileges.
A custom data object to store the user's metadata. This maps to the `auth.users.raw_user_meta_data` 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' }
})