Skip to content

iCal Feeds

Every calendar has a public iCal feed URL. This endpoint serves RFC 5545 iCalendar data without API key authentication — the URL token is the access control.

GET /ical/:ical_token.ics
Terminal window
curl https://api.chronary.ai/ical/abc123def456.ics
Content-Type: text/calendar; charset=utf-8
ETag: "a1b2c3d4"
Cache-Control: public, max-age=300
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Chronary//API//EN
BEGIN:VEVENT
DTSTART:20260407T140000Z
DTEND:20260407T143000Z
SUMMARY:Strategy sync with Acme Corp
BEGIN:VALARM
ACTION:DISPLAY
TRIGGER:-PT10M
DESCRIPTION:Strategy sync with Acme Corp
END:VALARM
...
END:VEVENT
END:VCALENDAR

Each of an event’s resolved reminders is emitted as a VALARM component inside its VEVENT, with a TRIGGER of -PT<minutes>M (relative to DTSTART), so subscribed calendar apps surface the alarm. An event with no reminders emits no VALARM.

The feed supports ETags. Send If-None-Match to avoid re-downloading unchanged data:

Terminal window
curl https://api.chronary.ai/ical/abc123def456.ics \
-H "If-None-Match: \"a1b2c3d4\""

Returns 304 Not Modified if the feed hasn’t changed.

  • Edge cache TTL: 5 minutes
  • ETag support for conditional requests
  • Rate limited by IP address

| Status | Cause | |--------|-------| | 404 | Invalid or expired token | | 429 | IP rate limit exceeded |

The ical_url is returned when you create or retrieve a calendar:

Terminal window
curl https://api.chronary.ai/v1/calendars/cal_x1y2z3 \
-H "Authorization: Bearer chr_sk_your_key_here"

The response includes:

{
"ical_url": "https://api.chronary.ai/ical/abc123def456.ics"
}

See the iCal Feeds guide for instructions on subscribing from Google Calendar, Apple Calendar, and Outlook.