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.
Converted and distributed by TomeVault — claim your Tome and manage your conversions.
1---2name: wow-api-misc-systems3description: Catch-all reference for smaller WoW Retail API systems that don't warrant individual skills. Covers Tutorial, ReportSystem, SplashScreen, Cinematic, ChromieTimeInfo, AlliedRaces, UserFeedback, WarbandSceneInfo, ResearchInfo (archaeology), Log, EventUtils, SlashCommand, ClickBindings, TooltipInfo, TooltipComparison, GossipInfo (NPC dialog), PlayerChoice, PlayerInteractionManager, ImmersiveInteraction, Localization, Locale, MirrorTimer, ModelInfo, Movie, ParentalControls, PerksActivities, RecruitAFriend, ContributionCollector, GarrisonInfo (legacy), Covenant/Soulbinds (legacy), AzeriteItem (legacy), and other utility namespaces. Use when working with NPC gossip/dialog, player choices, tooltips, tutorials, cinematics, Chromie Time, allied races, warbands, report system, or any miscellaneous game system. Use when this capability is needed.4---56# Miscellaneous Systems API (Retail — Patch 12.0.0)78Catch-all reference for smaller API systems that don't warrant individual skills.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## Scope1718This skill covers ~40 smaller API systems grouped by category:1920- **NPC Interaction** — GossipInfo, PlayerChoice, PlayerInteractionManager, ImmersiveInteraction21- **Tooltips** — TooltipInfo, TooltipComparison22- **UI Systems** — Tutorial, SplashScreen, SlashCommand, ClickBindings, MirrorTimer23- **Cinematics & Media** — Cinematic, Movie, ModelInfo24- **Social/Account** — ReportSystem, UserFeedback, ParentalControls, RecruitAFriend25- **Game Systems** — ChromieTimeInfo, AlliedRaces, WarbandSceneInfo, PerksActivities26- **Utility** — Log, EventUtils, Localization, Locale27- **Legacy** — GarrisonInfo, Covenant/Soulbinds, AzeriteItem, ResearchInfo, ContributionCollector2829---3031## NPC Interaction3233### C_GossipInfo — NPC Dialog3435| Function | Returns | Description |36|----------|---------|-------------|37| `C_GossipInfo.GetOptions()` | `options` | Available dialog options |38| `C_GossipInfo.GetText()` | `text` | NPC dialog text |39| `C_GossipInfo.GetNumOptions()` | `numOptions` | Number of options |40| `C_GossipInfo.SelectOption(optionID, text, confirmed)` | — | Select dialog option |41| `C_GossipInfo.SelectOptionByIndex(index)` | — | Select by index |42| `C_GossipInfo.GetNumAvailableQuests()` | `numQuests` | Available quests |43| `C_GossipInfo.GetAvailableQuests()` | `quests` | Available quest list |44| `C_GossipInfo.GetNumActiveQuests()` | `numQuests` | Active quests |45| `C_GossipInfo.GetActiveQuests()` | `quests` | Active quest list |46| `C_GossipInfo.SelectAvailableQuest(questID)` | — | Select available quest |47| `C_GossipInfo.SelectActiveQuest(questID)` | — | Select active quest |48| `C_GossipInfo.ForceGossip()` | `forceGossip` | Force gossip display? |49| `C_GossipInfo.CloseGossip()` | — | Close gossip window |50| `C_GossipInfo.GetPoiForUiMapID(uiMapID)` | `poiInfo` | POI for map |51| `C_GossipInfo.GetPoiInfo(uiMapID, gossipPoiID)` | `poiInfo` | Specific POI info |52| `C_GossipInfo.GetCustomGossipDescriptionString()` | `description` | Custom description |53| `C_GossipInfo.RefreshOptions()` | — | Refresh options |5455#### Gossip Option Fields5657- `gossipOptionID` — Unique option ID58- `name` — Option text59- `icon` — Option icon60- `status` — Status enum61- `orderIndex` — Sort order62- `flags` — Option flags63- `overrideIconID` — Override icon64- `selectOptionWhenOnlyOption` — Auto-select?65- `spellID` — Associated spell6667### C_PlayerChoice — Player Choices6869| Function | Returns | Description |70|----------|---------|-------------|71| `C_PlayerChoice.GetCurrentPlayerChoiceInfo()` | `choiceInfo` | Current choice |72| `C_PlayerChoice.GetNumPlayerChoices()` | `numChoices` | Number of choices |73| `C_PlayerChoice.GetPlayerChoiceOptionInfo(optionIndex)` | `optionInfo` | Option details |74| `C_PlayerChoice.GetPlayerChoiceRewardInfo(rewardIndex)` | `rewardInfo` | Reward details |75| `C_PlayerChoice.SendPlayerChoiceResponse(responseID)` | — | Make choice |76| `C_PlayerChoice.IsWaitingForPlayerChoiceResponse()` | `isWaiting` | Response pending? |77| `C_PlayerChoice.OnUIClosed()` | — | UI closed callback |78| `C_PlayerChoice.GetRemainingTime()` | `seconds` | Time limit |7980### C_PlayerInteractionManager — Interaction Windows8182| Function | Returns | Description |83|----------|---------|-------------|84| `C_PlayerInteractionManager.ClearInteraction(type)` | `cleared` | Close interaction |85| `C_PlayerInteractionManager.ReplaceInteraction(type, target)` | — | Replace interaction |86| `C_PlayerInteractionManager.IsInteractingWithNpcOfType(type)` | `isInteracting` | Interacting with type? |87| `C_PlayerInteractionManager.GetCurrentInteractionType()` | `type` | Current interaction |8889#### Player Interaction Types (Enum.PlayerInteractionType)9091| Name | Description |92|------|-------------|93| `Banker` | Bank NPC |94| `Merchant` | Vendor |95| `Trainer` | Trainer |96| `MailInfo` | Mailbox |97| `AuctionHouse` | Auction House |98| `GuildBanker` | Guild bank |99| `Transmogrifier` | Transmog NPC |100| `VoidStorageBanker` | Void storage |101| `StableManager` | Stable master |102| `BarberShop` | Barber shop |103104### C_ImmersiveInteraction — Immersive NPC105106| Function | Returns | Description |107|----------|---------|-------------|108| `C_ImmersiveInteraction.GetCurrentInteraction()` | `interactionInfo` | Current immersive interaction |109| `C_ImmersiveInteraction.IsActive()` | `isActive` | Immersive mode active? |110111---112113## Tooltips114115### C_TooltipInfo — Tooltip Data Provider116117| Function | Returns | Description |118|----------|---------|-------------|119| `C_TooltipInfo.GetItemByID(itemID)` | `tooltipData` | Item tooltip data |120| `C_TooltipInfo.GetItemByItemLink(itemLink)` | `tooltipData` | Tooltip from link |121| `C_TooltipInfo.GetSpellByID(spellID)` | `tooltipData` | Spell tooltip |122| `C_TooltipInfo.GetUnitAura(unit, index, filter)` | `tooltipData` | Aura tooltip |123| `C_TooltipInfo.GetHyperlink(hyperlink)` | `tooltipData` | Generic hyperlink tooltip |124| `C_TooltipInfo.GetInventoryItem(unit, slot)` | `tooltipData` | Equipped item tooltip |125| `C_TooltipInfo.GetBagItem(bag, slot)` | `tooltipData` | Bag item tooltip |126| `C_TooltipInfo.GetGuildBankItem(tab, slot)` | `tooltipData` | Guild bank tooltip |127| `C_TooltipInfo.GetVoidStorageItem(slot)` | `tooltipData` | Void storage tooltip |128| `C_TooltipInfo.GetAchievementByID(achievementID)` | `tooltipData` | Achievement tooltip |129| `C_TooltipInfo.GetCurrencyByID(currencyID)` | `tooltipData` | Currency tooltip |130| `C_TooltipInfo.GetMountBySpellID(spellID)` | `tooltipData` | Mount tooltip |131| `C_TooltipInfo.GetPetByID(petID)` | `tooltipData` | Pet tooltip |132| `C_TooltipInfo.GetToyByItemID(itemID)` | `tooltipData` | Toy tooltip |133| `C_TooltipInfo.GetQuestItem(type, index)` | `tooltipData` | Quest reward tooltip |134135### C_TooltipComparison — Item Comparison136137| Function | Returns | Description |138|----------|---------|-------------|139| `C_TooltipComparison.GetItemComparisonInfo(tooltipData)` | `comparisonInfo` | Compare items |140| `C_TooltipComparison.GetItemComparisonDelta(tooltipData)` | `delta` | Stat differences |141142---143144## UI Systems145146### Tutorial147148| Function | Returns | Description |149|----------|---------|-------------|150| `C_Tutorial.AcknowledgeTutorial(tutorialID)` | — | Mark tutorial seen |151| `C_Tutorial.IsTutorialFlagged(tutorialID)` | `isFlagged` | Already shown? |152| `C_Tutorial.SetTutorialFlag(tutorialID, flagged)` | — | Set flag |153154### SplashScreen155156| Function | Returns | Description |157|----------|---------|-------------|158| `C_SplashScreen.AcknowledgeSplash()` | — | Dismiss splash |159| `C_SplashScreen.CanViewSplashScreen()` | `canView` | Can show splash? |160| `C_SplashScreen.RequestLatestSplashScreen()` | — | Request latest |161| `C_SplashScreen.ShouldShowSplashScreen()` | `shouldShow` | Should display? |162163### SlashCommand164165| Function | Returns | Description |166|----------|---------|-------------|167| `SlashCmdList["COMMANDNAME"]` | — | Register slash command |168| `SLASH_COMMANDNAME1 = "/cmd"` | — | Define slash trigger |169| `hash_SlashCmdList` | — | Internal hash table |170171### ClickBindings172173| Function | Returns | Description |174|----------|---------|-------------|175| `C_ClickBindings.GetBindingType(modifiers, button)` | `bindingType` | Binding at key combo |176| `C_ClickBindings.SetBindingType(modifiers, button, type)` | — | Set binding |177| `C_ClickBindings.ResetBindings()` | — | Reset all |178| `C_ClickBindings.GetProfileInfo()` | `profileInfo` | Profile data |179180### MirrorTimer — Breath/Fatigue Bars181182| Function | Returns | Description |183|----------|---------|-------------|184| `GetMirrorTimerInfo(index)` | `timer, initial, maxValue, scale, paused, label` | Timer info |185| `GetMirrorTimerProgress(timer)` | `value` | Timer value |186| `MIRRORTIMER_NUMTIMERS` | 3 | Max timers |187188---189190## Cinematics & Media191192### Cinematic193194| Function | Returns | Description |195|----------|---------|-------------|196| `OpeningCinematic()` | — | Play opening cinematic |197| `CinematicFinished(id, didCancel)` | — | Cinematic ended |198| `IsInCinematicScene()` | `inCinematic` | In cinematic? |199| `StopCinematic()` | — | Stop cinematic |200| `InCinematic()` | `inCinematic` | Legacy cinematic check |201202### Movie203204| Function | Returns | Description |205|----------|---------|-------------|206| `MovieFrame.PlayMovie(movieID)` | — | Play movie |207| `GameMovieFinished()` | — | Movie ended callback |208209### C_ModelInfo — Model Data210211| Function | Returns | Description |212|----------|---------|-------------|213| `C_ModelInfo.GetModelSceneInfoByID(sceneID)` | `sceneInfo` | Scene info |214| `C_ModelInfo.GetModelSceneActorInfoByID(actorID)` | `actorInfo` | Actor info |215| `C_ModelInfo.GetModelSceneCameraInfoByID(cameraID)` | `cameraInfo` | Camera info |216| `C_ModelInfo.AddActiveModelScene(frame, sceneID)` | — | Add scene to frame |217| `C_ModelInfo.ClearActiveModelScene(frame)` | — | Clear scene |218219---220221## Social / Account222223### C_ReportSystem — Player Reports224225| Function | Returns | Description |226|----------|---------|-------------|227| `C_ReportSystem.CanReportPlayer(playerLocation)` | `canReport` | Can report? |228| `C_ReportSystem.SendReport(reportInfo)` | — | Submit report |229| `C_ReportSystem.GetMajorCategoriesForReportType(reportType)` | `categories` | Report categories |230| `C_ReportSystem.GetMinorCategoriesForMajorCategory(majorCategory)` | `minorCategories` | Sub-categories |231| `C_ReportSystem.InitiateReportPlayer(complaintType, playerName)` | — | Start report flow |232233### C_UserFeedback — Feedback System234235| Function | Returns | Description |236|----------|---------|-------------|237| `C_UserFeedback.SubmitBug(description)` | — | Submit bug report |238| `C_UserFeedback.SubmitSuggestion(description)` | — | Submit suggestion |239240### C_ParentalControls — Parental Controls241242| Function | Returns | Description |243|----------|---------|-------------|244| `C_ParentalControls.GetRemainingPlayTime()` | `minutes` | Play time left |245| `C_ParentalControls.IsPlayTimeActive()` | `isActive` | Play time limit? |246247### C_RecruitAFriend — Recruit A Friend248249| Function | Returns | Description |250|----------|---------|-------------|251| `C_RecruitAFriend.GetRecruitInfo()` | `recruitInfo` | RAF info |252| `C_RecruitAFriend.IsEnabled()` | `enabled` | RAF enabled? |253| `C_RecruitAFriend.IsRecruitingEnabled()` | `enabled` | Can recruit? |254| `C_RecruitAFriend.GenerateLink()` | `link` | Generate RAF link |255| `C_RecruitAFriend.ClaimActivityReward(activityID)` | — | Claim RAF reward |256| `C_RecruitAFriend.ClaimNextReward()` | — | Claim next |257258---259260## Game Systems261262### C_ChromieTimeInfo — Chromie Time (Level Scaling)263264| Function | Returns | Description |265|----------|---------|-------------|266| `C_ChromieTimeInfo.GetChromieTimeExpansionOptions()` | `options` | Available expansions |267| `C_ChromieTimeInfo.SelectChromieTimeExpansionOption(optionID)` | — | Select expansion |268| `C_ChromieTimeInfo.GetChromieTimeExpansionOption(optionID)` | `optionInfo` | Option info |269| `C_ChromieTimeInfo.GetCurrentChromieTimeExpansionOption()` | `optionInfo` | Current selection |270| `C_ChromieTimeInfo.CloseChromieTimeUI()` | — | Close UI |271272### C_AlliedRaces — Allied Races273274| Function | Returns | Description |275|----------|---------|-------------|276| `C_AlliedRaces.GetAllRacialAbilitiesForRace(raceID)` | `abilities` | Race abilities |277| `C_AlliedRaces.GetRaceInfoByID(raceID)` | `raceInfo` | Race info |278| `C_AlliedRaces.ClearAlliedRaceDetailsGiver()` | — | Clear details |279| `C_AlliedRaces.GetAlliedRaceInfo(raceID)` | `info` | Allied race details |280281### C_WarbandSceneInfo — Warband Scenes282283| Function | Returns | Description |284|----------|---------|-------------|285| `C_WarbandSceneInfo.GetWarbandSceneInfo()` | `sceneInfo` | Warband scene data |286| `C_WarbandSceneInfo.GetCharacterEntries()` | `entries` | Character positions |287| `C_WarbandSceneInfo.SetCharacterEntry(index, characterInfo)` | — | Set character slot |288| `C_WarbandSceneInfo.GetAvailableCharacters()` | `characters` | Available characters |289| `C_WarbandSceneInfo.SaveScene()` | — | Save warband scene |290291### C_PerksActivities — Monthly Activities292293| Function | Returns | Description |294|----------|---------|-------------|295| `C_PerksActivities.GetPerksActivitiesInfo()` | `info` | Activities overview |296| `C_PerksActivities.GetTrackedPerksActivities()` | `activities` | Tracked activities |297| `C_PerksActivities.AddTrackedPerksActivity(activityID)` | — | Track activity |298| `C_PerksActivities.RemoveTrackedPerksActivity(activityID)` | — | Untrack |299| `C_PerksActivities.GetPerksActivityInfo(activityID)` | `activityInfo` | Activity details |300| `C_PerksActivities.GetAllPerksActivityTags()` | `tags` | All tags/categories |301302---303304## Utility Systems305306### C_Localization / Locale307308| Function | Returns | Description |309|----------|---------|-------------|310| `GetLocale()` | `locale` | Game locale (e.g., "enUS") |311| `GetCurrentRegion()` | `regionID` | Current region |312| `GetCurrentRegionName()` | `regionName` | Region name |313314### Log315316| Function | Returns | Description |317|----------|---------|-------------|318| `LoggingCombat(enable)` | — | Toggle combat log file |319| `LoggingChat(enable)` | — | Toggle chat log file |320| `IsLoggingCombat()` | `isLogging` | Combat logging? |321| `IsLoggingChat()` | `isLogging` | Chat logging? |322323### C_EventUtils324325| Function | Returns | Description |326|----------|---------|-------------|327| `C_EventUtils.IsEventValid(event)` | `isValid` | Is event string valid? |328329---330331## Legacy Systems (Deprecated/Maintained)332333These systems originated in earlier expansions. APIs may still function but the content is legacy.334335### GarrisonInfo (WoD/Legion)336337| Function | Returns | Description |338|----------|---------|-------------|339| `C_Garrison.GetFollowerInfo(followerID)` | `followerInfo` | Follower data |340| `C_Garrison.GetFollowers(followerType)` | `followers` | Follower list |341| `C_Garrison.GetLandingPageInfo(garrType)` | `info` | Landing page |342| `C_Garrison.GetBuildings(garrType)` | `buildings` | Building list |343| `C_Garrison.GetMissions(garrType)` | `missions` | Available missions |344| `C_Garrison.IsOnGarrisonMap()` | `onMap` | In garrison? |345346### Covenant / Soulbinds (Shadowlands)347348| Function | Returns | Description |349|----------|---------|-------------|350| `C_Covenants.GetActiveCovenantID()` | `covenantID` | Active covenant |351| `C_Covenants.GetCovenantData(covenantID)` | `covenantData` | Covenant info |352| `C_Soulbinds.GetActiveSoulbindID()` | `soulbindID` | Active soulbind |353| `C_Soulbinds.GetSoulbindData(soulbindID)` | `soulbindData` | Soulbind info |354| `C_Soulbinds.GetConduitItemLevel(conduitID, conduitRank)` | `itemLevel` | Conduit ilvl |355356### AzeriteItem (Battle for Azeroth)357358| Function | Returns | Description |359|----------|---------|-------------|360| `C_AzeriteItem.IsAzeriteItem(itemLocation)` | `isAzerite` | Is Azerite item? |361| `C_AzeriteItem.GetPowerLevel(azeriteItemLocation)` | `powerLevel` | Necklace level |362| `C_AzeriteItem.GetAzeriteItemXPInfo(azeriteItemLocation)` | `xp, totalLevelXP` | XP info |363| `C_AzeriteEmpoweredItem.GetPowerInfo(powerID)` | `powerInfo` | Trait info |364| `C_AzeriteEmpoweredItem.SelectPower(azeriteItemLocation, powerID)` | — | Select trait |365366### ResearchInfo (Archaeology — Removed)367368| Function | Returns | Description |369|----------|---------|-------------|370| `C_ResearchInfo.GetDigSitesForMap(uiMapID)` | `digSites` | Dig sites (legacy) |371372> **Note:** Archaeology as a profession was removed, but some API remnants persist.373374### ContributionCollector (Legion)375376| Function | Returns | Description |377|----------|---------|-------------|378| `C_ContributionCollector.GetState(contributionID)` | `state` | Contribution state |379| `C_ContributionCollector.GetName(contributionID)` | `name` | Contribution name |380| `C_ContributionCollector.Contribute(contributionID)` | — | Contribute |381382---383384## Common Patterns385386### Handle NPC Gossip387388```lua389local f = CreateFrame("Frame")390f:RegisterEvent("GOSSIP_SHOW")391f:SetScript("OnEvent", function()392 local options = C_GossipInfo.GetOptions()393 for i, option in ipairs(options) do394 print(i, option.name, option.gossipOptionID)395 end396 397 -- Auto-select if only one option398 if #options == 1 and options[1].selectOptionWhenOnlyOption then399 C_GossipInfo.SelectOption(options[1].gossipOptionID)400 end401end)402```403404### Display Player Choice405406```lua407local f = CreateFrame("Frame")408f:RegisterEvent("PLAYER_CHOICE_UPDATE")409f:SetScript("OnEvent", function()410 local choiceInfo = C_PlayerChoice.GetCurrentPlayerChoiceInfo()411 if choiceInfo then412 print("Choice:", choiceInfo.questionText)413 for i = 1, C_PlayerChoice.GetNumPlayerChoices() do414 local option = C_PlayerChoice.GetPlayerChoiceOptionInfo(i)415 if option then416 print(" Option", i, ":", option.header, "-", option.description)417 end418 end419 end420end)421```422423### Get Tooltip Data Programmatically424425```lua426-- Get item tooltip text without showing tooltip427local tooltipData = C_TooltipInfo.GetItemByID(12345)428if tooltipData then429 TooltipUtil.SurfaceArgs(tooltipData)430 for _, line in ipairs(tooltipData.lines) do431 TooltipUtil.SurfaceArgs(line)432 print(line.leftText)433 end434end435```436437### Check Chromie Time Status438439```lua440local function ShowChromieTimeOptions()441 local options = C_ChromieTimeInfo.GetChromieTimeExpansionOptions()442 if options then443 for _, option in ipairs(options) do444 print(option.name, option.description, 445 option.isCurrent and "(ACTIVE)" or "")446 end447 end448end449```450451### Register Slash Commands452453```lua454SLASH_MYADDON1 = "/myaddon"455SLASH_MYADDON2 = "/ma"456SlashCmdList["MYADDON"] = function(msg)457 local cmd, args = msg:match("^(%S+)%s*(.*)")458 cmd = cmd and cmd:lower() or msg:lower()459 460 if cmd == "config" then461 -- Open config462 elseif cmd == "help" then463 print("/myaddon config - Open settings")464 print("/myaddon help - Show help")465 else466 print("Unknown command. Use /myaddon help")467 end468end469```470471---472473## Key Events474475| Event | Payload | Description |476|-------|---------|-------------|477| `GOSSIP_SHOW` | uiTextureKit | NPC gossip opened |478| `GOSSIP_CLOSED` | — | Gossip window closed |479| `GOSSIP_CONFIRM` | gossipID, text, cost | Gossip confirmation |480| `PLAYER_CHOICE_UPDATE` | — | Player choice available |481| `PLAYER_CHOICE_CLOSE` | — | Choice closed |482| `PLAYER_INTERACTION_MANAGER_FRAME_SHOW` | type | Interaction opened |483| `PLAYER_INTERACTION_MANAGER_FRAME_HIDE` | type | Interaction closed |484| `CINEMATIC_START` | canBeCancelled | Cinematic starting |485| `CINEMATIC_STOP` | — | Cinematic ended |486| `PLAY_MOVIE` | movieID | Movie playing |487| `STOP_MOVIE` | — | Movie stopped |488| `SPLASH_SCREEN_SHOW` | — | Show splash screen |489| `SPLASH_SCREEN_HIDE` | — | Hide splash screen |490| `TUTORIAL_TRIGGER` | tutorialID | Tutorial triggered |491| `MIRROR_TIMER_START` | timer, value, maxValue, scale, paused, label | Timer started |492| `MIRROR_TIMER_STOP` | timer | Timer stopped |493| `MIRROR_TIMER_PAUSE` | timer, paused | Timer paused |494| `CHROMIE_TIME_OPEN` | — | Chromie Time UI opened |495| `CHROMIE_TIME_CLOSE` | — | Chromie Time UI closed |496| `GARRISON_UPDATE` | — | Garrison data updated |497| `PERKS_ACTIVITIES_TRACKED_UPDATED` | — | Activity tracking changed |498499---500501## Gotchas & Restrictions5025031. **Gossip auto-select** — `selectOptionWhenOnlyOption` flag means the game may auto-select; don't assume GOSSIP_SHOW always waits for input.5042. **PlayerInteractionManager types** — Use `Enum.PlayerInteractionType` for type-safe checks; don't hardcode integers.5053. **Tooltip data API (12.0.0)** — Use `C_TooltipInfo` for programmatic tooltip access rather than scraping GameTooltip text lines.5064. **Legacy API availability** — Garrison, Covenant, and Azerite APIs still exist but content is no longer current. Some may be removed in future patches.5075. **Cinematic blocking** — Some cinematics block all addon UI; plan for `CINEMATIC_START` / `CINEMATIC_STOP`.5086. **Player choices are timed** — Some choices have countdowns. Check `GetRemainingTime()`.5097. **SlashCmdList keys** — Command names in SlashCmdList must be UPPERCASE. The slash aliases (SLASH_NAME1) are case-insensitive for matching.5108. **Chromie Time level cap** — Chromie Time is only available to characters below the expansion's level range.5119. **Gossip POI** — `GetPoiForUiMapID()` returns quest giver locations on the map, useful for minimap tracking.51210. **Report system** — Reports require valid player locations; use `C_ReportSystem.CanReportPlayer()` first.513514---515> Converted and distributed by [TomeVault](https://tomevault.io/claim/jburlison) — claim your Tome and manage your conversions.516<!-- tomevault:4.0:skill_md:2026-04-13 -->