---
title: "Register a new tenant"
method: POST
path: "/api/auth/register"
tags: ["Auth"]
---

# Register a new tenant

`POST /api/auth/register`

Create a new tenant account with a company name. This provisions an isolated database, generates an API key, and returns JWT tokens.

## Request body

- RegisterDto
  - `name` string, required — Full name of the tenant owner
  - `email` string, required — Email address
  - `password` string, required — Password (min 8 characters)
  - `companyName` string, required — Company name (used to generate slug)

## Response `201`

Tenant registered successfully.

- RegisterResponse
  - `accessToken` string, required
  - `refreshToken` string, required
  - `tenant` TenantInfoResponse, required
    - `id` string, required
    - `name` string, required
    - `slug` string, required
    - `email` string, required
    - `apiKey` string, required
    - `webhookUrl` string
    - `webhookSecret` string
    - `isActive` boolean, required
    - `settings` object
    - `lastLoginAt` string
    - `createdAt` string, required
    - `updatedAt` string, required
  - `apiKey` string, required

## Other responses

- `409` — Email already registered

---

[API](https://skmtc.net/novabilling/apis/novabilling-api.md) · [All operations](https://skmtc.net/novabilling/apis/novabilling-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/novabilling/novabilling-api/revisions/0e449a4e0dc8/schema)
