# Little Hotelier API

> Every Little Hotelier endpoint on Cotlet: inputs, JSON Schema, cURL, Python and Node.js examples and an example response for each call.

Source: https://cotlet.dev/docs/api/little-hotelier

Docs sections: [Get started](https://cotlet.dev/docs.md) · [REST API](https://cotlet.dev/docs/api.md) · [MCP](https://cotlet.dev/docs/mcp.md) · [SDKs & CLI](https://cotlet.dev/docs/sdks.md) · [Integrations](https://cotlet.dev/docs/integrations.md)

15 endpoints for Little Hotelier. Each one is a POST with a JSON body, called with your API key.

- Base URL: `https://cotlet.dev/api/v1/little-hotelier`
- Connects with: Your own Little Hotelier account (a user who can open Front Desk, Channel Manager and Insights for the tools you use)
- Integration page: https://cotlet.dev/integrations/little-hotelier-api-mcp-server

## Endpoints

| Endpoint | Access | Description |
|---|---|---|
| `list_reservations` | read | Reservations with status, source, guest, occupants, dates, room, total and outstanding amount. |
| `get_reservation` | read | One reservation: stay, room, rate, guests, guest comments, notes, invoice and payments. No card numbers. |
| `list_room_rates` | read | Room types, their rooms and room rates, with which rates are derived. |
| `get_inventory` | read | The inventory grid for a date range: availability, rates and restrictions per room rate. |
| `get_statistics` | read | Statistics report: room nights, occupancy, ADR, RevPAR, length of stay, lead time and cancellations. |
| `get_booking_performance` | read | Revenue, reservations, room nights, ADR and cancellations, broken down by channel. |
| `export_report` | read | A Front Desk report for up to 365 days as rows, the same data as its CSV export. |
| `list_conversations` | read | Messaging hub conversations with the linked reservation, channel and last message. |
| `create_reservation` | write | New Front Desk reservation. No card details. |
| `update_reservation_status` | write | Check a guest in or out, or set a reservation back to Confirmed. |
| `cancel_reservation` | write | Cancel a Confirmed Front Desk reservation. Permanent; OTA bookings must be cancelled on the channel. |
| `update_rates` | write | Set the base rate of room rates over a date range, like Bulk Update. Goes live on your channels. |
| `update_restrictions` | write | Set min or max stay, closed to arrival or departure, or close channels or your website. |
| `create_room_closure` | write | Close rooms for a date range; availability sent to channels and the booking engine drops. |
| `reply_to_guest` | write | Send a reply in a Messaging hub conversation. WhatsApp free-form only within 24 hours of the guest message. |

## List reservations

`POST https://cotlet.dev/api/v1/little-hotelier/list_reservations`

Access: read.

Searches reservations like the Reservations screen. Date type can be check-in, check-out or booked on, and status can be confirmed, checked in, checked out or cancelled. Each row has status, guest name, reference, source, occupants, dates, room, total and outstanding amount. Reservations without an assigned room show no room. Pass next_cursor back as cursor for the next page.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `date_type` | enum | no | check_in, check_out or booked. Default: check_in. |
| `from` | date | no | Start of the date range. |
| `to` | date | no | End of the date range. |
| `status` | enum | no | all, confirmed, checked_in, checked_out or cancelled. Default: all. |
| `guest_last_name` | string | no | Guest last name. |
| `reservation_id` | string | no | Find one reservation by its booking reference. |
| `limit` | integer | no | 1 to 200. Default: 50. |
| `cursor` | string | no | Next page cursor. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/list_reservations \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"date_type":"check_in","from":"2026-10-12","to":"2026-10-13","status":"confirmed"}'
```

**Python**

```python
result = client.call("little-hotelier", "list_reservations", {"date_type":"check_in","from":"2026-10-12","to":"2026-10-13","status":"confirmed"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'list_reservations', {"date_type":"check_in","from":"2026-10-12","to":"2026-10-13","status":"confirmed"});
```

**CLI**

```bash
cotlet call little-hotelier list_reservations --data '{"date_type":"check_in","from":"2026-10-12","to":"2026-10-13","status":"confirmed"}'
```

### Example response

```json
{
  "reservations": [
    {
      "reservation_id": "LH48213",
      "status": "confirmed",
      "guest": "Marta Kowal",
      "source": "Booking.com",
      "occupants": "2 adults",
      "check_in": "2026-10-12",
      "check_out": "2026-10-14",
      "booked": "2026-09-02",
      "room": "Double 3",
      "total": "240.00",
      "outstanding": "240.00",
      "currency": "EUR"
    },
    {
      "reservation_id": "LH48230",
      "status": "confirmed",
      "guest": "Liam Byrne",
      "source": "Direct Booking",
      "occupants": "1 adult",
      "check_in": "2026-10-12",
      "check_out": "2026-10-13",
      "booked": "2026-10-05",
      "room": null,
      "total": "95.00",
      "outstanding": "0.00",
      "currency": "EUR"
    }
  ],
  "next_cursor": null
}
```

## Get reservation

`POST https://cotlet.dev/api/v1/little-hotelier/get_reservation`

Access: read.

Returns one reservation with stay dates, room and rate, occupants, guest comments, internal notes, invoice lines and recorded payments. Card numbers are never returned. Use it after list_reservations when you need the detail behind one outstanding amount.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `reservation_id` | string | yes | Reservation ID from list_reservations, e.g. LH12345. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/get_reservation \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reservation_id":"reservation_8c41d2"}'
```

**Python**

```python
result = client.call("little-hotelier", "get_reservation", {"reservation_id":"reservation_8c41d2"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'get_reservation', {"reservation_id":"reservation_8c41d2"});
```

**CLI**

```bash
cotlet call little-hotelier get_reservation --data '{"reservation_id":"reservation_8c41d2"}'
```

### Example response

```json
{
  "reservation_id": "LH48213",
  "status": "confirmed",
  "source": "Booking.com",
  "guest": {
    "name": "Marta Kowal",
    "email": "marta@example.com",
    "arrival_time": "18:00"
  },
  "stay": {
    "check_in": "2026-10-12",
    "check_out": "2026-10-14",
    "nights": 2,
    "adults": 2,
    "children": 0
  },
  "room": "Double 3",
  "room_rate": "Double Room, Standard Rate",
  "guest_comments": "Late arrival, around 18:00.",
  "notes": [],
  "invoice": {
    "lines": [
      {
        "description": "Double Room, 2 nights",
        "amount": "240.00"
      }
    ],
    "total": "240.00",
    "paid": "0.00",
    "outstanding": "240.00",
    "currency": "EUR"
  },
  "payments": []
}
```

## List room rates

`POST https://cotlet.dev/api/v1/little-hotelier/list_room_rates`

Access: read.

Returns your room types with their rooms and room rates. Each rate says whether it is derived from another rate, because derived rates cannot be edited directly. Use the IDs it returns in get_inventory, update_rates, update_restrictions and create_room_closure.

### Parameters

No parameters.

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/list_room_rates \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

**Python**

```python
result = client.call("little-hotelier", "list_room_rates")
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'list_room_rates');
```

**CLI**

```bash
cotlet call little-hotelier list_room_rates
```

### Example response

```json
{
  "room_types": [
    {
      "room_type": "Double Room",
      "rooms": [
        {
          "room_id": "rm_3",
          "name": "Double 3"
        },
        {
          "room_id": "rm_4",
          "name": "Double 4"
        }
      ],
      "room_rates": [
        {
          "room_rate_id": "rr_20417",
          "name": "Standard Rate",
          "derived_from": null
        },
        {
          "room_rate_id": "rr_20418",
          "name": "Non-refundable",
          "derived_from": "rr_20417"
        }
      ]
    }
  ]
}
```

## Get inventory

`POST https://cotlet.dev/api/v1/little-hotelier/get_inventory`

Access: read.

Returns the inventory grid for a date range: availability, rate, min and max stay, CTA, CTD and whether channels are closed, one row per room rate and date. Availability is calculated by Little Hotelier from your rooms, bookings and closures. Read it before update_rates to see what will change.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `room_rate_ids` | string[] | no | Only these room rates. Default: all. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/get_inventory \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-10-01","to":"2026-10-01"}'
```

**Python**

```python
result = client.call("little-hotelier", "get_inventory", {"from":"2026-10-01","to":"2026-10-01"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'get_inventory', {"from":"2026-10-01","to":"2026-10-01"});
```

**CLI**

```bash
cotlet call little-hotelier get_inventory --data '{"from":"2026-10-01","to":"2026-10-01"}'
```

### Example response

```json
{
  "room_rates": [
    {
      "room_rate_id": "rr_20417",
      "name": "Double Room, Standard Rate",
      "days": [
        {
          "date": "2026-12-04",
          "available": 2,
          "rate": "120.00",
          "min_stay": 1,
          "max_stay": null,
          "cta": false,
          "ctd": false,
          "channels_closed": false
        },
        {
          "date": "2026-12-05",
          "available": 1,
          "rate": "120.00",
          "min_stay": 1,
          "max_stay": null,
          "cta": false,
          "ctd": false,
          "channels_closed": false
        }
      ]
    }
  ],
  "currency": "EUR"
}
```

## Get statistics

`POST https://cotlet.dev/api/v1/little-hotelier/get_statistics`

Access: read.

Runs the Front Desk Statistics report for a date range. It returns total, closed, occupied and unoccupied room nights, occupancy, length of stay, lead time, average revenue per booking, ADR, RevPAR and the value of cancelled reservations. Occupancy, RevPAR and the room night counts exist only when searching by stay date. Closed room nights are taken out of the occupancy base.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `search_by` | enum | no | stay_date or booked_on. Default: stay_date. |
| `include_tax` | boolean | no | Include tax from taxable service charges in revenue. Default: false. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/get_statistics \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-10-01","to":"2026-10-01"}'
```

**Python**

```python
result = client.call("little-hotelier", "get_statistics", {"from":"2026-10-01","to":"2026-10-01"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'get_statistics', {"from":"2026-10-01","to":"2026-10-01"});
```

**CLI**

```bash
cotlet call little-hotelier get_statistics --data '{"from":"2026-10-01","to":"2026-10-01"}'
```

### Example response

```json
{
  "from": "2026-09-01",
  "to": "2026-09-30",
  "search_by": "stay_date",
  "include_tax": false,
  "currency": "EUR",
  "total_room_nights": 240,
  "closed_room_nights": 7,
  "occupied_room_nights": 160,
  "unoccupied_room_nights": 73,
  "occupancy_pct": 68.7,
  "length_of_stay": 2.5,
  "lead_time_days": 21,
  "average_revenue_per_booking": "275.00",
  "adr": "110.00",
  "revpar": "75.54",
  "cancelled_value": "420.00"
}
```

## Get booking performance

`POST https://cotlet.dev/api/v1/little-hotelier/get_booking_performance`

Access: read.

Reads the Insights Booking performance report. It returns reservations after cancellations, room nights, ADR, average length of stay, lead time and cancelled reservations, with room revenue and room nights per channel, including your booking engine. Some channels record no revenue on a reservation: those count toward room nights but not ADR. Multi-currency bookings are converted to your default currency.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `date_basis` | enum | no | booked_on or stay_date. Default: booked_on. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/get_booking_performance \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"from":"2026-10-01","to":"2026-10-01"}'
```

**Python**

```python
result = client.call("little-hotelier", "get_booking_performance", {"from":"2026-10-01","to":"2026-10-01"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'get_booking_performance', {"from":"2026-10-01","to":"2026-10-01"});
```

**CLI**

```bash
cotlet call little-hotelier get_booking_performance --data '{"from":"2026-10-01","to":"2026-10-01"}'
```

### Example response

```json
{
  "from": "2026-09-01",
  "to": "2026-09-30",
  "date_basis": "booked_on",
  "currency": "EUR",
  "reservations": 64,
  "room_nights": 160,
  "adr": "110.00",
  "avg_length_of_stay": 2.5,
  "avg_lead_time_days": 21,
  "cancelled_reservations": 3,
  "channels": [
    {
      "channel": "Booking.com",
      "reservations": 32,
      "room_nights": 80,
      "room_revenue": "8800.00"
    },
    {
      "channel": "Direct Booking",
      "reservations": 19,
      "room_nights": 48,
      "room_revenue": "5280.00"
    },
    {
      "channel": "Airbnb",
      "reservations": 13,
      "room_nights": 32,
      "room_revenue": "3520.00"
    }
  ]
}
```

## Export report

`POST https://cotlet.dev/api/v1/little-hotelier/export_report`

Access: read.

Returns a Front Desk report as rows, the same data as the report's CSV export. A single report cannot span more than 365 days. Use get_statistics for the Statistics report.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `report` | enum | yes | check_in, payments, extras, housekeeping, daily_transactions or guests. |
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/export_report \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"report":"check_in","from":"2026-10-01","to":"2026-10-01"}'
```

**Python**

```python
result = client.call("little-hotelier", "export_report", {"report":"check_in","from":"2026-10-01","to":"2026-10-01"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'export_report', {"report":"check_in","from":"2026-10-01","to":"2026-10-01"});
```

**CLI**

```bash
cotlet call little-hotelier export_report --data '{"report":"check_in","from":"2026-10-01","to":"2026-10-01"}'
```

### Example response

```json
{
  "report": "daily_transactions",
  "from": "2026-10-01",
  "to": "2026-10-07",
  "currency": "EUR",
  "rows": [
    {
      "date": "2026-10-05",
      "reservation_id": "LH48230",
      "description": "Deposit",
      "amount": "30.00"
    },
    {
      "date": "2026-10-06",
      "reservation_id": "LH48199",
      "description": "Breakfast extra",
      "amount": "18.00"
    }
  ]
}
```

## List conversations

`POST https://cotlet.dev/api/v1/little-hotelier/list_conversations`

Access: read.

Lists Messaging hub conversations, with the guest, the linked reservation, the channel and the last message. WhatsApp, Airbnb and Booking.com conversations are listed. Each row says whether a free-form reply is possible now: WhatsApp allows it within 24 hours of the guest's last message.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `channel` | enum | no | whatsapp, airbnb or booking_com. Default: all. |
| `limit` | integer | no | 1 to 100. Default: 20. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/list_conversations \
  -H "Authorization: Bearer $COTLET_API_KEY"
```

**Python**

```python
result = client.call("little-hotelier", "list_conversations")
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'list_conversations');
```

**CLI**

```bash
cotlet call little-hotelier list_conversations
```

### Example response

```json
{
  "conversations": [
    {
      "conversation_id": "cv_5521",
      "channel": "whatsapp",
      "guest": "Marta Kowal",
      "reservation_id": "LH48213",
      "last_message": "Can we check in late, around 21:30?",
      "last_message_at": "2026-10-11T08:12:00Z",
      "free_form_reply_open": true
    }
  ]
}
```

## Create reservation

`POST https://cotlet.dev/api/v1/little-hotelier/create_reservation`

Access: write. Confirm: waits for the user's OK before it runs.

Creates a Front Desk reservation with a booking reference starting with LH. It holds the room and updates availability on your connected channels. Without room_id the booking is unallocated but still reduces availability. Little Hotelier does not email a confirmation for manual reservations, and neither does this tool. Card details are not accepted. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `check_in` | date | yes | Arrival date. |
| `check_out` | date | yes | Departure date. |
| `room_rate_id` | string | yes | Room rate ID from list_room_rates. |
| `guest` | object | yes | first_name, last_name, and optional email, phone, arrival_time. |
| `adults` | integer | yes | Number of adults. |
| `children` | integer | no | Number of children. Default: 0. |
| `room_id` | string | no | Assign a specific room. Default: unallocated. |
| `guest_comments` | string | no | Guest requests, shown on the confirmation email. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/create_reservation \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"check_in":"2026-10-01","check_out":"2026-10-01","room_rate_id":"room_rate_8c41d2","guest":"guest","adults":1}'
```

**Python**

```python
result = client.call("little-hotelier", "create_reservation", {"check_in":"2026-10-01","check_out":"2026-10-01","room_rate_id":"room_rate_8c41d2","guest":"guest","adults":1})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'create_reservation', {"check_in":"2026-10-01","check_out":"2026-10-01","room_rate_id":"room_rate_8c41d2","guest":"guest","adults":1});
```

**CLI**

```bash
cotlet call little-hotelier create_reservation --data '{"check_in":"2026-10-01","check_out":"2026-10-01","room_rate_id":"room_rate_8c41d2","guest":"guest","adults":1}'
```

### Example response

```json
{
  "reservation_id": "LH48311",
  "status": "confirmed",
  "room": null,
  "check_in": "2026-11-20",
  "check_out": "2026-11-22",
  "total": "240.00",
  "currency": "EUR"
}
```

## Update reservation status

`POST https://cotlet.dev/api/v1/little-hotelier/update_reservation_status`

Access: write.

Sets a reservation to confirmed, checked_in or checked_out, like the status drop-down on the reservation. Checking out marks the room as needing cleaning and bookable again. It reaches no guest and one more call sets the status back, so it runs without asking first. Each reservation is changed on its own.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `reservation_id` | string | yes | Reservation ID from list_reservations, e.g. LH12345. |
| `status` | enum | yes | confirmed, checked_in or checked_out. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/update_reservation_status \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reservation_id":"reservation_8c41d2","status":"confirmed"}'
```

**Python**

```python
result = client.call("little-hotelier", "update_reservation_status", {"reservation_id":"reservation_8c41d2","status":"confirmed"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'update_reservation_status', {"reservation_id":"reservation_8c41d2","status":"confirmed"});
```

**CLI**

```bash
cotlet call little-hotelier update_reservation_status --data '{"reservation_id":"reservation_8c41d2","status":"confirmed"}'
```

### Example response

```json
{
  "reservation_id": "LH48213",
  "status": "checked_in"
}
```

## Cancel reservation

`POST https://cotlet.dev/api/v1/little-hotelier/cancel_reservation`

Access: write. Confirm: waits for the user's OK before it runs.

Cancels one Confirmed reservation created in Front Desk. Channel (OTA) reservations are cancelled by the guest on the channel, and Direct Booking reservations under Direct Booking, so the call fails for them. Checked-in and checked-out reservations need their status changed first. A cancellation is permanent. The room becomes available and cancelled reservations stay in the Reservations list. Check your cancellation policy for penalties first. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `reservation_id` | string | yes | Reservation ID from list_reservations, e.g. LH12345. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/cancel_reservation \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"reservation_id":"reservation_8c41d2"}'
```

**Python**

```python
result = client.call("little-hotelier", "cancel_reservation", {"reservation_id":"reservation_8c41d2"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'cancel_reservation', {"reservation_id":"reservation_8c41d2"});
```

**CLI**

```bash
cotlet call little-hotelier cancel_reservation --data '{"reservation_id":"reservation_8c41d2"}'
```

### Example response

```json
{
  "reservation_id": "LH48311",
  "status": "cancelled"
}
```

## Update rates

`POST https://cotlet.dev/api/v1/little-hotelier/update_rates`

Access: write. Confirm: waits for the user's OK before it runs.

Sets the base rate of one or more room rates over a date range, optionally on chosen weekdays, like Bulk Update in the inventory grid. Derived rates cannot be edited and come back in skipped. A rate below the property minimum does not save. Channels receive the change within their update period. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `room_rate_ids` | string[] | yes | Room rate IDs from list_room_rates. |
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `rate` | string | yes | New nightly rate, as a decimal in the property currency. |
| `days_of_week` | string[] | no | Only these weekdays (mon to sun). Default: all days. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/update_rates \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"room_rate_ids":["rr_20417"],"from":"2026-12-01","to":"2026-12-31","rate":"140.00","days_of_week":["fri","sat"]}'
```

**Python**

```python
result = client.call("little-hotelier", "update_rates", {"room_rate_ids":["rr_20417"],"from":"2026-12-01","to":"2026-12-31","rate":"140.00","days_of_week":["fri","sat"]})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'update_rates', {"room_rate_ids":["rr_20417"],"from":"2026-12-01","to":"2026-12-31","rate":"140.00","days_of_week":["fri","sat"]});
```

**CLI**

```bash
cotlet call little-hotelier update_rates --data '{"room_rate_ids":["rr_20417"],"from":"2026-12-01","to":"2026-12-31","rate":"140.00","days_of_week":["fri","sat"]}'
```

### Example response

```json
{
  "status": "updated",
  "room_rates": 1,
  "dates": 8,
  "rate": "140.00",
  "currency": "EUR",
  "skipped": []
}
```

## Update restrictions

`POST https://cotlet.dev/api/v1/little-hotelier/update_restrictions`

