Rizerve.io API Documentation

Build With Rizerve

The Rizerve API is open to developers, channel managers, property management systems, and automation platforms. If you have built something that connects to Rizerve, a Make scenario, a Zapier integration, a custom dashboard, or a full channel manager integration, we want to hear about it and help you share it with the Rizerve community of hosts.

To get started, generate your API key from your Rizerve account under Account → API Access, read through the documentation above, and start building. If you run into anything that isn’t covered here or want to discuss a deeper integration, reach out directly at [your email] and we will get back to you personally.

The Rizerve API allows external applications, channel managers, property management systems, and automation platforms to read and write bookings and calendar availability for vacation rental properties.

Base URL

https://hlksgjderfsvlmkntrvr.supabase.co/functions/v1/property-api

API Version: v1


Authentication

Every request must include your API key in the request header:

X-API-Key: rz_your_api_key_here

API keys are account-scoped and grant access to all properties you own. Generate and manage your keys from Account → API Access in your Rizerve dashboard.

Security rules:

  • Never expose your API key in client-side code
  • Never commit your API key to a public repository
  • Rotate your key immediately if you suspect it has been compromised

Request Format

All request bodies must be JSON. Set the Content-Type header accordingly:

Content-Type: application/json

Date fields use the format YYYY-MM-DD. Timestamp fields use ISO 8601 format YYYY-MM-DDTHH:MM:SSZ.


Response Format

All responses return JSON. Successful responses return a 2xx status code. Failed responses return a 4xx or 5xx status code with a consistent error object.

Success response example:

json

{
  "bookings": [...],
  "count": 6
}

Error response format:

json

{
  "error": {
    "code": "error_code",
    "message": "A human-readable description of the error."
  }
}
```

---

## Error Codes

| Code | HTTP Status | Description |
|---|---|---|
| `invalid_api_key` | 401 | API key is missing, invalid, revoked, or expired |
| `insufficient_permissions` | 403 | API key lacks the required permission |
| `property_not_found` | 404 | Property does not exist or does not belong to your account |
| `booking_not_found` | 404 | Booking does not exist or does not belong to your account |
| `invalid_dates` | 400 | Date range is invalid. Check-out must be after check-in |
| `dates_unavailable` | 409 | Requested dates conflict with an existing booking or block |
| `below_minimum_stay` | 400 | Requested stay is shorter than the property's minimum stay |
| `property_not_published` | 400 | Property is not published and cannot accept bookings |
| `invalid_status` | 400 | Status value is not valid for this operation |
| `validation_error` | 400 | One or more request fields failed validation |
| `rate_limit_exceeded` | 429 | You have exceeded 100 requests per minute for this key |

---

## Rate Limiting

The API allows **100 requests per minute** per API key. If you exceed this limit the API returns a `429` response. Contact support if you need higher limits for a channel manager integration.

---

## Endpoints

### Bookings

---

#### List Bookings

Returns a list of bookings for your account, optionally filtered by property, status, and date range.
```
GET /bookings

Query parameters:

ParameterTypeRequiredDescription
property_idstringNoFilter to a specific property. Omit to return bookings across all properties.
statusstringNoFilter by status. Accepted values: pending, confirmed, cancelled.
fromdateNoReturn bookings with check-in on or after this date. Format: YYYY-MM-DD.
todateNoReturn bookings with check-in on or before this date. Format: YYYY-MM-DD.
limitintegerNoMaximum number of bookings to return. Default 50, maximum 200.

Example request:

bash

curl -X GET \
  "https://hlksgjderfsvlmkntrvr.supabase.co/functions/v1/property-api/bookings?status=confirmed&from=2026-06-01&to=2026-06-30" \
  -H "X-API-Key: rz_your_api_key_here"

Example response: 200 OK

json

{
  "bookings": [
    {
      "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
      "property_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
      "property_name": "Malibu Beach House",
      "guest_name": "Sarah Johnson",
      "guest_email": "sarah@example.com",
      "guest_phone": "+1 555 000 0000",
      "check_in": "2026-06-05",
      "check_out": "2026-06-10",
      "guests": 2,
      "total_price": 1400.00,
      "status": "confirmed",
      "notes": "Late check-in requested",
      "created_at": "2026-05-12T14:30:00Z",
      "updated_at": "2026-05-12T15:00:00Z"
    }
  ],
  "count": 1
}
```

---

#### Create a Booking

Creates a new booking for a property. Validates availability, minimum stay, and published status before creating.
```
POST /bookings

Request body:

FieldTypeRequiredDescription
property_idstringYesThe ID of the property to book.
guest_namestringYesFull name of the guest.
guest_emailstringYesEmail address of the guest.
guest_phonestringNoPhone number of the guest.
check_indateYesCheck-in date. Format: YYYY-MM-DD.
check_outdateYesCheck-out date. Format: YYYY-MM-DD.
guestsintegerYesNumber of guests.
notesstringNoOptional notes or special requests.

Example request:

bash

curl -X POST \
  "https://hlksgjderfsvlmkntrvr.supabase.co/functions/v1/property-api/bookings" \
  -H "X-API-Key: rz_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "property_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "guest_name": "Sarah Johnson",
    "guest_email": "sarah@example.com",
    "guest_phone": "+1 555 000 0000",
    "check_in": "2026-06-05",
    "check_out": "2026-06-10",
    "guests": 2,
    "notes": "Late check-in requested"
  }'

Example response: 201 Created

json

