Calendar feed

Each schedule has a private, token-scoped iCal feed compatible with Google Calendar, Apple Calendar, Outlook, etc.

Get feed

GET /oncall/schedules/{schedule_id}/calendar.ics?token={cal_token}

Returns standard text/calendar (RFC 5545) output. No auth header — auth is via the token query param so you can paste the URL into a calendar app.

text
BEGIN:VCALENDARVERSION:2.0PRODID:-//Happy Uptime//On-Call//ENBEGIN:VEVENTUID:lyr_primary-usr_alice-2026-04-17@happyuptime.comSUMMARY:[Primary] Alice on callDTSTART:20260417T000000ZDTEND:20260422T130000ZDESCRIPTION:Engineering On-Call rotationEND:VEVENT...END:VCALENDAR

Generate token

POST /oncall/schedules/{schedule_id}/calendar/tokens

json
{ "data": { "token": "cal_xxx", "url": "https://happyuptime.com/api/v1/oncall/schedules/sch_abc/calendar.ics?token=cal_xxx" } }

Tokens are read-only and scoped to one schedule.

Revoke token

DELETE /oncall/schedules/{schedule_id}/calendar/tokens/{token}

Existing subscriptions stop receiving updates.

Behavior

  • Window: next 90 days from the time of request
  • Includes overrides and fixed shifts (so calendar matches actual paging)
  • Each shift is a discrete VEVENT; no RRULE recurrence (calendar apps interpret rotations differently)
  • Cached for 60 seconds at edge

See also

Calendar integration guide — step-by-step subscribe instructions for Google, Apple, Outlook.

Ask a question... ⌘I