Business

Calendar Event JSON Example

Calendar event JSON example with start, end, recurrence, attendees, and location. Compatible with Google Calendar API and iCalendar (RFC 5545) event formats.

{
  "id": "evt_4Mn8pL2qZ6",
  "title": "Sprint Planning — Q3 Week 3",
  "description": "Plan the upcoming sprint. Review backlog, estimate tickets, and set the sprint goal.",
  "status": "confirmed",
  "organizer": {
    "id": "usr_7Kx9mP2nQ4",
    "name": "Ravi Mehta",
    "email": "ravi@example.com"
  },
  "start": {
    "dateTime": "2025-06-02T10:00:00+05:30",
    "timeZone": "Asia/Kolkata"
  },
  "end": {
    "dateTime": "2025-06-02T11:00:00+05:30",
    "timeZone": "Asia/Kolkata"
  },
  "allDay": false,
  "recurrence": {
    "rule": "RRULE:FREQ=WEEKLY;BYDAY=MO",
    "until": "2025-09-30"
  },
  "location": {
    "type": "virtual",
    "platform": "Google Meet",
    "url": "https://meet.google.com/abc-xyz-pqr"
  },
  "attendees": [
    {
      "name": "Ravi Mehta",
      "email": "ravi@example.com",
      "role": "organizer",
      "rsvp": "accepted"
    },
    {
      "name": "Priya Sharma",
      "email": "priya@example.com",
      "role": "required",
      "rsvp": "accepted"
    },
    {
      "name": "Arjun Patel",
      "email": "arjun@example.com",
      "role": "optional",
      "rsvp": "tentative"
    }
  ],
  "reminders": [
    {
      "method": "email",
      "minutesBefore": 1440
    },
    {
      "method": "popup",
      "minutesBefore": 15
    }
  ],
  "color": "#4285F4",
  "createdAt": "2025-05-20T08:00:00Z"
}

Field Reference

start.dateTimestring (ISO 8601 with offset)requiredEvent start time with timezone offset. Always include offset — never bare UTC for calendar events.
start.timeZonestring (IANA)requiredIANA timezone name like Asia/Kolkata. Required for correct DST-aware recurrence expansion.
allDaybooleanrequiredIf true, use date strings (YYYY-MM-DD) instead of dateTime for start and end.
recurrence.rulestring (RRULE)optionalRFC 5545 recurrence rule string. Example: RRULE:FREQ=WEEKLY;BYDAY=MO for every Monday.
attendees[].rsvpstringoptionalAttendance response: accepted, declined, tentative, needs_action.
attendees[].rolestringoptionalAttendee type: organizer, required, optional.

Variants

All-Day EventCompany holiday or date-only event without a specific time.
All-Day Event
{
  "id": "evt_holiday_diwali",
  "title": "Diwali — Company Holiday",
  "allDay": true,
  "start": {
    "date": "2025-10-20"
  },
  "end": {
    "date": "2025-10-21"
  },
  "status": "confirmed",
  "color": "#FF9800"
}
In-Person MeetingMeeting with a physical room booking.
In-Person Meeting
{
  "id": "evt_design_review",
  "title": "Product Design Review",
  "start": {
    "dateTime": "2025-06-05T14:00:00+05:30",
    "timeZone": "Asia/Kolkata"
  },
  "end": {
    "dateTime": "2025-06-05T15:30:00+05:30",
    "timeZone": "Asia/Kolkata"
  },
  "location": {
    "type": "physical",
    "room": "Conference Room A",
    "address": "42 Tech Park, Surat"
  },
  "attendees": [
    {
      "name": "Ravi Mehta",
      "rsvp": "accepted"
    },
    {
      "name": "Priya Sharma",
      "rsvp": "accepted"
    }
  ]
}

Common Use Cases

  • Google Calendar API event creation payload
  • Meeting scheduler SaaS data model
  • Exporting calendar data to iCal (.ics) format
calendareventschedulingmeetingiCal

Validate or format this JSON

Paste the example above into JSONKit's tools to validate, minify, or explore the structure interactively.

Frequently Asked Questions

Store the IANA timezone name (Asia/Kolkata, America/New_York) not just the UTC offset. UTC offsets change during DST transitions. The IANA name lets you correctly expand recurring events across DST boundaries.

For timed events: ISO 8601 with offset (2025-06-02T10:00:00+05:30). For all-day events: date string (2025-06-02). Use the date format without a time component — this signals the event has no specific time.

Store the RRULE string from RFC 5545 (FREQ=WEEKLY;BYDAY=MO) rather than pre-generating all occurrences. Generate occurrence dates server-side when needed. This keeps the stored data compact even for events that recur for years.

Related JSON Examples