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:
| Parameter | Type | Required | Description |
|---|---|---|---|
property_id | string | No | Filter to a specific property. Omit to return bookings across all properties. |
status | string | No | Filter by status. Accepted values: pending, confirmed, cancelled. |
from | date | No | Return bookings with check-in on or after this date. Format: YYYY-MM-DD. |
to | date | No | Return bookings with check-in on or before this date. Format: YYYY-MM-DD. |
limit | integer | No | Maximum 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:
| Field | Type | Required | Description |
|---|---|---|---|
property_id | string | Yes | The ID of the property to book. |
guest_name | string | Yes | Full name of the guest. |
guest_email | string | Yes | Email address of the guest. |
guest_phone | string | No | Phone number of the guest. |
check_in | date | Yes | Check-in date. Format: YYYY-MM-DD. |
check_out | date | Yes | Check-out date. Format: YYYY-MM-DD. |
guests | integer | Yes | Number of guests. |
notes | string | No | Optional 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
id | string | Yes | The ID of the booking to update. |
Request body:
| Field | Type | Required | Description |
|---|---|---|---|
status | string | Yes | New 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:
| Parameter | Type | Required | Description |
|---|---|---|---|
property_id | string | Yes | The property to retrieve availability for. |
from | date | Yes | Start of the date range. Format: YYYY-MM-DD. |
to | date | Yes | End 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:
| Field | Type | Required | Description |
|---|---|---|---|
property_id | string | Yes | The property to block dates on. |
from | date | Yes | First date to block. Format: YYYY-MM-DD. |
to | date | Yes | Last date to block. Format: YYYY-MM-DD. |
reason | string | No | Optional 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:
| Field | Type | Required | Description |
|---|---|---|---|
property_id | string | Yes | The property to unblock dates on. |
from | date | Yes | First date to unblock. Format: YYYY-MM-DD. |
to | date | Yes | Last 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.
| Action | Description |
|---|---|
| Generate | Creates a new key shown once. Only the prefix is stored and displayed after this point. Copy it immediately. |
| Rotate | Generates a new key. The old key remains active for 24 hours giving you time to update integrations before it expires. |
| Revoke | Immediately 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.