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.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: wow-api-calendar-events3description: Complete reference for WoW Retail Calendar and Event Scheduler APIs. Covers C_Calendar (event creation, editing, invites, holidays, raid resets, filtered events, date navigation, guild events, community events, texture lookups) and C_EventScheduler (scheduled event system). Use when working with the in-game calendar, creating events, managing invites, displaying holidays, or scheduling guild/community activities. Use when this capability is needed.4---56# Calendar & Events API (Retail — Patch 12.0.0)78Comprehensive reference for the in-game calendar and event scheduler.910> **Source:** https://warcraft.wiki.gg/wiki/World_of_Warcraft_API11> **Current as of:** Patch 12.0.0 (Build 65655) — January 28, 202612> **Scope:** Retail only.1314---1516## Scope1718- **C_Calendar** — Full calendar system (50+ functions)19- **C_EventScheduler** — Scheduled event management2021---2223## C_Calendar — Calendar System2425### Opening & Navigation2627| Function | Returns | Description |28|----------|---------|-------------|29| `C_Calendar.OpenCalendar()` | — | Open/initialize calendar |30| `C_Calendar.CloseEvent()` | — | Close event editor |31| `C_Calendar.SetAbsMonth(month, year)` | — | Navigate to month |32| `C_Calendar.SetMonth(offsetMonths)` | — | Navigate relative |33| `C_Calendar.GetMonthInfo(offsetMonth)` | `monthInfo` | Month data |34| `C_Calendar.GetMinDate()` | `date` | Earliest navigable date |35| `C_Calendar.GetMaxDate()` | `date` | Latest navigable date |3637### Month Info Fields3839- `month` — Month number (1-12)40- `year` — Year41- `numDays` — Days in month42- `firstWeekday` — First day weekday (1=Sun)4344### Day Events4546| Function | Returns | Description |47|----------|---------|-------------|48| `C_Calendar.GetNumDayEvents(offsetDay, monthOffset)` | `numEvents` | Events on day |49| `C_Calendar.GetDayEvent(offsetDay, eventIndex, monthOffset)` | `eventInfo` | Event at index |50| `C_Calendar.GetNumGuildEvents()` | `numEvents` | Guild events |51| `C_Calendar.GetGuildEventInfo(index)` | `eventInfo` | Guild event |5253### Event Info Fields5455- `title` — Event title56- `isCustomTitle` — Player-created?57- `startTime` — Start date/time58- `endTime` — End date/time59- `calendarType` — Type (PLAYER, GUILD_EVENT, SYSTEM, HOLIDAY, RAID_LOCKOUT, etc.)60- `sequenceType` — Sequence (START, ONGOING, END)61- `eventType` — Event type enum62- `texture` — Event texture63- `modStatus` — Moderator status64- `inviteStatus` — Invite status enum65- `invitedBy` — Who invited66- `difficulty` — Difficulty ID67- `inviteType` — Invite type68- `sequenceIndex` — Sequence index69- `numSequenceDays` — Total sequence days70- `difficultyName` — Difficulty name71- `isLocked` — Locked?7273### Creating & Editing Events7475| Function | Returns | Description |76|----------|---------|-------------|77| `C_Calendar.CreatePlayerEvent()` | — | Start creating event |78| `C_Calendar.CreateGuildAnnouncement()` | — | Create guild announcement |79| `C_Calendar.CreateGuildSignUpEvent()` | — | Create sign-up event |80| `C_Calendar.CreateCommunitySignUpEvent()` | — | Community sign-up event |81| `C_Calendar.AddEvent()` | — | Submit new event |82| `C_Calendar.UpdateEvent()` | — | Update edited event |83| `C_Calendar.RemoveEvent()` | — | Delete event |84| `C_Calendar.OpenEvent(offsetDay, eventIndex, monthOffset)` | — | Open event for viewing |85| `C_Calendar.CanAddEvent()` | `canAdd` | Can create events? |8687### Event Properties (Get/Set)8889| Function | Returns | Description |90|----------|---------|-------------|91| `C_Calendar.EventGetTitle()` | `title` | Get event title |92| `C_Calendar.EventSetTitle(title)` | — | Set event title |93| `C_Calendar.EventGetDescription()` | `description` | Get description |94| `C_Calendar.EventSetDescription(desc)` | — | Set description |95| `C_Calendar.EventGetDate()` | `date` | Get event date |96| `C_Calendar.EventSetDate(month, day, year)` | — | Set event date |97| `C_Calendar.EventGetTime()` | `hour, minute` | Get event time |98| `C_Calendar.EventSetTime(hour, minute)` | — | Set event time |99| `C_Calendar.EventGetType()` | `eventType` | Get event type |100| `C_Calendar.EventSetType(eventType)` | — | Set event type |101| `C_Calendar.EventGetRepeatOption()` | `repeatOption` | Repeat setting |102| `C_Calendar.EventSetRepeatOption(option)` | — | Set repeat |103| `C_Calendar.EventGetLocked()` | `isLocked` | Is locked? |104| `C_Calendar.EventSetLocked(locked)` | — | Lock/unlock |105| `C_Calendar.EventGetClubId()` | `clubId` | Associated club |106| `C_Calendar.EventSetClubId(clubId)` | — | Set club |107108### Invites109110| Function | Returns | Description |111|----------|---------|-------------|112| `C_Calendar.EventGetNumInvites()` | `numInvites` | Invite count |113| `C_Calendar.EventGetInvite(index)` | `inviteInfo` | Invite data |114| `C_Calendar.EventInvite(name)` | — | Invite player |115| `C_Calendar.EventRemoveInvite(index)` | — | Remove invite |116| `C_Calendar.EventSetInviteStatus(index, status)` | — | Set invite status |117| `C_Calendar.EventSignUp()` | — | Sign up |118| `C_Calendar.EventDecline()` | — | Decline |119| `C_Calendar.EventTentative()` | — | Tentative |120| `C_Calendar.EventAvailable()` | — | Mark available |121| `C_Calendar.MassInviteGuild(minLevel, maxLevel, maxRank)` | — | Mass guild invite |122| `C_Calendar.MassInviteCommunity(clubId, minLevel, maxLevel)` | — | Mass community invite |123| `C_Calendar.GetEventInviteResponseTime(index)` | `time` | Response time |124| `C_Calendar.EventSortInvites(sortType, reverse)` | — | Sort invites |125| `C_Calendar.EventCanEdit()` | `canEdit` | Can edit event? |126127### Invite Status Enums128129| Value | Status |130|-------|--------|131| 1 | Invited |132| 2 | Accepted |133| 3 | Declined |134| 4 | Confirmed |135| 5 | Out |136| 6 | Standby |137| 7 | Signed Up |138| 8 | Not Signed Up |139| 9 | Tentative |140141### Holidays142143| Function | Returns | Description |144|----------|---------|-------------|145| `C_Calendar.GetHolidayInfo(offsetDay, eventIndex, monthOffset)` | `holidayInfo` | Holiday data |146| `C_Calendar.GetNumHolidayTextures(offsetDay, eventIndex, monthOffset)` | `numTextures` | Holiday textures |147148### Filtered Events149150| Function | Returns | Description |151|----------|---------|-------------|152| `C_Calendar.SetTextureToDefault()` | — | Reset texture filter |153| `C_Calendar.GetDefaultGuildFilter()` | `filter` | Default guild filter |154| `C_Calendar.EventGetTextures()` | `textures` | Event textures |155| `C_Calendar.EventGetSelectedInvite()` | `index` | Selected invite |156| `C_Calendar.EventSetSelectedInvite(index)` | — | Select invite |157158### Raid Resets159160| Function | Returns | Description |161|----------|---------|-------------|162| `C_Calendar.GetNumRaidResets()` | `numResets` | Raid reset count |163| `C_Calendar.GetRaidReset(index)` | `resetInfo` | Reset info |164165### Event Type Textures166167| Function | Returns | Description |168|----------|---------|-------------|169| `C_Calendar.GetEventTypeTexture(eventType)` | `texture` | Texture for type |170| `C_Calendar.EventGetTypesDisplayOrdered()` | `types` | Ordered event types |171172---173174## C_EventScheduler — Scheduled Events175176| Function | Returns | Description |177|----------|---------|-------------|178| `C_EventScheduler.GetScheduledEvents()` | `events` | All scheduled events |179| `C_EventScheduler.GetEventInfo(eventID)` | `eventInfo` | Event details |180| `C_EventScheduler.IsEventActive(eventID)` | `isActive` | Event active? |181182---183184## Common Patterns185186### List Today's Events187188```lua189C_Calendar.OpenCalendar()190191local monthInfo = C_Calendar.GetMonthInfo(0)192local today = tonumber(date("%d"))193194local numEvents = C_Calendar.GetNumDayEvents(today, 0)195for i = 1, numEvents do196 local event = C_Calendar.GetDayEvent(today, i, 0)197 if event then198 print(event.title, "-", event.calendarType)199 end200end201```202203### Create a Guild Event204205```lua206C_Calendar.CreateGuildSignUpEvent()207C_Calendar.EventSetTitle("Raid Night - Mythic")208C_Calendar.EventSetDescription("Bring flasks and food.")209C_Calendar.EventSetDate(3, 15, 2026) -- March 15, 2026210C_Calendar.EventSetTime(20, 0) -- 8:00 PM211C_Calendar.EventSetType(1) -- Raid type212C_Calendar.AddEvent()213```214215### Check Upcoming Holidays216217```lua218C_Calendar.OpenCalendar()219local monthInfo = C_Calendar.GetMonthInfo(0)220221for day = 1, monthInfo.numDays do222 local numEvents = C_Calendar.GetNumDayEvents(day, 0)223 for i = 1, numEvents do224 local event = C_Calendar.GetDayEvent(day, i, 0)225 if event and event.calendarType == "HOLIDAY" then226 print("Holiday:", event.title, "- Day", day)227 end228 end229end230```231232---233234## Key Events235236| Event | Payload | Description |237|-------|---------|-------------|238| `CALENDAR_UPDATE_EVENT_LIST` | — | Event list changed |239| `CALENDAR_UPDATE_INVITE_LIST` | hasCompleteList | Invite list changed |240| `CALENDAR_NEW_EVENT` | isCopy | Creating new event |241| `CALENDAR_OPEN_EVENT` | calendarType | Event opened |242| `CALENDAR_CLOSE_EVENT` | — | Event closed |243| `CALENDAR_UPDATE_EVENT` | — | Event data changed |244| `CALENDAR_UPDATE_PENDING_INVITES` | — | Pending invites changed |245| `CALENDAR_EVENT_ALARM` | title, hour, minute | Event alarm |246| `CALENDAR_ACTION_PENDING` | pending | Action in progress |247| `CALENDAR_UPDATE_GUILD_EVENTS` | — | Guild events updated |248| `CALENDAR_UPDATE_ERROR` | errorReason | Calendar error |249250---251252## Gotchas & Restrictions2532541. **OpenCalendar() required** — Must call `C_Calendar.OpenCalendar()` before using other calendar functions.2552. **Offset-based navigation** — Day and month parameters are offsets from current, not absolute (for most functions).2563. **Invite permissions** — Only event owners/moderators can manage invites.2574. **Calendar types** — `calendarType` distinguishes PLAYER events from HOLIDAY, SYSTEM, RAID_LOCKOUT, etc.2585. **Mass invite limits** — Guild/community mass invites have level and rank filters.2596. **Event creation requires hardware** — `AddEvent()` typically requires user interaction.2607. **Holiday info is read-only** — Holidays are system-generated and cannot be modified.2618. **Calendar data is async** — Wait for `CALENDAR_UPDATE_EVENT_LIST` after opening the calendar.262263---264> Converted and distributed by [TomeVault](https://tomevault.io/claim/jburlison) — claim your Tome and manage your conversions.265<!-- tomevault:4.0:skill_md:2026-04-13 -->