apyhub
Back
DEVELOPER TOOLS · STANDARD DATA

Generate iCal API

Hosted on ApyHub

What it does

The ICS Generator API creates calendar invite files (.ics) from event details you send as JSON. Add a title, date, start and end time, time zone, location, organizer, and attendees, and get back an iCal file that people can add to Google Calendar, Outlook, or Apple Calendar with one click.

It supports all-day events, recurring events (daily, weekly, monthly, or yearly), and reminders before the event starts. To cancel an event you already sent, generate a cancellation file with the same event id and event_type set to cancel.

Use it to attach calendar invites to booking confirmations, demo scheduling emails, webinar registrations, and team reminders. The API creates the file; your app sends it, for example as an email attachment or a download link. To check attendee addresses before sending, use the Email Validation API.

You can start on ApyHub's free tier with no card required.

▣ ENDPOINT 01 / 02
POST
Generate iCal event — download file
https://api.eu.apyhub.com/apyhub/generate-ical-event/download

QUICKSTART

GUIDE

Quickstart

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

curl -X POST "https://api.eu.apyhub.com/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.
recurrence

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.