Calendar & Events API (Retail — Patch 12.0.0)
Comprehensive reference for the in-game calendar and event scheduler.
Source: https://warcraft.wiki.gg/wiki/World_of_Warcraft_API Current as of: Patch 12.0.0 (Build 65655) — January 28, 2026 Scope: Retail only.
Scope
-
C_Calendar — Full calendar system (50+ functions)
-
C_EventScheduler — Scheduled event management
C_Calendar — Calendar System
Opening & Navigation
Function Returns Description
C_Calendar.OpenCalendar()
— Open/initialize calendar
C_Calendar.CloseEvent()
— Close event editor
C_Calendar.SetAbsMonth(month, year)
— Navigate to month
C_Calendar.SetMonth(offsetMonths)
— Navigate relative
C_Calendar.GetMonthInfo(offsetMonth)
monthInfo
Month data
C_Calendar.GetMinDate()
date
Earliest navigable date
C_Calendar.GetMaxDate()
date
Latest navigable date
Month Info Fields
-
month — Month number (1-12)
-
year — Year
-
numDays — Days in month
-
firstWeekday — First day weekday (1=Sun)
Day Events
Function Returns Description
C_Calendar.GetNumDayEvents(offsetDay, monthOffset)
numEvents
Events on day
C_Calendar.GetDayEvent(offsetDay, eventIndex, monthOffset)
eventInfo
Event at index
C_Calendar.GetNumGuildEvents()
numEvents
Guild events
C_Calendar.GetGuildEventInfo(index)
eventInfo
Guild event
Event Info Fields
-
title — Event title
-
isCustomTitle — Player-created?
-
startTime — Start date/time
-
endTime — End date/time
-
calendarType — Type (PLAYER, GUILD_EVENT, SYSTEM, HOLIDAY, RAID_LOCKOUT, etc.)
-
sequenceType — Sequence (START, ONGOING, END)
-
eventType — Event type enum
-
texture — Event texture
-
modStatus — Moderator status
-
inviteStatus — Invite status enum
-
invitedBy — Who invited
-
difficulty — Difficulty ID
-
inviteType — Invite type
-
sequenceIndex — Sequence index
-
numSequenceDays — Total sequence days
-
difficultyName — Difficulty name
-
isLocked — Locked?
Creating & Editing Events
Function Returns Description
C_Calendar.CreatePlayerEvent()
— Start creating event
C_Calendar.CreateGuildAnnouncement()
— Create guild announcement
C_Calendar.CreateGuildSignUpEvent()
— Create sign-up event
C_Calendar.CreateCommunitySignUpEvent()
— Community sign-up event
C_Calendar.AddEvent()
— Submit new event
C_Calendar.UpdateEvent()
— Update edited event
C_Calendar.RemoveEvent()
— Delete event
C_Calendar.OpenEvent(offsetDay, eventIndex, monthOffset)
— Open event for viewing
C_Calendar.CanAddEvent()
canAdd
Can create events?
Event Properties (Get/Set)
Function Returns Description
C_Calendar.EventGetTitle()
title
Get event title
C_Calendar.EventSetTitle(title)
— Set event title
C_Calendar.EventGetDescription()
description
Get description
C_Calendar.EventSetDescription(desc)
— Set description
C_Calendar.EventGetDate()
date
Get event date
C_Calendar.EventSetDate(month, day, year)
— Set event date
C_Calendar.EventGetTime()
hour, minute
Get event time
C_Calendar.EventSetTime(hour, minute)
— Set event time
C_Calendar.EventGetType()
eventType
Get event type
C_Calendar.EventSetType(eventType)
— Set event type
C_Calendar.EventGetRepeatOption()
repeatOption
Repeat setting
C_Calendar.EventSetRepeatOption(option)
— Set repeat
C_Calendar.EventGetLocked()
isLocked
Is locked?
C_Calendar.EventSetLocked(locked)
— Lock/unlock
C_Calendar.EventGetClubId()
clubId
Associated club
C_Calendar.EventSetClubId(clubId)
— Set club
Invites
Function Returns Description
C_Calendar.EventGetNumInvites()
numInvites
Invite count
C_Calendar.EventGetInvite(index)
inviteInfo
Invite data
C_Calendar.EventInvite(name)
— Invite player
C_Calendar.EventRemoveInvite(index)
— Remove invite
C_Calendar.EventSetInviteStatus(index, status)
— Set invite status
C_Calendar.EventSignUp()
— Sign up
C_Calendar.EventDecline()
— Decline
C_Calendar.EventTentative()
— Tentative
C_Calendar.EventAvailable()
— Mark available
C_Calendar.MassInviteGuild(minLevel, maxLevel, maxRank)
— Mass guild invite
C_Calendar.MassInviteCommunity(clubId, minLevel, maxLevel)
— Mass community invite
C_Calendar.GetEventInviteResponseTime(index)
time
Response time
C_Calendar.EventSortInvites(sortType, reverse)
— Sort invites
C_Calendar.EventCanEdit()
canEdit
Can edit event?
Invite Status Enums
Value Status
1 Invited
2 Accepted
3 Declined
4 Confirmed
5 Out
6 Standby
7 Signed Up
8 Not Signed Up
9 Tentative
Holidays
Function Returns Description
C_Calendar.GetHolidayInfo(offsetDay, eventIndex, monthOffset)
holidayInfo
Holiday data
C_Calendar.GetNumHolidayTextures(offsetDay, eventIndex, monthOffset)
numTextures
Holiday textures
Filtered Events
Function Returns Description
C_Calendar.SetTextureToDefault()
— Reset texture filter
C_Calendar.GetDefaultGuildFilter()
filter
Default guild filter
C_Calendar.EventGetTextures()
textures
Event textures
C_Calendar.EventGetSelectedInvite()
index
Selected invite
C_Calendar.EventSetSelectedInvite(index)
— Select invite
Raid Resets
Function Returns Description
C_Calendar.GetNumRaidResets()
numResets
Raid reset count
C_Calendar.GetRaidReset(index)
resetInfo
Reset info
Event Type Textures
Function Returns Description
C_Calendar.GetEventTypeTexture(eventType)
texture
Texture for type
C_Calendar.EventGetTypesDisplayOrdered()
types
Ordered event types
C_EventScheduler — Scheduled Events
Function Returns Description
C_EventScheduler.GetScheduledEvents()
events
All scheduled events
C_EventScheduler.GetEventInfo(eventID)
eventInfo
Event details
C_EventScheduler.IsEventActive(eventID)
isActive
Event active?
Common Patterns
List Today's Events
C_Calendar.OpenCalendar()
local monthInfo = C_Calendar.GetMonthInfo(0) local today = tonumber(date("%d"))
local numEvents = C_Calendar.GetNumDayEvents(today, 0) for i = 1, numEvents do local event = C_Calendar.GetDayEvent(today, i, 0) if event then print(event.title, "-", event.calendarType) end end
Create a Guild Event
C_Calendar.CreateGuildSignUpEvent() C_Calendar.EventSetTitle("Raid Night - Mythic") C_Calendar.EventSetDescription("Bring flasks and food.") C_Calendar.EventSetDate(3, 15, 2026) -- March 15, 2026 C_Calendar.EventSetTime(20, 0) -- 8:00 PM C_Calendar.EventSetType(1) -- Raid type C_Calendar.AddEvent()
Check Upcoming Holidays
C_Calendar.OpenCalendar() local monthInfo = C_Calendar.GetMonthInfo(0)
for day = 1, monthInfo.numDays do local numEvents = C_Calendar.GetNumDayEvents(day, 0) for i = 1, numEvents do local event = C_Calendar.GetDayEvent(day, i, 0) if event and event.calendarType == "HOLIDAY" then print("Holiday:", event.title, "- Day", day) end end end
Key Events
Event Payload Description
CALENDAR_UPDATE_EVENT_LIST
— Event list changed
CALENDAR_UPDATE_INVITE_LIST
hasCompleteList Invite list changed
CALENDAR_NEW_EVENT
isCopy Creating new event
CALENDAR_OPEN_EVENT
calendarType Event opened
CALENDAR_CLOSE_EVENT
— Event closed
CALENDAR_UPDATE_EVENT
— Event data changed
CALENDAR_UPDATE_PENDING_INVITES
— Pending invites changed
CALENDAR_EVENT_ALARM
title, hour, minute Event alarm
CALENDAR_ACTION_PENDING
pending Action in progress
CALENDAR_UPDATE_GUILD_EVENTS
— Guild events updated
CALENDAR_UPDATE_ERROR
errorReason Calendar error
Gotchas & Restrictions
-
OpenCalendar() required — Must call C_Calendar.OpenCalendar() before using other calendar functions.
-
Offset-based navigation — Day and month parameters are offsets from current, not absolute (for most functions).
-
Invite permissions — Only event owners/moderators can manage invites.
-
Calendar types — calendarType distinguishes PLAYER events from HOLIDAY, SYSTEM, RAID_LOCKOUT, etc.
-
Mass invite limits — Guild/community mass invites have level and rank filters.
-
Event creation requires hardware — AddEvent() typically requires user interaction.
-
Holiday info is read-only — Holidays are system-generated and cannot be modified.
-
Calendar data is async — Wait for CALENDAR_UPDATE_EVENT_LIST after opening the calendar.