Transmog API (Retail — Patch 12.0.0)
Comprehensive reference for transmogrification, appearances, sets, outfits, dyes, and barber shop APIs.
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_Transmogrify — Applying transmog at NPC
-
C_TransmogCollection — Appearance sources, categories, collection status
-
C_TransmogSets — Transmog set management
-
C_TransmogOutfits — Outfit save/load
-
C_DyeColor / C_DyeColorInfo — Armor dye system (new in 12.0.0)
-
C_BarberShop — Character customization
C_Transmogrify — Applying Transmog
Function Returns Description
C_Transmogrify.ApplyAllPending()
— Apply all pending transmogs
C_Transmogrify.CanHaveSecondaryAppearanceForSlotID(slotID)
canHave
Has secondary slot?
C_Transmogrify.CanTransmogItem(itemInfo)
canTransmog, selfFailure, canTransmogKnownAppearance, canTransmogUncollected
Can transmog?
C_Transmogrify.CanTransmogItemWithItem(targetItemInfo, sourceItemInfo)
canTransmog
Can transmog source to target?
C_Transmogrify.ClearAllPending()
— Clear all pending transmogs
C_Transmogrify.ClearPending(slotID)
— Clear pending for slot
C_Transmogrify.Close()
— Close transmog window
C_Transmogrify.GetBaseCategory(slotID)
category
Base category for slot
C_Transmogrify.GetCost()
cost
Current transmog cost
C_Transmogrify.GetCreatureDisplayIDForSource(sourceID)
displayID
Creature display for source
C_Transmogrify.GetItemIDForSource(sourceID)
itemID
Item ID for source
C_Transmogrify.GetPending(slotID)
pendingInfo
Pending transmog for slot
C_Transmogrify.GetSlotEffectiveCategory(slotID)
category
Effective category for slot
C_Transmogrify.GetSlotInfo(slotID)
isTransmogrified, hasPending, isPendingCollected, canTransmogrify, cannotTransmogrifyReason, hasUndo, isHideVisual, texture
Slot transmog info
C_Transmogrify.GetSlotUseError(slotID)
errorCode, errorString
Slot error
C_Transmogrify.GetSlotVisualInfo(slotID)
baseSourceID, baseVisualID, appliedSourceID, appliedVisualID, pendingSourceID, pendingVisualID, hasPendingUndo, hideVisual, hasActiveSecondaryAppearance
Slot visual details
C_Transmogrify.SetPending(slotID, transmogType, modification, sourceID)
— Set pending transmog
C_TransmogCollection — Appearance Sources
Source & Appearance Info
Function Returns Description
C_TransmogCollection.GetSourceInfo(sourceID)
sourceInfo
Source details
C_TransmogCollection.GetAppearanceSourceInfo(sourceID)
category, appearanceID, canHaveIllusion, icon, isCollected, itemLink, transmogLink, sourceType, ...
Appearance source info
C_TransmogCollection.GetSourceItemID(sourceID)
itemID
Item for source
C_TransmogCollection.PlayerHasTransmog(itemID [, itemAppearanceModID])
hasTransmog
Has transmog collected?
C_TransmogCollection.PlayerHasTransmogItemModifiedAppearance(itemModifiedAppearanceID)
hasAppearance
Has modified appearance?
C_TransmogCollection.PlayerHasTransmogByItemInfo(itemInfo)
hasTransmog
Has transmog by item info?
C_TransmogCollection.GetItemInfo(itemInfo)
appearanceID, sourceID
Source for item
C_TransmogCollection.GetAllAppearanceSources(appearanceID)
sourceIDs
All sources for appearance
C_TransmogCollection.GetAppearanceSources(appearanceID [, categoryID [, transmogType]])
sources
Sources with info
Categories
Function Returns Description
C_TransmogCollection.GetCategoryAppearances(categoryID)
appearances
All appearances in category
C_TransmogCollection.GetCategoryCollectedCount(categoryID)
collected
Collected count
C_TransmogCollection.GetCategoryTotal(categoryID)
total
Total in category
C_TransmogCollection.GetNumTransmogSources()
numSources
Total sources
C_TransmogCollection.IsAppearanceCollected(appearanceID)
isCollected
Is appearance collected?
Illusions
Function Returns Description
C_TransmogCollection.GetIllusions()
illusions
All weapon illusions
C_TransmogCollection.GetIllusionSourceInfo(sourceID)
name, hyperlink, sourceText
Illusion source info
C_TransmogCollection.PlayerKnowsSource(sourceID)
isKnown
Knows source?
Search & Filtering
Function Returns Description
C_TransmogCollection.SetSearch(searchType, searchText)
— Set search filter
C_TransmogCollection.GetSearchResults(searchType)
results
Get search results
C_TransmogCollection.ClearSearch(searchType)
— Clear search
C_TransmogCollection.IsSearchInProgress(searchType)
inProgress
Is search running?
C_TransmogCollection.EndSearch()
— End search
C_TransmogCollection.GetIsAppearanceFavorite(appearanceID)
isFavorite
Is favorite?
C_TransmogCollection.SetIsAppearanceFavorite(appearanceID, isFavorite)
— Set favorite
C_TransmogSets — Transmog Sets
Function Returns Description
C_TransmogSets.GetAllSets()
sets
All transmog sets
C_TransmogSets.GetBaseSetsCounts()
numCollected, numTotal
base sets progress
C_TransmogSets.GetSetInfo(setID)
setInfo
Set details
C_TransmogSets.GetSetSources(setID)
sources
Sources in set
C_TransmogSets.GetSetPrimaryAppearances(setID)
appearances
Primary appearances
C_TransmogSets.GetBaseSets()
baseSets
All base sets
C_TransmogSets.GetBaseSetID(setID)
baseSetID
Base set for variant
C_TransmogSets.GetVariantSets(baseSetID)
variantSets
Variants of base set
C_TransmogSets.GetUsableSets()
usableSets
Sets usable by class
C_TransmogSets.HasUsableSets()
hasUsable
Has usable sets?
C_TransmogSets.IsSetCollected(setID)
isCollected
Set fully collected?
C_TransmogSets.IsSetUsable(setID)
isUsable
Set usable by player?
C_TransmogSets.IsNewAppearance(appearanceID)
isNew
New since last viewed?
C_TransmogSets.ClearNewAppearance(appearanceID)
— Mark as seen
C_TransmogSets.GetNumSetsCollected()
numCollected
Sets collected count
C_TransmogSets.GetNumSetsTotal()
numTotal
Total number of sets
C_TransmogSets.GetSetSourceCounts(setID)
numCollected, numTotal
Sources in set progress
C_TransmogSets.SetHasNewSources(setID)
hasNewSources
New sources in set?
C_TransmogSets.SetIsFavorite(setID, isFavorite)
— Toggle favorite
C_TransmogSets.GetIsFavorite(setID)
isFavorite
Is favorite set?
C_TransmogOutfits — Outfits
Function Returns Description
C_TransmogOutfits.GetOutfits()
outfits
All saved outfits
C_TransmogOutfits.GetOutfitInfo(outfitID)
name, icon
Outfit info
C_TransmogOutfits.NewOutfit(name, icon, sources)
outfitID
Create new outfit
C_TransmogOutfits.DeleteOutfit(outfitID)
— Delete outfit
C_TransmogOutfits.RenameOutfit(outfitID, name)
— Rename outfit
C_TransmogOutfits.SetOutfitIcon(outfitID, icon)
— Set outfit icon
C_TransmogOutfits.SaveOutfit(outfitID, sources)
— Update outfit
C_TransmogOutfits.GetOutfitSources(outfitID)
sources
Get all sources in outfit
C_TransmogOutfits.GetSlotSourceID(outfitID, slotID)
sourceID
Source for slot
C_DyeColor / C_DyeColorInfo — Armor Dyes (12.0.0)
New system for applying dye colors to armor appearances.
Function Returns Description
C_DyeColorInfo.GetDyeColorInfo(dyeColorID)
info
Dye color details
C_DyeColorInfo.GetAvailableDyeColors()
dyeColors
Available dye colors
C_DyeColorInfo.GetDyeColorCategories()
categories
Dye color categories
C_DyeColorInfo.IsDyeColorUnlocked(dyeColorID)
isUnlocked
Is color unlocked?
C_DyeColorInfo.GetNumUnlockedDyeColors()
numUnlocked
Unlocked dye count
C_BarberShop — Character Customization
Function Returns Description
C_BarberShop.IsViewingAlteredForm()
isViewing
Viewing alt form?
C_BarberShop.SetViewingAlteredForm(isViewing)
— Toggle alt form view
C_BarberShop.GetAvailableCustomizations()
customizations
Available customizations
C_BarberShop.GetCurrentCustomizations()
customizations
Current selections
C_BarberShop.SetCustomizationChoice(customizationCategoryID, choiceIndex)
— Set a choice
C_BarberShop.PreviewCustomizationChoice(customizationCategoryID, choiceIndex)
— Preview a choice
C_BarberShop.GetCustomizationScope()
scope
Customization scope
C_BarberShop.HasAnyChanges()
hasChanges
Has unsaved changes?
C_BarberShop.ApplyCustomizationChoices()
— Apply changes
C_BarberShop.Cancel()
— Cancel and close
C_BarberShop.ResetCustomizationChoices()
— Reset to current
C_BarberShop.GetCurrentCost()
cost
Cost for changes
C_BarberShop.MarkCustomizationChoiceAsSeen(choiceID)
— Mark choice seen
C_BarberShop.MarkCustomizationOptionAsSeen(optionID)
— Mark option seen
C_BarberShop.SetSelectedSex(sex)
— Set selected sex
Key Events
Event Payload Description
TRANSMOGRIFY_OPEN
— Transmog NPC opened
TRANSMOGRIFY_CLOSE
— Transmog NPC closed
TRANSMOGRIFY_UPDATE
slotID Transmog slot updated
TRANSMOGRIFY_SUCCESS
slotID Transmog applied
TRANSMOG_COLLECTION_SOURCE_ADDED
sourceID New source collected
TRANSMOG_COLLECTION_SOURCE_REMOVED
sourceID Source removed
TRANSMOG_COLLECTION_UPDATED
— Collection changed
TRANSMOG_COLLECTION_CAMERA_UPDATE
— Camera update
TRANSMOG_SETS_UPDATE_FAVORITE
— Set favorite changed
TRANSMOG_SEARCH_UPDATED
searchType Search results updated
TRANSMOG_OUTFITS_CHANGED
— Outfits changed
BARBER_SHOP_OPEN
— Barber shop opened
BARBER_SHOP_CLOSE
— Barber shop closed
BARBER_SHOP_COST_UPDATE
— Cost updated
BARBER_SHOP_APPEARANCE_APPLIED
— Appearance applied
BARBER_SHOP_RESULT
success Barber shop result
Gotchas & Restrictions
-
Transmog NPC required — C_Transmogrify.ApplyAllPending() and related functions only work at a transmog NPC.
-
sourceID vs appearanceID — A sourceID is a specific item drop source. An appearanceID is the visual look (multiple sources can share one appearance).
-
Category by armor type — Transmog categories are divided by armor slot and armor type (cloth, leather, mail, plate).
-
Dye system is new — The dye color system is new in 12.0.0 and APIs may evolve.
-
Barber shop requires presence — C_BarberShop functions only work while at the barber shop NPC.
-
Outfit limit — There's a maximum number of saved outfits per character.
-
Set variants — A base set can have multiple variants (different difficulties, etc.). Use GetVariantSets() .
-
illusion = weapon enchant visual — Illusions are the weapon glow effects. Separate from armor transmog.