Access: write. Confirm: waits for the user's OK before it runs.

Sets min_stay, max_stay, cta, ctd, close_channels and close_website for room rates over a date range, like Bulk Update. close_channels stops sales on all connected channels and your booking engine but leaves room availability unchanged. A channel that does not support a restriction ignores it. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `room_rate_ids` | string[] | yes | Room rate IDs from list_room_rates. |
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `restrictions` | object | yes | Any of min_stay, max_stay (integer), cta, ctd, close_channels, close_website (boolean). |
| `days_of_week` | string[] | no | Only these weekdays (mon to sun). Default: all days. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/update_restrictions \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"room_rate_ids":["rr_20417"],"from":"2026-12-30","to":"2026-12-31","restrictions":{"min_stay":2}}'
```

**Python**

```python
result = client.call("little-hotelier", "update_restrictions", {"room_rate_ids":["rr_20417"],"from":"2026-12-30","to":"2026-12-31","restrictions":{"min_stay":2}})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'update_restrictions', {"room_rate_ids":["rr_20417"],"from":"2026-12-30","to":"2026-12-31","restrictions":{"min_stay":2}});
```

**CLI**

```bash
cotlet call little-hotelier update_restrictions --data '{"room_rate_ids":["rr_20417"],"from":"2026-12-30","to":"2026-12-31","restrictions":{"min_stay":2}}'
```

### Example response

```json
{
  "status": "updated",
  "room_rates": 1,
  "dates": 4,
  "restrictions": {
    "min_stay": 2
  },
  "skipped": []
}
```

## Create room closure

`POST https://cotlet.dev/api/v1/little-hotelier/create_room_closure`

