---
title: "Create tenant"
method: POST
path: "/tenants"
tags: ["Tenants"]
---

# Create tenant

`POST /tenants`

Creates a new tenant with the caller as owner. Optionally provisions a default division in the same request. The new ids are returned in `ld-tenant` and `ld-division` response headers. Subject to per-user `owned_tenants` limit. Session-only: API keys are tenant-scoped and cannot create new tenants.

## Request body

- CreateTenant
  - `description` string
  - `division` TenantDivision
    - `description` string
    - `email` string
    - `name` string, required
    - `protected` boolean, nullable — Optional. When `true`, deletion is hardened: deleting this division will require a one-time confirmation code emailed to the tenant address (request via `PUT /tenants/{tenant_id}/request_code` with `action = "delete_division"`). Defaults to `false` when omitted.
  - `email` string
  - `name` string, required
  - `protected` boolean, nullable — Optional. When `true`, deletion is hardened: deleting this tenant will require a one-time confirmation code emailed to the tenant address (request via `PUT /tenants/{tenant_id}/request_code` with `action = "delete_tenant"`). Defaults to `false` when omitted.

## Response `201`

Tenant created. The new tenant ID is returned in the ld-tenant header

## Other responses

- `400` — Invalid name / email / division settings or owned-tenants limit reached
- `409` — Email domain already claimed

---

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