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 your default key…
The full key is used to call the gateway and stays in this tab — never sent to orbit or saved.
body*
Event UID. Auto-generated if omitted.
Generate an all-day event.
Event title.
Time in HH:MM format. Ignored when all_day is true.
Event location.
iCal SEQUENCE number.
Whether the event recurs.
reminders
IANA timezone identifier.
recurrence
Number of occurrences.
How often the recurrence rule repeats.
iCal FREQ value e.g. DAILY, WEEKLY, MONTHLY, YEARLY.
Time in HH:MM format. Ignored when all_day is true.
Event description.
Date in DD-MM-YYYY or YYYY-MM-DD format.
Organizer email address.
attendees_emails
List of attendee email addresses.
Override the default download filename (without extension).
Use 'cancel' to generate a VCALENDAR METHOD:CANCEL.

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.