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)
C_Calendar.EventSetTime(20, 0)
C_Calendar.EventSetType(1)
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.