Miscellaneous Systems API (Retail — Patch 12.0.0)
Catch-all reference for smaller API systems that don't warrant individual skills.
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
This skill covers ~40 smaller API systems grouped by category:
-
NPC Interaction — GossipInfo, PlayerChoice, PlayerInteractionManager, ImmersiveInteraction
-
Tooltips — TooltipInfo, TooltipComparison
-
UI Systems — Tutorial, SplashScreen, SlashCommand, ClickBindings, MirrorTimer
-
Cinematics & Media — Cinematic, Movie, ModelInfo
-
Social/Account — ReportSystem, UserFeedback, ParentalControls, RecruitAFriend
-
Game Systems — ChromieTimeInfo, AlliedRaces, WarbandSceneInfo, PerksActivities
-
Utility — Log, EventUtils, Localization, Locale
-
Legacy — GarrisonInfo, Covenant/Soulbinds, AzeriteItem, ResearchInfo, ContributionCollector
NPC Interaction
C_GossipInfo — NPC Dialog
Function Returns Description
C_GossipInfo.GetOptions()
options
Available dialog options
C_GossipInfo.GetText()
text
NPC dialog text
C_GossipInfo.GetNumOptions()
numOptions
Number of options
C_GossipInfo.SelectOption(optionID, text, confirmed)
— Select dialog option
C_GossipInfo.SelectOptionByIndex(index)
— Select by index
C_GossipInfo.GetNumAvailableQuests()
numQuests
Available quests
C_GossipInfo.GetAvailableQuests()
quests
Available quest list
C_GossipInfo.GetNumActiveQuests()
numQuests
Active quests
C_GossipInfo.GetActiveQuests()
quests
Active quest list
C_GossipInfo.SelectAvailableQuest(questID)
— Select available quest
C_GossipInfo.SelectActiveQuest(questID)
— Select active quest
C_GossipInfo.ForceGossip()
forceGossip
Force gossip display?
C_GossipInfo.CloseGossip()
— Close gossip window
C_GossipInfo.GetPoiForUiMapID(uiMapID)
poiInfo
POI for map
C_GossipInfo.GetPoiInfo(uiMapID, gossipPoiID)
poiInfo
Specific POI info
C_GossipInfo.GetCustomGossipDescriptionString()
description
Custom description
C_GossipInfo.RefreshOptions()
— Refresh options
Gossip Option Fields
-
gossipOptionID — Unique option ID
-
name — Option text
-
icon — Option icon
-
status — Status enum
-
orderIndex — Sort order
-
flags — Option flags
-
overrideIconID — Override icon
-
selectOptionWhenOnlyOption — Auto-select?
-
spellID — Associated spell
C_PlayerChoice — Player Choices
Function Returns Description
C_PlayerChoice.GetCurrentPlayerChoiceInfo()
choiceInfo
Current choice
C_PlayerChoice.GetNumPlayerChoices()
numChoices
Number of choices
C_PlayerChoice.GetPlayerChoiceOptionInfo(optionIndex)
optionInfo
Option details
C_PlayerChoice.GetPlayerChoiceRewardInfo(rewardIndex)
rewardInfo
Reward details
C_PlayerChoice.SendPlayerChoiceResponse(responseID)
— Make choice
C_PlayerChoice.IsWaitingForPlayerChoiceResponse()
isWaiting
Response pending?
C_PlayerChoice.OnUIClosed()
— UI closed callback
C_PlayerChoice.GetRemainingTime()
seconds
Time limit
C_PlayerInteractionManager — Interaction Windows
Function Returns Description
C_PlayerInteractionManager.ClearInteraction(type)
cleared
Close interaction
C_PlayerInteractionManager.ReplaceInteraction(type, target)
— Replace interaction
C_PlayerInteractionManager.IsInteractingWithNpcOfType(type)
isInteracting
Interacting with type?
C_PlayerInteractionManager.GetCurrentInteractionType()
type
Current interaction
Player Interaction Types (Enum.PlayerInteractionType)
Name Description
Banker
Bank NPC
Merchant
Vendor
Trainer
Trainer
MailInfo
Mailbox
AuctionHouse
Auction House
GuildBanker
Guild bank
Transmogrifier
Transmog NPC
VoidStorageBanker
Void storage
StableManager
Stable master
BarberShop
Barber shop
C_ImmersiveInteraction — Immersive NPC
Function Returns Description
C_ImmersiveInteraction.GetCurrentInteraction()
interactionInfo
Current immersive interaction
C_ImmersiveInteraction.IsActive()
isActive
Immersive mode active?
Tooltips
C_TooltipInfo — Tooltip Data Provider
Function Returns Description
C_TooltipInfo.GetItemByID(itemID)
tooltipData
Item tooltip data
C_TooltipInfo.GetItemByItemLink(itemLink)
tooltipData
Tooltip from link
C_TooltipInfo.GetSpellByID(spellID)
tooltipData
Spell tooltip
C_TooltipInfo.GetUnitAura(unit, index, filter)
tooltipData
Aura tooltip
C_TooltipInfo.GetHyperlink(hyperlink)
tooltipData
Generic hyperlink tooltip
C_TooltipInfo.GetInventoryItem(unit, slot)
tooltipData
Equipped item tooltip
C_TooltipInfo.GetBagItem(bag, slot)
tooltipData
Bag item tooltip
C_TooltipInfo.GetGuildBankItem(tab, slot)
tooltipData
Guild bank tooltip
C_TooltipInfo.GetVoidStorageItem(slot)
tooltipData
Void storage tooltip
C_TooltipInfo.GetAchievementByID(achievementID)
tooltipData
Achievement tooltip
C_TooltipInfo.GetCurrencyByID(currencyID)
tooltipData
Currency tooltip
C_TooltipInfo.GetMountBySpellID(spellID)
tooltipData
Mount tooltip
C_TooltipInfo.GetPetByID(petID)
tooltipData
Pet tooltip
C_TooltipInfo.GetToyByItemID(itemID)
tooltipData
Toy tooltip
C_TooltipInfo.GetQuestItem(type, index)
tooltipData
Quest reward tooltip
C_TooltipComparison — Item Comparison
Function Returns Description
C_TooltipComparison.GetItemComparisonInfo(tooltipData)
comparisonInfo
Compare items
C_TooltipComparison.GetItemComparisonDelta(tooltipData)
delta
Stat differences
UI Systems
Tutorial
Function Returns Description
C_Tutorial.AcknowledgeTutorial(tutorialID)
— Mark tutorial seen
C_Tutorial.IsTutorialFlagged(tutorialID)
isFlagged
Already shown?
C_Tutorial.SetTutorialFlag(tutorialID, flagged)
— Set flag
SplashScreen
Function Returns Description
C_SplashScreen.AcknowledgeSplash()
— Dismiss splash
C_SplashScreen.CanViewSplashScreen()
canView
Can show splash?
C_SplashScreen.RequestLatestSplashScreen()
— Request latest
C_SplashScreen.ShouldShowSplashScreen()
shouldShow
Should display?
SlashCommand
Function Returns Description
SlashCmdList["COMMANDNAME"]
— Register slash command
SLASH_COMMANDNAME1 = "/cmd"
— Define slash trigger
hash_SlashCmdList
— Internal hash table
ClickBindings
Function Returns Description
C_ClickBindings.GetBindingType(modifiers, button)
bindingType
Binding at key combo
C_ClickBindings.SetBindingType(modifiers, button, type)
— Set binding
C_ClickBindings.ResetBindings()
— Reset all
C_ClickBindings.GetProfileInfo()
profileInfo
Profile data
MirrorTimer — Breath/Fatigue Bars
Function Returns Description
GetMirrorTimerInfo(index)
timer, initial, maxValue, scale, paused, label
Timer info
GetMirrorTimerProgress(timer)
value
Timer value
MIRRORTIMER_NUMTIMERS
3 Max timers
Cinematics & Media
Cinematic
Function Returns Description
OpeningCinematic()
— Play opening cinematic
CinematicFinished(id, didCancel)
— Cinematic ended
IsInCinematicScene()
inCinematic
In cinematic?
StopCinematic()
— Stop cinematic
InCinematic()
inCinematic
Legacy cinematic check
Movie
Function Returns Description
MovieFrame.PlayMovie(movieID)
— Play movie
GameMovieFinished()
— Movie ended callback
C_ModelInfo — Model Data
Function Returns Description
C_ModelInfo.GetModelSceneInfoByID(sceneID)
sceneInfo
Scene info
C_ModelInfo.GetModelSceneActorInfoByID(actorID)
actorInfo
Actor info
C_ModelInfo.GetModelSceneCameraInfoByID(cameraID)
cameraInfo
Camera info
C_ModelInfo.AddActiveModelScene(frame, sceneID)
— Add scene to frame
C_ModelInfo.ClearActiveModelScene(frame)
— Clear scene
Social / Account
C_ReportSystem — Player Reports
Function Returns Description
C_ReportSystem.CanReportPlayer(playerLocation)
canReport
Can report?
C_ReportSystem.SendReport(reportInfo)
— Submit report
C_ReportSystem.GetMajorCategoriesForReportType(reportType)
categories
Report categories
C_ReportSystem.GetMinorCategoriesForMajorCategory(majorCategory)
minorCategories
Sub-categories
C_ReportSystem.InitiateReportPlayer(complaintType, playerName)
— Start report flow
C_UserFeedback — Feedback System
Function Returns Description
C_UserFeedback.SubmitBug(description)
— Submit bug report
C_UserFeedback.SubmitSuggestion(description)
— Submit suggestion
C_ParentalControls — Parental Controls
Function Returns Description
C_ParentalControls.GetRemainingPlayTime()
minutes
Play time left
C_ParentalControls.IsPlayTimeActive()
isActive
Play time limit?
C_RecruitAFriend — Recruit A Friend
Function Returns Description
C_RecruitAFriend.GetRecruitInfo()
recruitInfo
RAF info
C_RecruitAFriend.IsEnabled()
enabled
RAF enabled?
C_RecruitAFriend.IsRecruitingEnabled()
enabled
Can recruit?
C_RecruitAFriend.GenerateLink()
link
Generate RAF link
C_RecruitAFriend.ClaimActivityReward(activityID)
— Claim RAF reward
C_RecruitAFriend.ClaimNextReward()
— Claim next
Game Systems
C_ChromieTimeInfo — Chromie Time (Level Scaling)
Function Returns Description
C_ChromieTimeInfo.GetChromieTimeExpansionOptions()
options
Available expansions
C_ChromieTimeInfo.SelectChromieTimeExpansionOption(optionID)
— Select expansion
C_ChromieTimeInfo.GetChromieTimeExpansionOption(optionID)
optionInfo
Option info
C_ChromieTimeInfo.GetCurrentChromieTimeExpansionOption()
optionInfo
Current selection
C_ChromieTimeInfo.CloseChromieTimeUI()
— Close UI
C_AlliedRaces — Allied Races
Function Returns Description
C_AlliedRaces.GetAllRacialAbilitiesForRace(raceID)
abilities
Race abilities
C_AlliedRaces.GetRaceInfoByID(raceID)
raceInfo
Race info
C_AlliedRaces.ClearAlliedRaceDetailsGiver()
— Clear details
C_AlliedRaces.GetAlliedRaceInfo(raceID)
info
Allied race details
C_WarbandSceneInfo — Warband Scenes
Function Returns Description
C_WarbandSceneInfo.GetWarbandSceneInfo()
sceneInfo
Warband scene data
C_WarbandSceneInfo.GetCharacterEntries()
entries
Character positions
C_WarbandSceneInfo.SetCharacterEntry(index, characterInfo)
— Set character slot
C_WarbandSceneInfo.GetAvailableCharacters()
characters
Available characters
C_WarbandSceneInfo.SaveScene()
— Save warband scene
C_PerksActivities — Monthly Activities
Function Returns Description
C_PerksActivities.GetPerksActivitiesInfo()
info
Activities overview
C_PerksActivities.GetTrackedPerksActivities()
activities
Tracked activities
C_PerksActivities.AddTrackedPerksActivity(activityID)
— Track activity
C_PerksActivities.RemoveTrackedPerksActivity(activityID)
— Untrack
C_PerksActivities.GetPerksActivityInfo(activityID)
activityInfo
Activity details
C_PerksActivities.GetAllPerksActivityTags()
tags
All tags/categories
Utility Systems
C_Localization / Locale
Function Returns Description
GetLocale()
locale
Game locale (e.g., "enUS")
GetCurrentRegion()
regionID
Current region
GetCurrentRegionName()
regionName
Region name
Log
Function Returns Description
LoggingCombat(enable)
— Toggle combat log file
LoggingChat(enable)
— Toggle chat log file
IsLoggingCombat()
isLogging
Combat logging?
IsLoggingChat()
isLogging
Chat logging?
C_EventUtils
Function Returns Description
C_EventUtils.IsEventValid(event)
isValid
Is event string valid?
Legacy Systems (Deprecated/Maintained)
These systems originated in earlier expansions. APIs may still function but the content is legacy.
GarrisonInfo (WoD/Legion)
Function Returns Description
C_Garrison.GetFollowerInfo(followerID)
followerInfo
Follower data
C_Garrison.GetFollowers(followerType)
followers
Follower list
C_Garrison.GetLandingPageInfo(garrType)
info
Landing page
C_Garrison.GetBuildings(garrType)
buildings
Building list
C_Garrison.GetMissions(garrType)
missions
Available missions
C_Garrison.IsOnGarrisonMap()
onMap
In garrison?
Covenant / Soulbinds (Shadowlands)
Function Returns Description
C_Covenants.GetActiveCovenantID()
covenantID
Active covenant
C_Covenants.GetCovenantData(covenantID)
covenantData
Covenant info
C_Soulbinds.GetActiveSoulbindID()
soulbindID
Active soulbind
C_Soulbinds.GetSoulbindData(soulbindID)
soulbindData
Soulbind info
C_Soulbinds.GetConduitItemLevel(conduitID, conduitRank)
itemLevel
Conduit ilvl
AzeriteItem (Battle for Azeroth)
Function Returns Description
C_AzeriteItem.IsAzeriteItem(itemLocation)
isAzerite
Is Azerite item?
C_AzeriteItem.GetPowerLevel(azeriteItemLocation)
powerLevel
Necklace level
C_AzeriteItem.GetAzeriteItemXPInfo(azeriteItemLocation)
xp, totalLevelXP
XP info
C_AzeriteEmpoweredItem.GetPowerInfo(powerID)
powerInfo
Trait info
C_AzeriteEmpoweredItem.SelectPower(azeriteItemLocation, powerID)
— Select trait
ResearchInfo (Archaeology — Removed)
Function Returns Description
C_ResearchInfo.GetDigSitesForMap(uiMapID)
digSites
Dig sites (legacy)
Note: Archaeology as a profession was removed, but some API remnants persist.
ContributionCollector (Legion)
Function Returns Description
C_ContributionCollector.GetState(contributionID)
state
Contribution state
C_ContributionCollector.GetName(contributionID)
name
Contribution name
C_ContributionCollector.Contribute(contributionID)
— Contribute
Common Patterns
Handle NPC Gossip
local f = CreateFrame("Frame") f:RegisterEvent("GOSSIP_SHOW") f:SetScript("OnEvent", function() local options = C_GossipInfo.GetOptions() for i, option in ipairs(options) do print(i, option.name, option.gossipOptionID) end
-- Auto-select if only one option
if #options == 1 and options[1].selectOptionWhenOnlyOption then
C_GossipInfo.SelectOption(options[1].gossipOptionID)
end
end)
Display Player Choice
local f = CreateFrame("Frame") f:RegisterEvent("PLAYER_CHOICE_UPDATE") f:SetScript("OnEvent", function() local choiceInfo = C_PlayerChoice.GetCurrentPlayerChoiceInfo() if choiceInfo then print("Choice:", choiceInfo.questionText) for i = 1, C_PlayerChoice.GetNumPlayerChoices() do local option = C_PlayerChoice.GetPlayerChoiceOptionInfo(i) if option then print(" Option", i, ":", option.header, "-", option.description) end end end end)
Get Tooltip Data Programmatically
-- Get item tooltip text without showing tooltip local tooltipData = C_TooltipInfo.GetItemByID(12345) if tooltipData then TooltipUtil.SurfaceArgs(tooltipData) for _, line in ipairs(tooltipData.lines) do TooltipUtil.SurfaceArgs(line) print(line.leftText) end end
Check Chromie Time Status
local function ShowChromieTimeOptions() local options = C_ChromieTimeInfo.GetChromieTimeExpansionOptions() if options then for _, option in ipairs(options) do print(option.name, option.description, option.isCurrent and "(ACTIVE)" or "") end end end
Register Slash Commands
SLASH_MYADDON1 = "/myaddon" SLASH_MYADDON2 = "/ma" SlashCmdList["MYADDON"] = function(msg) local cmd, args = msg:match("^(%S+)%s*(.*)") cmd = cmd and cmd:lower() or msg:lower()
if cmd == "config" then
-- Open config
elseif cmd == "help" then
print("/myaddon config - Open settings")
print("/myaddon help - Show help")
else
print("Unknown command. Use /myaddon help")
end
end
Key Events
Event Payload Description
GOSSIP_SHOW
uiTextureKit NPC gossip opened
GOSSIP_CLOSED
— Gossip window closed
GOSSIP_CONFIRM
gossipID, text, cost Gossip confirmation
PLAYER_CHOICE_UPDATE
— Player choice available
PLAYER_CHOICE_CLOSE
— Choice closed
PLAYER_INTERACTION_MANAGER_FRAME_SHOW
type Interaction opened
PLAYER_INTERACTION_MANAGER_FRAME_HIDE
type Interaction closed
CINEMATIC_START
canBeCancelled Cinematic starting
CINEMATIC_STOP
— Cinematic ended
PLAY_MOVIE
movieID Movie playing
STOP_MOVIE
— Movie stopped
SPLASH_SCREEN_SHOW
— Show splash screen
SPLASH_SCREEN_HIDE
— Hide splash screen
TUTORIAL_TRIGGER
tutorialID Tutorial triggered
MIRROR_TIMER_START
timer, value, maxValue, scale, paused, label Timer started
MIRROR_TIMER_STOP
timer Timer stopped
MIRROR_TIMER_PAUSE
timer, paused Timer paused
CHROMIE_TIME_OPEN
— Chromie Time UI opened
CHROMIE_TIME_CLOSE
— Chromie Time UI closed
GARRISON_UPDATE
— Garrison data updated
PERKS_ACTIVITIES_TRACKED_UPDATED
— Activity tracking changed
Gotchas & Restrictions
-
Gossip auto-select — selectOptionWhenOnlyOption flag means the game may auto-select; don't assume GOSSIP_SHOW always waits for input.
-
PlayerInteractionManager types — Use Enum.PlayerInteractionType for type-safe checks; don't hardcode integers.
-
Tooltip data API (12.0.0) — Use C_TooltipInfo for programmatic tooltip access rather than scraping GameTooltip text lines.
-
Legacy API availability — Garrison, Covenant, and Azerite APIs still exist but content is no longer current. Some may be removed in future patches.
-
Cinematic blocking — Some cinematics block all addon UI; plan for CINEMATIC_START / CINEMATIC_STOP .
-
Player choices are timed — Some choices have countdowns. Check GetRemainingTime() .
-
SlashCmdList keys — Command names in SlashCmdList must be UPPERCASE. The slash aliases (SLASH_NAME1) are case-insensitive for matching.
-
Chromie Time level cap — Chromie Time is only available to characters below the expansion's level range.
-
Gossip POI — GetPoiForUiMapID() returns quest giver locations on the map, useful for minimap tracking.
-
Report system — Reports require valid player locations; use C_ReportSystem.CanReportPlayer() first.