Rentager

Developers · v1

Rentager documentation — API & integrations

Connect OTAs, calendars, and your own tools to the vacation rental CRM. REST API, webhooks, and step-by-step integration guides.

Getting started

The Rentager API lets you read and write properties, reservations, guests, and availability in the vacation rental CRM. Production base URL:

https://api.rentager.com/v1

Sandbox (test data, no impact on live Airbnb/Booking calendars):

https://sandbox.api.rentager.com/v1
  1. Create a Rentager account and verify your email.
  2. In Dashboard → Integrations → API keys, generate a secret key.
  3. Connect at least one OTA from the integrations catalog (Airbnb, Booking.com, Vrbo…).
  4. Make your first authenticated call to GET /properties.

Authentication

All requests use a Bearer token. Never expose the key in guest-facing frontends.

curl https://api.rentager.com/v1/properties \
  -H "Authorization: Bearer rtg_live_••••••••" \
  -H "Content-Type: application/json"
  • rtg_live_* production
  • rtg_test_* — sandbox

Connect OTAs (Airbnb, Booking.com, Vrbo)

OTA connections are managed in the UI or via API. Recommended host flow:

Airbnb

Host OAuth → calendar, pricing, and messaging sync. 5‑min polling + reservation webhooks.

POST /integrations/airbnb/connect

Booking.com

Import listings and bidirectional availability locks to prevent double bookings.

POST /integrations/booking/connect

Vrbo / iCal

When no native API exists, use inbound/outbound iCal feeds (see iCal section).

POST /integrations/ical

Full connector catalog: /integrations

REST API reference

Core resources of the vacation rental management CMS. All responses are JSON.

Properties

GET    /v1/properties
GET    /v1/properties/{id}
POST   /v1/properties
PATCH  /v1/properties/{id}
DELETE /v1/properties/{id}
{
  "id": "prop_8f2a",
  "name": "Sea View Loft",
  "timezone": "Europe/Madrid",
  "channels": ["airbnb", "booking"],
  "base_price": { "amount": 14500, "currency": "EUR" },
  "status": "active"
}

Reservations

GET    /v1/reservations?property_id=prop_8f2a&from=2026-08-01
GET    /v1/reservations/{id}
POST   /v1/reservations
PATCH  /v1/reservations/{id}
{
  "id": "res_91c0",
  "property_id": "prop_8f2a",
  "check_in": "2026-09-12",
  "check_out": "2026-09-15",
  "guest_id": "gst_22",
  "channel": "airbnb",
  "status": "confirmed",
  "payout": { "amount": 31200, "currency": "EUR" }
}

Guests

GET  /v1/guests
GET  /v1/guests/{id}
POST /v1/guests/{id}/messages

Calendar / availability

GET  /v1/properties/{id}/calendar?from=2026-08-01&to=2026-08-31
PUT  /v1/properties/{id}/calendar/blocks
PATCH /v1/properties/{id}/calendar/prices

Webhooks

Subscribe to real-time events. Each payload is signed with HMAC-SHA256 in the X-Rentager-Signature header.

POST /v1/webhooks
{
  "url": "https://api.rentagermanagement.com/hooks/rentager",
  "events": [
    "reservation.created",
    "reservation.updated",
    "reservation.cancelled",
    "message.received",
    "calendar.conflict"
  ]
}

Respond with 2xx within 5s. Retries use exponential backoff (up to 8 attempts / 24h).

iCal feeds

Useful for channels without an API or as sync fallback. Each property exposes an outbound feed and accepts inbound URLs.

GET /v1/properties/{id}/ical/export.ics
POST /v1/properties/{id}/ical/import
{ "url": "https://www.airbnb.com/calendar/ical/….ics" }

Errors & rate limits

Default limit: 120 req/min per API key (burst 30). Headers: X-RateLimit-Remaining, X-RateLimit-Reset.

CodeMeaning
400Invalid payload (dates, currency, channel)
401Missing or revoked API key
409Calendar conflict / double booking prevented
429Rate limit exceeded
{
  "error": {
    "code": "calendar_conflict",
    "message": "Dates overlap an existing Airbnb block",
    "request_id": "req_0b17"
  }
}

Ready to connect your stack?

Browse the integrations catalog or contact support if you need a custom connector.