skills/jburlison/wowaddonapiagents/wow-api-calendar-events

wow-api-calendar-events

SKILL.md

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

  1. OpenCalendar() required — Must call C_Calendar.OpenCalendar() before using other calendar functions.
  2. Offset-based navigation — Day and month parameters are offsets from current, not absolute (for most functions).
  3. Invite permissions — Only event owners/moderators can manage invites.
  4. Calendar typescalendarType distinguishes PLAYER events from HOLIDAY, SYSTEM, RAID_LOCKOUT, etc.
  5. Mass invite limits — Guild/community mass invites have level and rank filters.
  6. Event creation requires hardwareAddEvent() typically requires user interaction.
  7. Holiday info is read-only — Holidays are system-generated and cannot be modified.
  8. Calendar data is async — Wait for CALENDAR_UPDATE_EVENT_LIST after opening the calendar.
Weekly Installs
3
GitHub Stars
8
First Seen
11 days ago
Installed on
cline3
github-copilot3
codex3
gemini-cli3
cursor3
opencode3