Primeros pasos
La API de Rentager te permite leer y escribir propiedades, reservas, huéspedes y disponibilidad del CRM de alquiler vacacional. Base URL de producción:
https://api.rentager.com/v1Sandbox (datos de prueba, sin afectar calendarios reales de Airbnb/Booking):
https://sandbox.api.rentager.com/v1- Crea una cuenta en Rentager y verifica el email.
- En Dashboard → Integraciones → API keys, genera una clave secreta.
- Conecta al menos una OTA desde el catálogo de integraciones (Airbnb, Booking.com, Vrbo…).
- Haz tu primera llamada autenticada a GET /properties.
Autenticación
Todas las peticiones usan Bearer token. Nunca expongas la clave en el frontend del huésped.
curl https://api.rentager.com/v1/properties \
-H "Authorization: Bearer rtg_live_••••••••" \
-H "Content-Type: application/json"- rtg_live_* — producción
- rtg_test_* — sandbox
Conectar OTAs (Airbnb, Booking.com, Vrbo)
Las conexiones OTA se gestionan en la UI o vía API. Flujo recomendado para hosts:
Airbnb
OAuth host → sync de calendario, precios y mensajes. Polling cada 5 min + webhooks de reserva.
POST /integrations/airbnb/connectBooking.com
Importa listados y bloquea disponibilidad bidireccional para evitar dobles reservas.
POST /integrations/booking/connectVrbo / iCal
Cuando no hay API nativa, usa feeds iCal de entrada/salida (ver sección iCal).
POST /integrations/icalCatálogo completo de conectores: /integrations
Referencia API REST
Recursos principales del CMS de gestión de alquileres. Todos responden 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"
}Reservas
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" }
}Huéspedes
GET /v1/guests
GET /v1/guests/{id}
POST /v1/guests/{id}/messagesCalendario / disponibilidad
GET /v1/properties/{id}/calendar?from=2026-08-01&to=2026-08-31
PUT /v1/properties/{id}/calendar/blocks
PATCH /v1/properties/{id}/calendar/pricesWebhooks
Suscríbete a eventos en tiempo real. Firmamos cada payload con HMAC-SHA256 en la cabecera X-Rentager-Signature.
POST /v1/webhooks
{
"url": "https://api.rentagermanagement.com/hooks/rentager",
"events": [
"reservation.created",
"reservation.updated",
"reservation.cancelled",
"message.received",
"calendar.conflict"
]
}Responde 2xx en menos de 5s. Los reintentos usan backoff exponencial (hasta 8 intentos / 24h).
Feeds iCal
Útil para canales sin API o como respaldo de sync. Cada propiedad expone un feed de salida y acepta URLs de entrada.
GET /v1/properties/{id}/ical/export.ics
POST /v1/properties/{id}/ical/import
{ "url": "https://www.airbnb.com/calendar/ical/….ics" }Errores y rate limits
Límite estándar: 120 req/min por API key (burst 30). Cabeceras: X-RateLimit-Remaining, X-RateLimit-Reset.
| Code | Significado |
|---|---|
| 400 | Payload inválido (fechas, moneda, canal) |
| 401 | API key ausente o revocada |
| 409 | Conflicto de calendario / doble reserva evitada |
| 429 | Rate limit excedido |
{
"error": {
"code": "calendar_conflict",
"message": "Dates overlap an existing Airbnb block",
"request_id": "req_0b17"
}
}