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

# What are Tenants in LaraCopilot?

> Tenants are isolated customer accounts in LaraCopilot, each with their own extensions, DID numbers, queues, billing, and settings.

In LaraCopilot, a **tenant** is a fully isolated customer account. Every resource in the platform — extensions, DID numbers, call queues, CDRs, rates, and CRM contacts — belongs to exactly one tenant. This hard boundary means one tenant's data is never visible to another, making LaraCopilot safe to run as a shared multi-tenant deployment without additional partitioning work on your part.

## Key fields

| Field            | Type    | Description                                                         |
| ---------------- | ------- | ------------------------------------------------------------------- |
| `name`           | string  | Human-readable display name for the tenant.                         |
| `slug`           | string  | URL-safe unique identifier. Must be unique across all tenants.      |
| `domain`         | string  | The tenant's dedicated hostname. Must be unique across all tenants. |
| `status`         | string  | Lifecycle state of the tenant (e.g. `active`, `suspended`).         |
| `timezone`       | string  | Default timezone applied to CDRs and reporting for this tenant.     |
| `max_extensions` | integer | Hard cap on the number of extensions this tenant may provision.     |
| `settings`       | array   | Freeform JSON array of tenant-level configuration overrides.        |

## Resource relationships

A tenant acts as the root node for every billable or operational resource in LaraCopilot:

<CardGroup cols={2}>
  <Card title="Extensions" icon="phone" href="/concepts/extensions">
    SIP endpoints that agents and users register devices against.
  </Card>

  <Card title="DID Numbers" icon="hash" href="/concepts/dids">
    Inbound phone numbers that route calls into the tenant.
  </Card>

  <Card title="Call Queues" icon="list" href="/concepts/queues">
    Agent pools that distribute inbound calls using configurable strategies.
  </Card>

  <Card title="CDRs & Rates" icon="file-text">
    Per-call detail records and billing rates scoped to the tenant.
  </Card>
</CardGroup>

## API examples

### Create a tenant

<CodeGroup>
  ```bash cURL theme={null}
  curl -X POST https://your-instance/api/tenants \
    -H "Content-Type: application/json" \
    -d '{
      "name": "Acme Corp",
      "slug": "acme-corp",
      "domain": "acme.example.com",
      "status": "active",
      "timezone": "America/New_York",
      "max_extensions": 50,
      "settings": []
    }'
  ```

  ```json Response (201) theme={null}
  {
    "message": "Tenant created successfully.",
    "data": {
      "id": 1,
      "name": "Acme Corp",
      "slug": "acme-corp",
      "domain": "acme.example.com",
      "status": "active",
      "timezone": "America/New_York",
      "max_extensions": 50,
      "settings": [],
      "created_at": "2026-04-22T10:00:00Z",
      "updated_at": "2026-04-22T10:00:00Z"
    }
  }
  ```
</CodeGroup>

### Retrieve a tenant

<CodeGroup>
  ```bash cURL theme={null}
  curl https://your-instance/api/tenants/1
  ```

  ```json Response (200) theme={null}
  {
    "message": "Tenant loaded successfully.",
    "data": {
      "id": 1,
      "name": "Acme Corp",
      "slug": "acme-corp",
      "domain": "acme.example.com",
      "status": "active",
      "timezone": "America/New_York",
      "max_extensions": 50,
      "settings": [],
      "extensions": [],
      "dids": [],
      "queues": [],
      "rates": []
    }
  }
  ```
</CodeGroup>

<Tip>
  Set `max_extensions` conservatively when provisioning a new tenant. You can raise the limit at any time via a `PUT /api/tenants/{id}` request, but the platform will reject new extension registrations once the cap is reached — preventing runaway usage on shared infrastructure.
</Tip>
