---
title: "Register new user"
method: POST
path: "/api/auth/users"
tags: ["Client"]
---

# Register new user

`POST /api/auth/users`

Creates a new user account. When email verification is required, a delivery failure is returned as an error after the account is created. Retry delivery with POST /api/auth/email/send-verification instead of registering the same email again.

## Query parameters

- `client_type` 'web' | 'mobile' | 'desktop' | 'server'

## Request body

- object
  - `email` string, email, required
  - `password` string, required — Password meeting configured requirements (check /api/auth/email/config for current requirements)
  - `name` string
  - `redirectTo` string, uri — Used for link-based email verification. The email link always opens an InsForge backend endpoint first; after the token is verified, InsForge redirects the browser to this URL. This URL must be included in allowedRedirectUrls. Recommended: use your app's sign-in page.

## Response `200`

User created successfully

- object
  - `user` UserResponse
    - `id` string, uuid
    - `email` string, email
    - `profile` object, nullable — User profile data (name, avatar_url, and custom fields)
      - `name` string
      - `avatar_url` string, uri
    - `metadata` object, nullable — System metadata (device ID, login IP, etc.)
    - `emailVerified` boolean
    - `providers` string[]
    - `createdAt` string, date-time
    - `updatedAt` string, date-time
  - `accessToken` string, nullable — JWT authentication token (null if email verification required)
  - `csrfToken` string, nullable — CSRF token for use with refresh endpoint (web clients only, null if email verification required)
  - `refreshToken` string, nullable — Refresh token for mobile/desktop/server clients (null for web clients or if email verification required)
  - `requireEmailVerification` boolean — Whether email verification is required before login

## Other responses

- `400` — Invalid request
- `403` — Signups disabled — project has disabled new user registration
- `409` — User already exists
- `429` — User created, but verification email delivery was rate limited
- `500` — User created, but the verification email could not be sent

---

[API](https://skmtc.net/insforge/apis/insforge-authentication-api.md) · [All operations](https://skmtc.net/insforge/apis/insforge-authentication-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/insforge/insforge-authentication-api/versions/a935bb49f932/schema)
