Skip to content

Ics Diff API

POST https://api.findutils.com/api/tools/ics-diff/execute

Compare two iCalendar (.ics) exports of the same calendar, before and after, and report which events were added, removed or changed. Entries are matched by UID plus RECURRENCE-ID (a modified occurrence is its own entry), never by position or title; entries without a UID are listed and never matched. A changed entry lists each field that differs with its before and after values; repeated fields such as ATTENDEE or CATEGORIES show only the values that differ, and an alarm (VALARM) counts as a field. Property order, line folding and parameter order are not differences. DTSTAMP, LAST-MODIFIED and SEQUENCE are ignored by default because calendar apps rewrite them on every export. Times are compared as written, never converted between zones. Also returns the added and the removed entries as calendars of their own. No calendar URL is fetched.

Needs an API key. Running a tool needs an API key. Keys are not for sale yet: ask for early access. About API keys

Request body

application/json
  • before

    string required

    The earlier .ics export (A).

  • after

    string required

    The later .ics export (B).

  • ignore_metadata

    boolean optional

    Leave DTSTAMP, LAST-MODIFIED and SEQUENCE out of the comparison. Default true. Default true.

  • include_todos

    boolean optional

    Also compare VTODO and VJOURNAL entries. Default false: events only. Default false.

Example arguments

Verified
{
  "before": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART:20261005T063000Z\nSUMMARY:Standup\nLOCATION:Room 4\nEND:VEVENT\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART;VALUE=DATE:20261009\nSUMMARY:Dentist\nEND:VEVENT\nEND:VCALENDAR\n",
  "after": "BEGIN:VCALENDAR\nVERSION:2.0\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART:20261005T070000Z\nSUMMARY:Standup\nLOCATION:Room 7\nEND:VEVENT\nBEGIN:VEVENT\nUID:[email protected]\nDTSTART;VALUE=DATE:20261012\nSUMMARY:Offsite\nEND:VEVENT\nEND:VCALENDAR\n"
}