apyhub
DEVELOPER TOOLS · STANDARD DATA

Generate iCal API

Hosted on ApyHub

What it does

Calendar Event Generator creates iCal files from event details you send in JSON. You can generate a downloadable .ics file or a pre-signed cloud link to the generated file.

Send the event fields supported by the API: summary, meeting_date, start_time, end_time, location, description, time_zone, organizer_email, attendees_emails, reminders, recurrence, all_day, recurring, sequence, and id. For cancellation flows, set event_type to cancel on the download endpoint to produce a VCALENDAR with METHOD:CANCEL.

Use it when your app needs to hand off calendar invites after booking meetings, scheduling demos, or creating team reminders. It supports all-day events, recurring events, reminder rules, and time zone-aware scheduling, so you can generate invites that fit common calendar clients without building iCal serialization yourself.

If you need the file immediately, use the download endpoint. If you want a hosted asset instead, use the link endpoint and return the signed .ics URL in your workflow.

▣ ENDPOINT 01 / 02
POST
Generate iCal event — download file
http://localhost:8080/apyhub/generate-ical-event/download
QUICKSTARTGUIDE

Quickstart

Generate a downloadable iCal event file from the event details in the request body.

curl -X POST "http://localhost:8080/apyhub/generate-ical-event/download?output=my-invite" \
  -H "apy-token: $APY_TOKEN" \
  -H "Content-Type: application/json" \
  -d '{
  "summary": "Team Sync",
  "description": "Weekly team sync to discuss project updates and action items.",
  "meeting_date": "2025-06-15",
  "start_time": "09:00",
  "end_time": "10:00",
  "location": "Conference Room A",
  "time_zone": "Europe/London",
  "organizer_email": "[email protected]",
  "attendees_emails": [
    "[email protected]",
    "[email protected]"
  ]
}'

What you'll get back

Returns a binary file, which is the generated iCal download.

my-invite.ics
TRY ITLIVE · 50 ATOMS
Loading playground…

About this endpoint

What it does

Generates an iCal event file for the provided event details and returns it as a binary download.

Query Parameter(s)

AttributeTypeMandatoryDescription
outputStringNoOverride the default download filename, without extension.
event_typeENUMNoUse cancel to generate a VCALENDAR with METHOD:CANCEL. Allowed values: cancel.

Request Body

ParameterTypeMandatoryDescription
idStringNoEvent UID. Auto-generated if omitted.
all_dayBooleanNoGenerate an all-day event. Default: false.
summaryStringNoEvent title.
end_timeStringNoTime in HH:MM format. Ignored when all_day is true.
locationStringNoEvent location.
sequenceIntegerNoiCal SEQUENCE number. Default: 0.
recurringBooleanNoWhether the event recurs. Default: false.
remindersObject ArrayNoList of reminder objects. Each item requires minutes_before; see reminders[].action, reminders[].description, reminders[].minutes_before.
reminders[].actionENUMNoReminder type. Allowed values: display, email. Default: display.
reminders[].descriptionStringNoReminder message. Default: Reminder.
reminders[].minutes_beforeIntegerYesMinutes before event start the reminder fires.
time_zoneStringNoIANA timezone identifier.
recurrenceObjectNoRecurrence settings. See recurrence.count, recurrence.interval, recurrence.frequency.
recurrence.countIntegerNoNumber of occurrences.
recurrence.intervalIntegerNoHow often the recurrence rule repeats.
recurrence.frequencyStringNoiCal FREQ value, for example DAILY, WEEKLY, MONTHLY, or YEARLY.
start_timeStringNoTime in HH:MM format. Ignored when all_day is true.
descriptionStringNoEvent description.
meeting_dateStringNoDate in DD-MM-YYYY or YYYY-MM-DD format.
organizer_emailStringNoOrganizer email address.
attendees_emailsString ArrayNoList of attendee email addresses.

Response

Returns a binary file response containing the generated iCal content. The output schema is a binary string, so there is no JSON object wrapper or top-level JSON fields to document.

Notes

start_time and end_time are ignored when all_day is true. The reminders array items must include minutes_before, and recurrence supports only the one-level nested fields shown in the schema.

Query parameters

Name
Type
Description
outputOPTIONAL
string
Override the default download filename (without extension).
event_typeOPTIONAL
string
cancel
Use 'cancel' to generate a VCALENDAR METHOD:CANCEL.

Body

Name
Type
Description
bodyREQUIRED
object
▣ COMMON ERRORS

Errors any endpoint can return

400bad_request

Required parameter missing or malformed body.

401unauthorized

API key missing, revoked, or not authorized for this service.

429rate_limited

Your plan's per-second rate exceeded. Retry with exponential backoff.

503upstream_busy

Backend temporarily unavailable. Try again in a few seconds.