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.dateTimerequiredstring (ISO 8601 with offset)Event start time with timezone offset. Always include offset — never bare UTC for calendar events.
start.timeZonerequiredstring (IANA)IANA timezone name like Asia/Kolkata. Required for correct DST-aware recurrence expansion.
allDayrequiredbooleanIf true, use date strings (YYYY-MM-DD) instead of dateTime for start and end.
recurrence.ruleoptionalstring (RRULE)RFC 5545 recurrence rule string. Example: RRULE:FREQ=WEEKLY;BYDAY=MO for every Monday.
attendees[].rsvpoptionalstringAttendance response: accepted, declined, tentative, needs_action.
attendees[].roleoptionalstringAttendee type: organizer, required, optional.

Variants

All-Day EventCompany holiday or date-only event without a specific time.
{
  "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.
{
  "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

One click loads this exact example into the tool — no copy-paste needed. Format it, validate it, explore the tree, or generate TypeScript types instantly.

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