JSON to ICS
Generate an iCalendar (.ics) feed from JSON events.
POST
1 credit
/v1/convert/json-to-ics
curl -X POST "https://convert.toolkitapi.io/v1/convert/json-to-ics" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer YOUR_API_KEY" \
-d '{"events": [{"summary": "Team Sync", "dtstart": "2026-04-20T15:00:00Z", "dtend": "2026-04-20T16:00:00Z"}], "calendar_name": "Work"}'
import httpx
resp = httpx.post(
"https://convert.toolkitapi.io/v1/convert/json-to-ics",
json={"events": [{"summary": "Team Sync", "dtstart": "2026-04-20T15:00:00Z", "dtend": "2026-04-20T16:00:00Z"}], "calendar_name": "Work"},
)
print(resp.json())
const resp = await fetch("https://convert.toolkitapi.io/v1/convert/json-to-ics", {
method: "POST",
headers: {
"Content-Type": "application/json",
},
body: JSON.stringify({"events": [{"summary": "Team Sync", "dtstart": "2026-04-20T15:00:00Z", "dtend": "2026-04-20T16:00:00Z"}], "calendar_name": "Work"}),
});
const data = await resp.json();
console.log(data);
# See curl example
Response
200 OK
{
"ics": "BEGIN:VCALENDAR\nVERSION:2.0\nPRODID:-//Toolkit//Convert//EN\nX-WR-CALNAME:Work\nBEGIN:VEVENT\nSUMMARY:Team Sync\nDTSTART:20260420T150000Z\nDTEND:20260420T160000Z\nEND:VEVENT\nEND:VCALENDAR\n",
"count": 1
}
Description
Generate an iCalendar (.ics) feed from JSON events.
How to Use
1
1. POST a JSON body with `events` (array) and optional `calendar_name`.
2
2. Read the `ics` string and `count` from the response.
About This Tool
Generates an iCalendar (`.ics`) feed from a JSON array of event objects. Use this to produce feeds that Apple Calendar, Google Calendar, Outlook, and any RFC 5545-compliant client can subscribe to.
Supports summary, description, start/end time, location, attendees, organizer, recurrence rule, and common extension fields.
Why Use This Tool
- "Add to calendar" links — Generate one-shot `.ics` attachments from JSON events
- Calendar feeds — Publish a feed that users can subscribe to
- Event exports — Let users export their JSON events as iCalendar
- Cross-app sync — Produce a neutral interchange format from proprietary event data
Frequently Asked Questions
What timezone should I use?
Use ISO-8601 with explicit timezone (`Z` for UTC or `+HH:MM`). Naive times are treated as local.
Are UIDs auto-generated?
If an event lacks a `uid`, a stable one is generated. Supply your own `uid` to allow updates (UPDATE/DELETE operations on the same UID).
Can I include alarms?
Yes — include an `alarms` array on the event object with `trigger` and optional `action`/`description`.
Start using JSON to ICS now
Get your free API key and make your first request in under a minute.