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
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
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
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.