🧩

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

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.