---
title: "Create a sandbox business and owner account"
method: POST
path: "/api/v1/tenants"
---

# Create a sandbox business and owner account

`POST /api/v1/tenants`

## Request

- Base URL: `http://127.0.0.1:4310`
- URL: `http://127.0.0.1:4310/api/v1/tenants`
- Auth: none required

## Request body

- TenantRequest
  - `business_name` string, required
  - `slug` string, required
  - `owner_name` string, required
  - `owner_email` string, required
  - `password` string, required
  - `timezone` string
  - `acquisition` union: Optional first-touch source: utm_source, utm_medium, utm_campaign, utm_term, utm_content, referrer_host, landing_path, first_touch_at and ref (a partner code, 3 to 20 letters and digits), plus gclid, gbraid, wbraid and fbclid kept only with ad_consent true, as an object or its JSON. Validated and capped; unusable values are dropped.
    - object
    - string
  - `plan` string: Optional plan chosen on the pricing page (solo, team or multi_site), passed to the platform sign-up event only
  - `referred_by` string: Optional partner code or the name of who introduced the business. A partner link code in acquisition.ref wins; an unknown code is kept as text and never blocks sign-up

## Response `200`

OK

- object

## Other responses

- `400`: Validation error
- `401`: Unauthenticated
- `403`: Forbidden, tenant mismatch or policy
- `404`: Not found
- `409`: Slot unavailable, invalid state or idempotency conflict
- `422`: Consent, intake or prerequisite missing

---

[API](https://skmtc.dev/scalingfirm/apis/tsf-booking-api.md) · [All operations](https://skmtc.dev/scalingfirm/apis/tsf-booking-api/llms.txt) · [OpenAPI document](https://skmtc.dev/scalingfirm/apis/tsf-booking-api/revisions/81704199cd37?raw)
