# Signup - Step 1: Start email signup process

Initiates account registration with email verification. Step 1 of multi-step signup: validates input, checks availability, sends confirmation email. Returns registration hash for tracking signup progress. Username must not be reserved, email must be unique and not blocked.

Endpoint: POST /api/v1/accounts/signup
Version: 1.0
Security: 

## Request fields (application/json):

  - `username` (string, required)
    Username of the main user
    Example: "john_smith"

  - `displayName` (string, required)
    Display Name of the main user
    Example: "John Smith"

  - `email` (string, required)
    Accounts' email
    Example: "email@gmail.com"

  - `password` (string, required)
    Account password, enforced by password policy
    Example: "PassW0rd!"

  - `inviteCode` (string,null)
    Optional invite code
    Example: "abcd-efgh-1234"

## Response 200 fields (application/json):

  - `hash` (string, required)

  - `nextStep` (string, required)
    Shows the current step in the signup flow:
       * EMAIL – We sent an email to the user with a verification code. The user must enter the code
                 to confirm their email.
       * PHONE – We sent a text to the user with a verification code. The user must enter the code
                 to confirm their phone number.
       * CAPTCHA – The user must complete a CAPTCHA verification.
       * REASON – The user must provide a reason for admins to approve their signup request.
       * ADMIN – Admins must approve or reject the user's signup request. No action is required from the user.
       * USER – The final step that creates the account. Most of the time, no action is required from the user.
                If the account can't be created because the username is already taken, the user can
                provide a different username at this step.
    Enum: "EMAIL", "PHONE", "CAPTCHA", "REASON", "ADMIN", "USER"

## Response 400 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 403 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 409 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation

## Response 500 fields (application/json):

  - `errorCode` (string, required)
    Error code

  - `message` (string, required)
    Error message

  - `docUrl` (string)
    Link to documentation


