> ## Documentation Index
> Fetch the complete documentation index at: https://docs.factrove.app/llms.txt
> Use this file to discover all available pages before exploring further.

> ## Agent Instructions
> Describe what the running code does. Do not invent hosted pricing, launch dates, or security guarantees. Share and viewer links are a configured base URL plus an artifact path. Show localhost and a placeholder origin such as https://library.example.com.

# Create an account with email and password

> Better Auth email/password sign-up. Email verification is off. Passwords are 8 to 128 characters, the same limits createAuth passes to Better Auth. This route is rate limited to 10 requests per 60 seconds per client address. The response body is Better Auth JSON, not the product `{ error: { code, message } }` envelope. A successful sign-up sets the session cookie and can return the user. It also sends one invite email to that address. A plus-address such as name+tag@example.com is valid and is stored in lower case with the plus tag kept. EMAIL_TRANSPORT selects the sender. log writes the message and does not send it. smtp uses the configured SMTP server. brevo sends POST https://api.brevo.com/v3/smtp/email. An unset transport is log. Sending failure does not roll back the account. A duplicate email does not send another message.



## OpenAPI

````yaml /api-reference/openapi.json post /api/auth/sign-up/email
openapi: 3.1.0
info:
  title: Factrove HTTP API
  version: 0.1.0
  description: >-
    Generated from `@factrove/contracts` schemas and the HTTP operation catalog.
    Product routes live under `/api/v1`. Auth and API key management live under
    `/api/auth`. Do not treat this file as hand-written. Run `pnpm docs:openapi`
    after contract or route-catalog changes.
servers:
  - url: http://localhost:3001
    description: Local development API origin
  - url: https://api.example.com
    description: Example self-hosted API origin
security: []
tags:
  - name: Health
    description: Process liveness.
  - name: Auth
    description: Sessions and API keys.
  - name: Artifacts
    description: Upload, list, rename, delete, detail, and content.
  - name: Shares
    description: Owner public-link and password controls.
  - name: Public
    description: Anonymous share detail, unlock, and HTML.
paths:
  /api/auth/sign-up/email:
    post:
      tags:
        - Auth
      summary: Create an account with email and password
      description: >-
        Better Auth email/password sign-up. Email verification is off. Passwords
        are 8 to 128 characters, the same limits createAuth passes to Better
        Auth. This route is rate limited to 10 requests per 60 seconds per
        client address. The response body is Better Auth JSON, not the product
        `{ error: { code, message } }` envelope. A successful sign-up sets the
        session cookie and can return the user. It also sends one invite email
        to that address. A plus-address such as name+tag@example.com is valid
        and is stored in lower case with the plus tag kept. EMAIL_TRANSPORT
        selects the sender. log writes the message and does not send it. smtp
        uses the configured SMTP server. brevo sends POST
        https://api.brevo.com/v3/smtp/email. An unset transport is log. Sending
        failure does not roll back the account. A duplicate email does not send
        another message.
      operationId: signUpEmail
      requestBody:
        required: true
        description: Display name, email, and password (8 to 128 characters).
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SignUpEmailRequest'
            example:
              name: Local Owner
              email: owner@example.com
              password: replace-this-password
      responses:
        '200':
          description: Account created. Better Auth JSON that includes the user.
        '400':
          description: >-
            Better Auth validation failure, such as `PASSWORD_TOO_SHORT`,
            `PASSWORD_TOO_LONG`, or `INVALID_EMAIL`.
        '422':
          description: >-
            The email is already registered. Better Auth
            `USER_ALREADY_EXISTS_USE_ANOTHER_EMAIL`.
        '429':
          description: Too many sign-up attempts from this client address.
      security: []
components:
  schemas:
    SignUpEmailRequest:
      type: object
      properties:
        name:
          type: string
        email:
          type: string
        password:
          type: string
          minLength: 8
          maxLength: 128
      required:
        - name
        - email
        - password
      additionalProperties: false

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.