Access: write. Confirm: waits for the user's OK before it runs.

Closes rooms or whole room types for a date range, like Room Closure on the Front Desk Calendar. The end date is included. Availability sent to channels and your booking engine drops, and the room shows in red on the Calendar. A closure is not a stop sell. It does not move guests who already booked those dates. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `room_ids` | string[] | yes | Room IDs from list_room_rates. |
| `from` | date | yes | First date of the range. |
| `to` | date | yes | Last date of the range, inclusive. |
| `description` | string | no | Reason, e.g. renovation. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/create_room_closure \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"room_ids":["room ids"],"from":"2026-10-01","to":"2026-10-01"}'
```

**Python**

```python
result = client.call("little-hotelier", "create_room_closure", {"room_ids":["room ids"],"from":"2026-10-01","to":"2026-10-01"})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'create_room_closure', {"room_ids":["room ids"],"from":"2026-10-01","to":"2026-10-01"});
```

**CLI**

```bash
cotlet call little-hotelier create_room_closure --data '{"room_ids":["room ids"],"from":"2026-10-01","to":"2026-10-01"}'
```

### Example response

```json
{
  "closure_id": "cl_7731",
  "status": "closed",
  "room_ids": [
    "rm_4"
  ],
  "from": "2026-10-12",
  "to": "2026-10-18",
  "nights": 7,
  "description": "Leak repair"
}
```

## Reply to guest

`POST https://cotlet.dev/api/v1/little-hotelier/reply_to_guest`

