createUser()

Creates a new user. This function should only be called on a server. Never expose your service_role key in the browser.

1const { data, error } = await supabase.auth.admin.createUser({
2  email: 'user@email.com',
3  password: 'password',
4  user_metadata: { name: 'Yoda' }
5})

Parameters#

  • AdminUserAttributesrequired
    object

    No description provided.

      Properties
    • app_metadataoptional
      object

      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_durationoptional
      string

      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.

    • dataoptional
      object

      A custom data object to store the user's metadata. This maps to the auth.users.user_metadata column.

      The data should be a JSON object that includes user-specific info, such as their first and last name.

    • emailoptional
      string

      The user's email.

    • email_confirmoptional
      boolean

      Confirms the user's email address if set to true.

      Only a service role can modify.

    • passwordoptional
      string

      The user's password.

    • phoneoptional
      string

      The user's phone.

    • phone_confirmoptional
      boolean

      Confirms the user's phone number if set to true.

      Only a service role can modify.

    • user_metadataoptional
      object

      A custom data object to store the user's metadata. This maps to the auth.users.user_metadata column.

      Only a service role can modify.

      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.

Notes#

  • To confirm the user's email address or phone number, set email_confirm or phone_confirm to true. Both arguments default to false.

Examples#

Create a new user with custom user metadata#

1const { data, error } = await supabase.auth.admin.createUser({
2  email: 'user@email.com',
3  password: 'password',
4  user_metadata: { name: 'Yoda' }
5})

Auto-confirm the user's email#

1const { data, error } = await supabase.auth.admin.createUser({
2  email: 'user@email.com',
3  email_confirm: true
4})

Auto-confirm the user's phone number#

1const { data, error } = await supabase.auth.admin.createUser({
2  phone: '1234567890',
3  phone_confirm: true
4})