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)

AttributeTypeDescription
outputStringOverride the default download filename, without extension.
event_typeENUMUse cancel to generate a VCALENDAR with METHOD:CANCEL. Allowed values: cancel.

Request Body

ParameterTypeDescription
idStringEvent UID. Auto-generated if omitted.
all_dayBooleanGenerate an all-day event. Default: false.
summaryStringEvent title.
end_timeStringTime in HH:MM format. Ignored when all_day is true.
locationStringEvent location.
sequenceIntegeriCal SEQUENCE number. Default: 0.
recurringBooleanWhether the event recurs. Default: false.
remindersObject ArrayList of reminder objects. Each item requires minutes_before; see reminders[].action, reminders[].description, reminders[].minutes_before.
reminders[].actionENUMReminder type. Allowed values: display, email. Default: display.
reminders[].descriptionStringReminder message. Default: Reminder.
reminders[].minutes_beforeIntegerMinutes before event start the reminder fires.
time_zoneStringIANA timezone identifier.
recurrenceObjectRecurrence settings. See recurrence.count, recurrence.interval, recurrence.frequency.
recurrence.countIntegerNumber of occurrences.
recurrence.intervalIntegerHow often the recurrence rule repeats.
recurrence.frequencyStringiCal FREQ value, for example DAILY, WEEKLY, MONTHLY, or YEARLY.
start_timeStringTime in HH:MM format. Ignored when all_day is true.
descriptionStringEvent description.
meeting_dateStringDate in DD-MM-YYYY or YYYY-MM-DD format.
organizer_emailStringOrganizer email address.
attendees_emailsString ArrayList 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.

▣ 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.