Access: write. Confirm: waits for the user's OK before it runs.

Sends a reply in a WhatsApp or Airbnb conversation in the Messaging hub, under your property. WhatsApp free-form replies work within 24 hours of the guest's last message; later, Little Hotelier requires a template. Airbnb free-form replies work only after a scheduled message went out and the guest replied. By default you confirm each call; you can switch that off for this tool.

### Parameters

| Name | Type | Required | Description |
|---|---|---|---|
| `conversation_id` | string | yes | Conversation ID from list_conversations. |
| `body` | string | yes | Message text. |

### Request

**cURL**

```bash
curl -X POST https://cotlet.dev/api/v1/little-hotelier/reply_to_guest \
  -H "Authorization: Bearer $COTLET_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"conversation_id":"cv_5521","body":"Yes, late check-in at 21:30 is fine. Reception is open until 22:00."}'
```

**Python**

```python
result = client.call("little-hotelier", "reply_to_guest", {"conversation_id":"cv_5521","body":"Yes, late check-in at 21:30 is fine. Reception is open until 22:00."})
```

**Node.js**

```js
const result = await cotlet.call('little-hotelier', 'reply_to_guest', {"conversation_id":"cv_5521","body":"Yes, late check-in at 21:30 is fine. Reception is open until 22:00."});
```

**CLI**

```bash
cotlet call little-hotelier reply_to_guest --data '{"conversation_id":"cv_5521","body":"Yes, late check-in at 21:30 is fine. Reception is open until 22:00."}'
```

### Example response

```json
{
  "conversation_id": "cv_5521",
  "message_id": "msg_90417",
  "status": "sent",
  "channel": "whatsapp"
}
```
