Aller au contenu
POST AI agent ready /v1/ical/generate

iCal Generate API - Build RFC 5545 .ics Calendar Files

Converts an events array to an RFC 5545 VCALENDAR with one VEVENT per entry. All-day events use DTSTART/DTEND with VALUE=DATE. Timed events use standard DTSTART/DTEND. Each event gets a generated UID. Long SUMMARY/DESCRIPTION/LOCATION lines are folded at 75 chars per RFC 5545.

Parameters

arrayrequired

Array of event objects with summary, start, and optional end, description, location.

Code examples

curl -X POST https://api.botoi.com/v1/ical/generate \
  -H "Content-Type: application/json" \
  -d '{"events":[{"summary":"Launch review","start":"2026-05-03T15:00:00Z","end":"2026-05-03T16:00:00Z","description":"Walk through launch checklist.","location":"Zoom"}]}'

When to use this API

Add "Download .ics" buttons to events

Product launch pages, webinar signups, and course syllabi benefit from one-click calendar export. Generate the .ics server-side and stream it with Content-Type: text/calendar.

Email calendar invites for transactional bookings

After a user books a meeting, email them the .ics as an attachment so it imports directly into Gmail, Outlook, or Apple Calendar. Higher attendance than sending a plain date/time string.

Generate team sprint calendars

Batch-generate calendar files for each sprint (standups, reviews, retros) and publish as a feed. Team members subscribe once and get every ceremony on their calendar.

Frequently asked questions

How do I create an all-day event?
Pass start as a date-only string (YYYY-MM-DD). The generator detects the all-day format and uses VALUE=DATE. If you pass a full datetime, it is treated as timed.
What time zone does the output use?
UTC. Pass start/end as ISO strings with a "Z" suffix. For local-zone events, convert to UTC before passing. This matches how most calendar clients render the event correctly.
How is UID generated?
crypto.randomUUID() plus "@botoi.com". UIDs stay stable per event occurrence but differ between calls; if you need idempotent IDs, generate them yourself and (for now) post-process the output.
Does line folding actually work?
Yes. Lines over 75 characters are folded into 74-char continuations starting with a space, exactly as RFC 5545 requires. Most calendar clients honor this.
Are recurring events supported?
Not yet. RRULE is on the roadmap. For now, expand the recurring event client-side and pass each instance as a separate entry.

Get your API key

Free tier includes 5 requests per minute with no credit card required. Upgrade for higher limits.