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

# Tenant

> Endpoints to manage tenant configuration

Endpoints to retrieve and modify tenant settings — personality, widget, security, and integrations.

## GET /tenants/{slug}

Retrieve tenant information.

**Required scope:** `settings:read`

### Request

```bash theme={null}
curl https://api.animam.ai/tenants/my-company \
  -H "Authorization: Bearer ak_your_token"
```

### Response

```json theme={null}
{
  "id": "clx1234567890",
  "slug": "my-company",
  "name": "My Company",
  "plan": "pro",
  "isActivated": true,
  "botName": "Sophie",
  "botTitle": "Customer Assistant",
  "botTone": "FRIENDLY",
  "useTutoiement": false,
  "allowEmojis": true,
  "primaryColor": "#6366f1",
  "showAiBadge": true,
  "allowedDomains": ["*.mycompany.com"],
  "contentPolicy": "SFW",
  "conversationsUsed": 42,
  "conversationsLimit": 2000,
  "createdAt": "2024-01-15T10:30:00Z"
}
```

## PUT /tenants/{slug}

Modify tenant settings. Send only the fields you want to update.

**Required scope:** `settings:write`

### Request

```bash theme={null}
curl -X PUT https://api.animam.ai/tenants/my-company \
  -H "Authorization: Bearer ak_your_token" \
  -H "Content-Type: application/json" \
  -d '{
    "botName": "Emma",
    "botTone": "FRIENDLY",
    "primaryColor": "#2563eb",
    "allowedDomains": ["*.mycompany.com", "localhost:3000"]
  }'
```

### Response

Returns the full updated tenant object.

## Modifiable fields

### Personality

| Field           | Type    | Description                                             |
| --------------- | ------- | ------------------------------------------------------- |
| `name`          | string  | Tenant display name                                     |
| `botName`       | string  | Bot name shown in widget header                         |
| `botTitle`      | string  | Subtitle under bot name                                 |
| `botLore`       | string  | Background story (injected in system prompt)            |
| `botTone`       | string  | `FORMAL`, `NEUTRAL`, `FRIENDLY`, `PLAYFUL`, `TECHNICAL` |
| `useTutoiement` | boolean | Use "tu" instead of "vous" (French bots)                |
| `allowEmojis`   | boolean | Allow emojis in responses                               |

### Appearance

| Field            | Type    | Description                                 |
| ---------------- | ------- | ------------------------------------------- |
| `primaryColor`   | string  | Hex color for widget UI                     |
| `secondaryColor` | string  | Secondary hex color                         |
| `showAiBadge`    | boolean | Show "AI" badge in widget                   |
| `botAvatar`      | string  | Avatar image URL                            |
| `avatarType`     | string  | `DEFAULT`, `UPLOAD`, `LIBRARY`, `GENERATED` |

### Security

| Field                | Type         | Description                                                                                                     |
| -------------------- | ------------ | --------------------------------------------------------------------------------------------------------------- |
| `allowedDomains`     | string\[]    | CORS whitelist for widget. Empty = allow all. Supports exact match, bare domain, and wildcard (`*.example.com`) |
| `contentPolicy`      | string       | `SFW_STRICT`, `SFW` (default), `MODERATE`, `UNFILTERED`                                                         |
| `visitorAuthMode`    | string\|null | `jwt`, `otp`, `all`, or `null` (disabled)                                                                       |
| `turnstileEnabled`   | boolean      | Enable Cloudflare Turnstile CAPTCHA                                                                             |
| `turnstileSiteKey`   | string       | Turnstile site key                                                                                              |
| `turnstileSecretKey` | string       | Turnstile secret key                                                                                            |

### Booking CTA

| Field               | Type    | Description                                                    |
| ------------------- | ------- | -------------------------------------------------------------- |
| `bookingCtaEnabled` | boolean | Enable booking CTA in welcome screen                           |
| `bookingCtaConfig`  | object  | CTA configuration (headline, subtitle, CTA text, office hours) |

### Status

| Field         | Type    | Description                 |
| ------------- | ------- | --------------------------- |
| `isOnboarded` | boolean | Mark onboarding as complete |

## GET /tenants/{slug}/stats

Retrieve usage statistics.

**Required scope:** `settings:read`

### Request

```bash theme={null}
curl https://api.animam.ai/tenants/my-company/stats \
  -H "Authorization: Bearer ak_your_token"
```
