Renta Docs

Calendar API

Generate and manage iCal feeds for booking calendars.

The Calendar API generates iCal feeds that sync bookings with Google Calendar, Apple Calendar, Outlook, and other calendar apps.

Calendar feed endpoints require the admin scope. The feed URLs themselves are public (authenticated by token).

List Calendar Feeds

GET /v1/calendar/feeds
const feeds = await renta.calendar.feeds.list();
for (const feed of feeds.data) {
  console.log(`${feed.name}: ${feed.feed_url}`);
}
curl https://api.getrenta.io/v1/calendar/feeds \
  -H "Authorization: Bearer renta_sk_live_..."

Response:

{
  "data": [
    {
      "id": "cf_abc123",
      "name": "All Bookings",
      "token": "tok_feed_xyz",
      "filters": {},
      "feed_url": "https://api.getrenta.io/v1/calendar/feed?token=tok_feed_xyz",
      "created_at": "2026-03-01T10:00:00Z",
      "last_accessed_at": "2026-03-31T08:00:00Z"
    }
  ]
}

Create Calendar Feed

POST /v1/calendar/feeds

Body Parameters:

ParameterTypeRequiredDescription
namestringFeed name (default: "Booking Calendar")
filtersobjectFilter bookings in the feed
filters.statusstring[]Only include bookings with these statuses
filters.location_idstringOnly include bookings at this location
const feed = await renta.calendar.feeds.create({
  name: 'Confirmed Bookings',
  filters: {
    status: ['confirmed', 'active'],
  },
});

console.log(`Feed URL: ${feed.feed_url}`);
// → "https://api.getrenta.io/v1/calendar/feed?token=tok_feed_xyz"
curl -X POST https://api.getrenta.io/v1/calendar/feeds \
  -H "Authorization: Bearer renta_sk_live_..." \
  -H "Content-Type: application/json" \
  -d '{
    "name": "Confirmed Bookings",
    "filters": {
      "status": ["confirmed", "active"]
    }
  }'

Get Calendar Feed

GET /v1/calendar/feeds/:id
const feed = await renta.calendar.feeds.get('cf_abc123');
curl https://api.getrenta.io/v1/calendar/feeds/cf_abc123 \
  -H "Authorization: Bearer renta_sk_live_..."

Regenerate Feed Token

POST /v1/calendar/feeds/:id/regenerate

Generates a new token for the feed, invalidating the old feed URL.

const feed = await renta.calendar.feeds.regenerate('cf_abc123');
console.log(`New feed URL: ${feed.feed_url}`);
curl -X POST https://api.getrenta.io/v1/calendar/feeds/cf_abc123/regenerate \
  -H "Authorization: Bearer renta_sk_live_..."

Delete Calendar Feed

DELETE /v1/calendar/feeds/:id
await renta.calendar.feeds.del('cf_abc123');
curl -X DELETE https://api.getrenta.io/v1/calendar/feeds/cf_abc123 \
  -H "Authorization: Bearer renta_sk_live_..."

Using the Feed URL

The feed URL returns standard iCal (.ics) format. Add it to any calendar app:

  1. Copy the feed URL from the API response
  2. In Google Calendar: Other calendars → From URL → Paste URL
  3. In Apple Calendar: File → New Calendar Subscription → Paste URL
  4. Calendar apps refresh automatically (typically every 4-12 hours)

Feed tokens provide read-only access to booking data. Treat them as sensitive — anyone with the token can view bookings in that feed.