{
  "booking": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "property_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "property_name": "Malibu Beach House",
    "guest_name": "Sarah Johnson",
    "guest_email": "sarah@example.com",
    "guest_phone": "+1 555 000 0000",
    "check_in": "2026-06-05",
    "check_out": "2026-06-10",
    "guests": 2,
    "total_price": 1400.00,
    "status": "pending",
    "notes": "Late check-in requested",
    "created_at": "2026-05-12T14:30:00Z",
    "updated_at": "2026-05-12T14:30:00Z"
  }
}
```

---

#### Update Booking Status

Updates the status of an existing booking. Used to confirm or cancel a pending booking.
```
PATCH /bookings/{id}

Path parameters:

ParameterTypeRequiredDescription
idstringYesThe ID of the booking to update.

Request body:

FieldTypeRequiredDescription
statusstringYesNew status. Accepted values: confirmed, cancelled.

Example request:

bash

curl -X PATCH \
  "https://hlksgjderfsvlmkntrvr.supabase.co/functions/v1/property-api/bookings/a1b2c3d4-e5f6-7890-abcd-ef1234567890" \
  -H "X-API-Key: rz_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{"status": "confirmed"}'

Example response: 200 OK

json

{
  "booking": {
    "id": "a1b2c3d4-e5f6-7890-abcd-ef1234567890",
    "status": "confirmed",
    "updated_at": "2026-05-12T15:00:00Z"
  }
}
```

---

### Availability

---

#### Get Availability

Returns booked and blocked dates for a property within a specified date range.
```
GET /availability

Query parameters:

ParameterTypeRequiredDescription
property_idstringYesThe property to retrieve availability for.
fromdateYesStart of the date range. Format: YYYY-MM-DD.
todateYesEnd of the date range. Format: YYYY-MM-DD.

Example request:

bash

curl -X GET \
  "https://hlksgjderfsvlmkntrvr.supabase.co/functions/v1/property-api/availability?property_id=b2c3d4e5-f6a7-8901-bcde-f12345678901&from=2026-06-01&to=2026-06-30" \
  -H "X-API-Key: rz_your_api_key_here"

Example response: 200 OK

json

{
  "property_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
  "from": "2026-06-01",
  "to": "2026-06-30",
  "booked_dates": [
    "2026-06-05",
    "2026-06-06",
    "2026-06-07",
    "2026-06-08",
    "2026-06-09"
  ],
  "blocked_dates": [
    "2026-06-22",
    "2026-06-23",
    "2026-06-24"
  ]
}
```

---

#### Block Dates

Manually blocks a date range on a property calendar. Blocked dates cannot be booked and appear as unavailable on the booking page.
```
POST /availability/block

Request body:

FieldTypeRequiredDescription
property_idstringYesThe property to block dates on.
fromdateYesFirst date to block. Format: YYYY-MM-DD.
todateYesLast date to block. Format: YYYY-MM-DD.
reasonstringNoOptional note visible only in your dashboard. e.g. Maintenance, Owner stay.

Example request:

bash

curl -X POST \
  "https://hlksgjderfsvlmkntrvr.supabase.co/functions/v1/property-api/availability/block" \
  -H "X-API-Key: rz_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "property_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "from": "2026-06-22",
    "to": "2026-06-25",
    "reason": "Maintenance"
  }'

Example response: 201 Created

json

{
  "blocked": {
    "property_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "from": "2026-06-22",
    "to": "2026-06-25",
    "reason": "Maintenance",
    "created_at": "2026-05-12T14:30:00Z"
  }
}
```

---

#### Unblock Dates

Removes a manual block from a property calendar. Only removes blocks created manually or via the API. Does not affect dates blocked by confirmed bookings.
```
DELETE /availability/block

Request body:

FieldTypeRequiredDescription
property_idstringYesThe property to unblock dates on.
fromdateYesFirst date to unblock. Format: YYYY-MM-DD.
todateYesLast date to unblock. Format: YYYY-MM-DD.

Example request:

bash

curl -X DELETE \
  "https://hlksgjderfsvlmkntrvr.supabase.co/functions/v1/property-api/availability/block" \
  -H "X-API-Key: rz_your_api_key_here" \
  -H "Content-Type: application/json" \
  -d '{
    "property_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "from": "2026-06-22",
    "to": "2026-06-25"
  }'

Example response: 200 OK

json

{
  "unblocked": {
    "property_id": "b2c3d4e5-f6a7-8901-bcde-f12345678901",
    "from": "2026-06-22",
    "to": "2026-06-25"
  }
}

API Key Management

Keys are managed from Account → API Access in your Rizerve dashboard.

ActionDescription
GenerateCreates a new key shown once. Only the prefix is stored and displayed after this point. Copy it immediately.
RotateGenerates a new key. The old key remains active for 24 hours giving you time to update integrations before it expires.
RevokeImmediately invalidates a key with no grace period. Use when a key is compromised.

Changelog

v1.0 — Initial release. Bookings and availability endpoints. Per-account API keys with rotation and revocation.

Acceptable Use

The Rizerve API is provided for the purpose of building integrations, automations, and tools that enhance the direct booking experience for vacation rental hosts and their guests. By accessing the API you agree to use it only for lawful purposes and in a manner consistent with Rizerve’s terms of service.

You may not use the API to scrape or harvest data at scale, interfere with the availability or integrity of the platform, access properties or bookings that do not belong to your account, or build tools that facilitate spam, fraud, or abuse of any kind. Rizerve reserves the right to revoke API access for any account found to be in violation of these terms.

Scroll to Top