wow-api-housing
SKILL.md
Housing API (Retail — Patch 12.0.0)
Comprehensive reference for the player housing system, brand new in Patch 12.0.0.
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. This entire system is new in 12.0.0.
Scope
- HousingUI — Core housing system frame and state
- C_HouseEditorUI — Placement and editing (position, rotate, scale)
- C_HousingCatalog — Decoration catalog browsing
- HousingBasicModeUI — Simplified placement mode
- HousingCleanupModeUI — Bulk cleanup/removal mode
- HousingCustomizeModeUI — Customization mode
- HousingDecorUI — Decoration management
- HousingExpertModeUI — Advanced/expert placement
- C_HouseExteriorUI — Exterior appearance customization
- HousingLayoutUI — Layout save/load
- C_HousingNeighborhood — Neighborhoods and visiting
- C_NeighborhoodInitiative — Community initiative goals
- CatalogShop — Housing shop/catalog purchase system
HousingUI — Core Housing System
| Function | Returns | Description |
|---|---|---|
HousingUI.IsHousingModeActive() |
isActive |
Is housing editing active? |
HousingUI.EnterHousingMode() |
— | Enter housing edit mode |
HousingUI.ExitHousingMode() |
— | Exit housing edit mode |
HousingUI.GetCurrentHouseInfo() |
houseInfo |
Current house data |
HousingUI.GetHouseOwner() |
ownerInfo |
House owner info |
HousingUI.IsPlayerInOwnHouse() |
isOwn |
In own house? |
HousingUI.IsPlayerInHouse() |
inHouse |
In any house? |
HousingUI.GetHousingPlotInfo() |
plotInfo |
Plot/lot info |
C_HouseEditorUI — Placement & Editing
The editor is the core system for placing, moving, rotating, and scaling decorations.
Object Selection & Manipulation
| Function | Returns | Description |
|---|---|---|
C_HouseEditorUI.SelectObject(objectID) |
— | Select decoration |
C_HouseEditorUI.DeselectObject() |
— | Deselect current |
C_HouseEditorUI.GetSelectedObject() |
objectInfo |
Current selection |
C_HouseEditorUI.DeleteSelectedObject() |
— | Delete selection |
C_HouseEditorUI.MoveObject(objectID, x, y, z) |
— | Move decoration |
C_HouseEditorUI.RotateObject(objectID, yaw, pitch, roll) |
— | Rotate decoration |
C_HouseEditorUI.ScaleObject(objectID, scale) |
— | Scale decoration |
C_HouseEditorUI.GetObjectPosition(objectID) |
x, y, z |
Object position |
C_HouseEditorUI.GetObjectRotation(objectID) |
yaw, pitch, roll |
Object rotation |
C_HouseEditorUI.GetObjectScale(objectID) |
scale |
Object scale |
Placement
| Function | Returns | Description |
|---|---|---|
C_HouseEditorUI.PlaceObject(catalogItemID) |
— | Start placing item |
C_HouseEditorUI.ConfirmPlacement() |
— | Confirm current placement |
C_HouseEditorUI.CancelPlacement() |
— | Cancel placement |
C_HouseEditorUI.IsPlacing() |
isPlacing |
In placement mode? |
C_HouseEditorUI.GetPlacedObjects() |
objects |
All placed objects |
C_HouseEditorUI.GetPlacementLimits() |
current, max |
Decoration limits |
Undo/Redo
| Function | Returns | Description |
|---|---|---|
C_HouseEditorUI.Undo() |
— | Undo last action |
C_HouseEditorUI.Redo() |
— | Redo last undo |
C_HouseEditorUI.CanUndo() |
canUndo |
Has undo? |
C_HouseEditorUI.CanRedo() |
canRedo |
Has redo? |
C_HousingCatalog — Decoration Catalog
| Function | Returns | Description |
|---|---|---|
C_HousingCatalog.GetCategories() |
categories |
All categories |
C_HousingCatalog.GetCategoryInfo(categoryID) |
categoryInfo |
Category details |
C_HousingCatalog.GetItemsInCategory(categoryID) |
items |
Items in category |
C_HousingCatalog.GetItemInfo(catalogItemID) |
itemInfo |
Catalog item info |
C_HousingCatalog.GetOwnedItems() |
ownedItems |
Player's owned items |
C_HousingCatalog.IsItemOwned(catalogItemID) |
isOwned |
Player owns item? |
C_HousingCatalog.GetItemCount(catalogItemID) |
count |
How many owned |
C_HousingCatalog.SearchCatalog(searchText) |
results |
Search items |
C_HousingCatalog.GetFilteredItems(filters) |
items |
Filter items |
HousingBasicModeUI — Simplified Mode
| Function | Returns | Description |
|---|---|---|
HousingBasicModeUI.EnterBasicMode() |
— | Enter basic edit mode |
HousingBasicModeUI.ExitBasicMode() |
— | Exit basic mode |
HousingBasicModeUI.IsInBasicMode() |
isBasic |
In basic mode? |
HousingCleanupModeUI — Cleanup Mode
| Function | Returns | Description |
|---|---|---|
HousingCleanupModeUI.EnterCleanupMode() |
— | Enter cleanup mode |
HousingCleanupModeUI.ExitCleanupMode() |
— | Exit cleanup mode |
HousingCleanupModeUI.SelectForCleanup(objectID) |
— | Tag for cleanup |
HousingCleanupModeUI.ConfirmCleanup() |
— | Execute cleanup |
HousingCleanupModeUI.GetCleanupCount() |
count |
Items tagged |
HousingCustomizeModeUI — Customization
| Function | Returns | Description |
|---|---|---|
HousingCustomizeModeUI.EnterCustomizeMode() |
— | Enter customize mode |
HousingCustomizeModeUI.ExitCustomizeMode() |
— | Exit customize mode |
HousingCustomizeModeUI.GetCustomizationOptions(objectID) |
options |
Object options |
HousingCustomizeModeUI.ApplyCustomization(objectID, optionID) |
— | Apply option |
HousingDecorUI — Decoration Management
| Function | Returns | Description |
|---|---|---|
HousingDecorUI.GetDecorInventory() |
inventory |
Stored decorations |
HousingDecorUI.GetDecorInfo(decorID) |
decorInfo |
Decoration details |
HousingDecorUI.StoreDecoration(objectID) |
— | Store placed item |
HousingDecorUI.GetDecorCategories() |
categories |
Inventory categories |
HousingExpertModeUI — Expert Placement
| Function | Returns | Description |
|---|---|---|
HousingExpertModeUI.EnterExpertMode() |
— | Enter expert mode |
HousingExpertModeUI.ExitExpertMode() |
— | Exit expert mode |
HousingExpertModeUI.IsInExpertMode() |
isExpert |
In expert mode? |
HousingExpertModeUI.SetSnapping(enabled) |
— | Toggle grid snap |
HousingExpertModeUI.GetSnapping() |
enabled |
Snap enabled? |
HousingExpertModeUI.SetPrecisionMode(enabled) |
— | Toggle precision |
HousingExpertModeUI.GetPrecisionMode() |
enabled |
Precision on? |
C_HouseExteriorUI — Exterior Customization
| Function | Returns | Description |
|---|---|---|
C_HouseExteriorUI.GetExteriorOptions() |
options |
Available exteriors |
C_HouseExteriorUI.GetCurrentExterior() |
exteriorInfo |
Current exterior |
C_HouseExteriorUI.SetExterior(exteriorID) |
— | Change exterior |
C_HouseExteriorUI.PreviewExterior(exteriorID) |
— | Preview exterior |
C_HouseExteriorUI.GetExteriorCategories() |
categories |
Exterior categories |
HousingLayoutUI — Layout Save/Load
| Function | Returns | Description |
|---|---|---|
HousingLayoutUI.GetSavedLayouts() |
layouts |
Saved layouts |
HousingLayoutUI.SaveLayout(name) |
— | Save current layout |
HousingLayoutUI.LoadLayout(layoutID) |
— | Load layout |
HousingLayoutUI.DeleteLayout(layoutID) |
— | Delete layout |
HousingLayoutUI.RenameLayout(layoutID, name) |
— | Rename layout |
HousingLayoutUI.GetLayoutInfo(layoutID) |
layoutInfo |
Layout details |
C_HousingNeighborhood — Neighborhoods
| Function | Returns | Description |
|---|---|---|
C_HousingNeighborhood.GetNeighborhoodInfo() |
neighborhoodInfo |
Current neighborhood |
C_HousingNeighborhood.GetNeighbors() |
neighbors |
Neighbor list |
C_HousingNeighborhood.GetNeighborInfo(neighborID) |
neighborInfo |
Neighbor details |
C_HousingNeighborhood.VisitNeighbor(neighborID) |
— | Visit a neighbor |
C_HousingNeighborhood.GetVisitableHouses() |
houses |
Visitable houses |
C_HousingNeighborhood.InviteToNeighborhood(playerName) |
— | Invite player |
C_HousingNeighborhood.LeaveNeighborhood() |
— | Leave neighborhood |
C_HousingNeighborhood.GetNeighborhoodMembers() |
members |
All members |
C_NeighborhoodInitiative — Community Goals
| Function | Returns | Description |
|---|---|---|
C_NeighborhoodInitiative.GetCurrentInitiative() |
initiativeInfo |
Active initiative |
C_NeighborhoodInitiative.GetInitiativeProgress() |
progress |
Current progress |
C_NeighborhoodInitiative.GetInitiativeRewards() |
rewards |
Initiative rewards |
C_NeighborhoodInitiative.GetPlayerContribution() |
contribution |
Player's contribution |
C_NeighborhoodInitiative.GetInitiativeHistory() |
history |
Past initiatives |
CatalogShop — Housing Store
| Function | Returns | Description |
|---|---|---|
CatalogShop.GetShopCategories() |
categories |
Shop categories |
CatalogShop.GetShopItems(categoryID) |
items |
Items for sale |
CatalogShop.GetShopItemInfo(shopItemID) |
itemInfo |
Item details |
CatalogShop.PurchaseItem(shopItemID) |
— | Purchase item |
CatalogShop.CanPurchase(shopItemID) |
canBuy, reason |
Can purchase? |
CatalogShop.GetBundleInfo(bundleID) |
bundleInfo |
Bundle details |
Common Patterns
Check If Player Is Home
local function CheckHousingState()
if HousingUI.IsPlayerInOwnHouse() then
print("Welcome home!")
local houseInfo = HousingUI.GetCurrentHouseInfo()
if houseInfo then
print("House:", houseInfo.name)
end
elseif HousingUI.IsPlayerInHouse() then
local owner = HousingUI.GetHouseOwner()
if owner then
print("Visiting", owner.name, "'s house")
end
end
end
Place a Decoration
-- Enter housing edit mode and place an item
local function PlaceDecoration(catalogItemID)
if not HousingUI.IsHousingModeActive() then
HousingUI.EnterHousingMode()
end
local current, max = C_HouseEditorUI.GetPlacementLimits()
if current >= max then
print("Decoration limit reached:", current, "/", max)
return
end
C_HouseEditorUI.PlaceObject(catalogItemID)
end
Browse Catalog
local function BrowseCatalog()
local categories = C_HousingCatalog.GetCategories()
for _, cat in ipairs(categories) do
local catInfo = C_HousingCatalog.GetCategoryInfo(cat)
if catInfo then
print("Category:", catInfo.name)
local items = C_HousingCatalog.GetItemsInCategory(cat)
for _, item in ipairs(items) do
local info = C_HousingCatalog.GetItemInfo(item)
if info then
local owned = C_HousingCatalog.IsItemOwned(item)
print(" -", info.name, owned and "(Owned)" or "")
end
end
end
end
end
Save and Load Layouts
-- Save current decoration layout
HousingLayoutUI.SaveLayout("My Living Room v2")
-- List saved layouts
local layouts = HousingLayoutUI.GetSavedLayouts()
for _, layout in ipairs(layouts) do
local info = HousingLayoutUI.GetLayoutInfo(layout)
if info then
print(info.name, "-", info.objectCount, "objects")
end
end
Key Events
| Event | Payload | Description |
|---|---|---|
HOUSING_MODE_ENTERED |
— | Entered housing edit mode |
HOUSING_MODE_EXITED |
— | Exited housing edit mode |
HOUSING_OBJECT_PLACED |
objectID | Decoration placed |
HOUSING_OBJECT_REMOVED |
objectID | Decoration removed |
HOUSING_OBJECT_MOVED |
objectID | Decoration moved |
HOUSING_OBJECT_SELECTED |
objectID | Object selected |
HOUSING_OBJECT_DESELECTED |
— | Object deselected |
HOUSING_PLACEMENT_STARTED |
catalogItemID | Placement mode started |
HOUSING_PLACEMENT_CONFIRMED |
objectID | Placement confirmed |
HOUSING_PLACEMENT_CANCELED |
— | Placement canceled |
HOUSING_CATALOG_UPDATED |
— | Catalog data changed |
HOUSING_LAYOUT_SAVED |
layoutID | Layout saved |
HOUSING_LAYOUT_LOADED |
layoutID | Layout loaded |
HOUSING_EXTERIOR_CHANGED |
exteriorID | Exterior changed |
HOUSING_LIMIT_UPDATED |
current, max | Limit changed |
HOUSING_ENTERED_HOUSE |
houseInfo | Entered a house |
HOUSING_LEFT_HOUSE |
— | Left a house |
NEIGHBORHOOD_INITIATIVE_UPDATE |
— | Initiative progress changed |
NEIGHBORHOOD_MEMBER_JOINED |
memberInfo | New neighbor |
Gotchas & Restrictions
- 12.0.0 only — The entire housing system is new in Patch 12.0.0. APIs may evolve in subsequent patches.
- Mode requirements — Must call
HousingUI.EnterHousingMode()before using editor functions. - Placement limits — Each house has a decoration cap. Check with
GetPlacementLimits(). - Expert vs Basic mode — Expert mode allows full 3D positioning; basic mode uses simplified snapping.
- Own house only for editing — Cannot edit decorations in someone else's house.
- Layout compatibility — Layouts may not load correctly if decorations have been removed from the game.
- Neighborhood initiatives — Shared community goals; progress is collective, not individual.
- Hardware events — Purchasing catalog items requires user interaction (hardware clicks).
Weekly Installs
3
Repository
jburlison/wowad…piagentsGitHub Stars
8
First Seen
9 days ago
Security Audits
Installed on
cline3
github-copilot3
codex3
gemini-cli3
cursor3
opencode3