wow-api-currency-economy
SKILL.md
Currency & Economy API (Retail — Patch 12.0.0)
Comprehensive reference for currency, auction house, store, token, trading post, mail, and trade 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_CurrencyInfo — Currency data, tracking, backpack display
- Auction House — Listing, bidding, buying, selling, commodities
- C_WowTokenPublic / C_WowTokenUI — WoW Token market
- AccountStore / StorePublic — In-game shop
- CatalogShop — Catalog shop system
- C_PerksProgram — Trading Post (Trader's Tender)
- BlackMarket — Black Market Auction House
- TradeInfo — Player-to-player trading
- MailInfo — Mailbox system
C_CurrencyInfo — Currency System
Currency Data
| Function | Returns | Description |
|---|---|---|
C_CurrencyInfo.GetCurrencyInfo(currencyType) |
currencyInfo |
Currency info by type |
C_CurrencyInfo.GetCurrencyInfoFromLink(link) |
currencyInfo |
From hyperlink |
C_CurrencyInfo.GetCurrencyIDFromLink(link) |
currencyID |
ID from hyperlink |
C_CurrencyInfo.GetCurrencyLink(currencyType, amount) |
link |
Currency hyperlink |
C_CurrencyInfo.GetCurrencyListSize() |
size |
Number of entries |
C_CurrencyInfo.GetCurrencyListInfo(index) |
info |
Entry at index |
C_CurrencyInfo.GetCurrencyListLink(index) |
link |
Link at index |
Currency Info Fields
name— Currency namedescription— Description textcurrencyID— Unique IDiconFileID— Icon texturequantity— Current amountmaxQuantity— Max cap (0 = none)canEarnPerWeek— Has weekly cap?quantityEarnedThisWeek— Earned this weekmaxWeeklyQuantity— Weekly maxtotalEarned— Total ever earnedisTradeable— Can be traded?quality— Item qualityisDiscovered— Has been discovered?isShowInBackpack— Shown in Backpack?
Backpack & Tracking
| Function | Returns | Description |
|---|---|---|
C_CurrencyInfo.GetBackpackCurrencyInfo(index) |
currencyData |
Backpack slot |
C_CurrencyInfo.GetNumBackpackCurrencies() |
numSlots |
Num backpack slots |
C_CurrencyInfo.SetCurrencyBackpack(index, backpack) |
— | Toggle backpack |
C_CurrencyInfo.IsCurrencyTracked(currencyID) |
isTracked |
Is tracked? |
C_CurrencyInfo.SetCurrencyTracked(currencyID, tracked) |
— | Set tracked |
Currency List Management
| Function | Returns | Description |
|---|---|---|
C_CurrencyInfo.ExpandCurrencyList(index, expand) |
— | Expand/collapse header |
C_CurrencyInfo.IsCurrencyHeader(index) |
isHeader |
Is header? |
C_CurrencyInfo.GetFactionGrantedByCurrency(currencyID) |
factionID |
Associated faction |
C_CurrencyInfo.DoesCurrentFilterPassFilter(currencyID) |
passes |
Passes filter? |
Gold Functions (Global)
| Function | Returns | Description |
|---|---|---|
GetMoney() |
copper |
Player's money in copper |
GetCoinTextureString(copper) |
text |
Gold/silver/copper string |
GetMoneyString(copper, ...) |
text |
Formatted money string |
Auction House
Browse & Search
| Function | Returns | Description |
|---|---|---|
C_AuctionHouse.SearchForItemKeys(itemKeys, sorts) |
— | Search by item keys |
C_AuctionHouse.SendBrowseQuery(query) |
— | Browse query |
C_AuctionHouse.SendSearchQuery(itemKey, sorts, separateOwnerItems) |
— | Item search |
C_AuctionHouse.GetBrowseResults() |
browseResults |
Browse results |
C_AuctionHouse.GetNumItemSearchResults(itemKey) |
numResults |
Num search results |
C_AuctionHouse.GetItemSearchResultInfo(itemKey, index) |
resultInfo |
Search result info |
C_AuctionHouse.RefreshItemSearchResults(itemKey) |
— | Refresh search |
C_AuctionHouse.GetFilterGroups() |
filterGroups |
Available filters |
Commodities
| Function | Returns | Description |
|---|---|---|
C_AuctionHouse.SendSellSearchQuery(itemKey, sorts, separateOwnerItems) |
— | Commodity search |
C_AuctionHouse.GetCommoditySearchResultInfo(itemID, index) |
resultInfo |
Commodity result |
C_AuctionHouse.GetNumCommoditySearchResults(itemID) |
numResults |
Num commodity results |
C_AuctionHouse.StartCommoditiesPurchase(itemID, quantity) |
— | Start commodity buy |
C_AuctionHouse.ConfirmCommoditiesPurchase() |
— | Confirm commodity buy |
C_AuctionHouse.CancelCommoditiesPurchase() |
— | Cancel commodity buy |
C_AuctionHouse.GetCommodityQuote(itemID) |
quote |
Price quote |
Listing & Selling
| Function | Returns | Description |
|---|---|---|
C_AuctionHouse.PostItem(itemLocation, duration, quantity, bid, buyout) |
— | List item |
C_AuctionHouse.PostCommodity(itemLocation, duration, quantity, unitPrice) |
— | List commodity |
C_AuctionHouse.GetItemKeyInfo(itemKey) |
keyInfo |
Item key info |
C_AuctionHouse.MakeItemKey(itemID, itemLevel, itemSuffix, battlePetSpeciesID) |
itemKey |
Create item key |
C_AuctionHouse.GetAvailablePostCount(itemLocation) |
count |
How many to list |
C_AuctionHouse.CalculateItemDeposit(itemLocation, duration, quantity) |
deposit |
Deposit cost |
C_AuctionHouse.GetQuoteDurationRemaining() |
seconds |
Quote time remaining |
Bidding & Buying
| Function | Returns | Description |
|---|---|---|
C_AuctionHouse.PlaceBid(auctionID, bidAmount) |
— | Place bid |
C_AuctionHouse.GetBidInfo(index) |
bidInfo |
Bid info |
C_AuctionHouse.GetNumBids() |
numBids |
Active bids |
C_AuctionHouse.HasFavorite(itemKey) |
isFavorite |
Is favorited? |
C_AuctionHouse.SetFavoriteItem(itemKey, isFavorite) |
— | Set favorite |
C_AuctionHouse.GetFavoriteItems() |
itemKeys |
All favorites |
Own Auctions
| Function | Returns | Description |
|---|---|---|
C_AuctionHouse.GetNumOwnedAuctions() |
numAuctions |
Own auctions |
C_AuctionHouse.GetOwnedAuctionInfo(index) |
auctionInfo |
Own auction info |
C_AuctionHouse.CancelAuction(auctionID) |
— | Cancel auction |
C_AuctionHouse.QueryOwnedAuctions(sorts) |
— | Query own auctions |
Auction House State
| Function | Returns | Description |
|---|---|---|
C_AuctionHouse.IsAuctionHouseAvailable() |
isAvailable |
AH available? |
C_AuctionHouse.CloseAuctionHouse() |
— | Close AH |
C_AuctionHouse.GetAuctionHouseTimeLeftBand(timeLeftEnum) |
seconds |
Time left |
C_AuctionHouse.ReplicateItems() |
— | Full AH scan |
C_AuctionHouse.GetNumReplicateItems() |
count |
Replicate count |
C_AuctionHouse.GetReplicateItemInfo(index) |
info |
Replicate item |
C_WowTokenPublic — WoW Token
| Function | Returns | Description |
|---|---|---|
C_WowTokenPublic.GetCurrentMarketPrice() |
price |
Gold price |
C_WowTokenPublic.GetGuaranteedPrice() |
price |
Guaranteed price |
C_WowTokenPublic.UpdateMarketPrice() |
— | Request update |
C_WowTokenPublic.GetCommerceSystemStatus() |
status |
System status |
C_WowTokenPublic.BuyToken() |
— | Buy token (gold) |
C_WowTokenPublic.SellToken(auctionID) |
— | Sell token |
AccountStore / StorePublic — In-Game Shop
| Function | Returns | Description |
|---|---|---|
C_StorePublic.IsEnabled() |
enabled |
Shop enabled? |
C_StorePublic.IsDisabledByParentalControls() |
disabled |
Parental block? |
C_StorePublic.DoesGroupHavePurchaseableProducts(group) |
hasPurchaseable |
Has products? |
C_PerksProgram — Trading Post
| Function | Returns | Description |
|---|---|---|
C_PerksProgram.GetAvailableActivities() |
activities |
Current activities |
C_PerksProgram.GetPendingChestRewards() |
rewards |
Pending rewards |
C_PerksProgram.GetTimeRemaining() |
seconds |
Rotation time left |
C_PerksProgram.GetCurrencyAmount() |
amount |
Trader's Tender |
C_PerksProgram.GetVendorItemInfo(perksVendorItemID) |
itemInfo |
Vendor item |
C_PerksProgram.GetAvailableVendorItemIDs() |
itemIDs |
Current rotation |
C_PerksProgram.GetFrozenPerksVendorItemInfo() |
info |
Frozen item |
C_PerksProgram.RequestPurchase(perksVendorItemID) |
— | Purchase item |
C_PerksProgram.RequestRefund(perksVendorItemID) |
— | Refund item |
C_PerksProgram.GetDraggedPerksVendorItemInfo() |
itemInfo |
Dragged item |
C_PerksProgram.IsFrozenItem(perksVendorItemID) |
isFrozen |
Is frozen? |
C_PerksProgram.SetFrozenPerksVendorItem(perksVendorItemID) |
— | Freeze item |
C_PerksProgram.ClearFrozenPerksVendorItem() |
— | Unfreeze |
C_PerksProgram.GetPerksVendorCategoryIDs() |
categoryIDs |
Category IDs |
C_PerksProgram.GetPerksVendorCategoryInfo(categoryID) |
categoryInfo |
Category info |
Black Market
| Function | Returns | Description |
|---|---|---|
C_BlackMarket.GetNumItems() |
numItems |
Current BMAH items |
C_BlackMarket.GetItemInfoByIndex(index) |
info |
BMAH item info |
C_BlackMarket.GetHotItem() |
info |
Hot item of the day |
C_BlackMarket.ItemPlaceBid(index, amount) |
— | Place BMAH bid |
C_BlackMarket.RequestItems() |
— | Request item list |
C_BlackMarket.IsViewOnly() |
isViewOnly |
View-only mode? |
Trade (Player-to-Player)
| Function | Returns | Description |
|---|---|---|
InitiateTrade(unit) |
— | Start trade |
AcceptTrade() |
— | Accept trade |
CancelTrade() |
— | Cancel trade |
AddTradeMoney() |
— | Add gold offer |
SetTradeMoney(copper) |
— | Set gold amount |
GetTargetTradeMoney() |
copper |
Their gold offer |
GetPlayerTradeMoney() |
copper |
Your gold offer |
GetTradeTargetItemInfo(slotIndex) |
name, texture, quantity, quality, isUsable, enchant |
Their item |
GetTradePlayerItemInfo(slotIndex) |
name, texture, quantity, quality, isUsable, enchant |
Your item |
ClickTradeButton(slotIndex) |
— | Click trade slot |
GetNumTradeItems() |
numPlayerItems, numTargetItems |
Item counts |
Mail System
| Function | Returns | Description |
|---|---|---|
GetInboxNumItems() |
numItems, totalItems |
Inbox count |
GetInboxHeaderInfo(index) |
packageIcon, stationeryIcon, sender, subject, money, CODAmount, daysLeft, hasItem, wasRead, wasReturned, textCreated, canReply, isGM |
Mail header |
GetInboxText(index) |
bodyText, stationeryBG, stationeryBGR, stationeryBGG, stationeryBGB, color |
Mail body |
GetInboxItem(index, itemIndex) |
name, itemID, texture, count, quality, canUse |
Attachment |
GetInboxItemLink(index, itemIndex) |
link |
Attachment link |
TakeInboxItem(index, itemIndex) |
— | Take attachment |
TakeInboxMoney(index) |
— | Take gold |
TakeInboxTextItem(index) |
— | Take text item |
DeleteInboxItem(index) |
— | Delete mail |
ReturnInboxItem(index) |
— | Return mail |
AutoLootMailItem(index) |
— | Auto-loot all |
InboxItemCanDelete(index) |
canDelete |
Can delete? |
SendMail(recipient, subject, body) |
— | Send mail |
SetSendMailMoney(copper) |
— | Set gold to send |
SetSendMailCOD(copper) |
— | Set COD amount |
GetSendMailPrice() |
cost |
Sending cost |
GetSendMailItem(index) |
name, texture, count, quality |
Attached item |
GetSendMailItemLink(index) |
link |
Attached link |
ClickSendMailItemButton(itemIndex, clearItem) |
— | Add/remove attachment |
SendMailCanSend() |
canSend |
Can send? |
Common Patterns
Display Currency with Cap
local function ShowCurrency(currencyID)
local info = C_CurrencyInfo.GetCurrencyInfo(currencyID)
if info then
local text = info.name .. ": " .. info.quantity
if info.maxQuantity > 0 then
text = text .. " / " .. info.maxQuantity
end
if info.canEarnPerWeek and info.maxWeeklyQuantity > 0 then
text = text .. " (Weekly: " .. info.quantityEarnedThisWeek .. "/" .. info.maxWeeklyQuantity .. ")"
end
print(text)
end
end
Auction House Search
-- Register for results
local f = CreateFrame("Frame")
f:RegisterEvent("ITEM_SEARCH_RESULTS_UPDATED")
f:SetScript("OnEvent", function(self, event, itemKey, ...)
local numResults = C_AuctionHouse.GetNumItemSearchResults(itemKey)
for i = 1, numResults do
local result = C_AuctionHouse.GetItemSearchResultInfo(itemKey, i)
if result then
print(result.buyoutAmount, "copper -", result.quantity, "available")
end
end
end)
-- Initiate search
local itemKey = C_AuctionHouse.MakeItemKey(12345) -- itemID
C_AuctionHouse.SendSearchQuery(itemKey, {}, false)
Check WoW Token Price
C_WowTokenPublic.UpdateMarketPrice()
local f = CreateFrame("Frame")
f:RegisterEvent("TOKEN_MARKET_PRICE_UPDATED")
f:SetScript("OnEvent", function()
local price = C_WowTokenPublic.GetCurrentMarketPrice()
if price then
print("WoW Token: " .. GetCoinTextureString(price))
end
end)
Key Events
| Event | Payload | Description |
|---|---|---|
CURRENCY_DISPLAY_UPDATE |
currencyType, quantity, quantityChange, quantityGainSource, quantityLostSource | Currency changed |
AUCTION_HOUSE_SHOW |
— | AH opened |
AUCTION_HOUSE_CLOSED |
— | AH closed |
AUCTION_HOUSE_BROWSE_RESULTS_UPDATED |
— | Browse results ready |
ITEM_SEARCH_RESULTS_UPDATED |
itemKey | Item search ready |
COMMODITY_SEARCH_RESULTS_UPDATED |
itemID | Commodity search ready |
AUCTION_HOUSE_NEW_RESULTS_RECEIVED |
itemKey | New results |
ITEM_SEARCH_RESULTS_ADDED |
itemKey | Result added |
AUCTION_HOUSE_AUCTION_CREATED |
auctionID | Auction posted |
AUCTION_CANCELED |
auctionID | Auction canceled |
TOKEN_MARKET_PRICE_UPDATED |
result | Token price updated |
TOKEN_STATUS_CHANGED |
— | Token status changed |
PERKS_PROGRAM_CURRENCY_REFRESH |
— | Trader's Tender updated |
PERKS_PROGRAM_PURCHASE_SUCCESS |
— | Trading Post purchase |
PERKS_PROGRAM_SET_FROZEN_ITEM |
— | Item frozen |
MAIL_INBOX_UPDATE |
— | Inbox updated |
MAIL_SEND_SUCCESS |
— | Mail sent |
MAIL_SHOW |
— | Mailbox opened |
MAIL_CLOSED |
— | Mailbox closed |
TRADE_SHOW |
— | Trade window opened |
TRADE_CLOSED |
— | Trade ended |
TRADE_ACCEPT_UPDATE |
playerAccept, targetAccept | Accept state |
TRADE_MONEY_CHANGED |
— | Gold offer changed |
TRADE_PLAYER_ITEM_CHANGED |
slotIndex | Player item changed |
TRADE_TARGET_ITEM_CHANGED |
slotIndex | Target item changed |
BLACK_MARKET_ITEM_UPDATE |
— | BMAH items updated |
BLACK_MARKET_OUTBID |
— | Outbid on BMAH |
Gotchas & Restrictions
- Auction House hardware event — Posting, buying, and bidding require hardware events (user clicks).
- Commodity vs. item — Commodities (stackable) use a different API path than equipment/unique items.
- AH throttling — Searches are rate-limited. Rapid queries get throttled by the server.
- Mail COD — COD mail auto-deducts gold when attachment is taken. Test with
InboxItemCanDelete(). - GetMoney() returns copper — Divide by 100 for silver, 10000 for gold.
- Currency caps — Always check
maxQuantityandmaxWeeklyQuantitybefore displaying progress. - WoW Token price is async — Call
UpdateMarketPrice()then wait forTOKEN_MARKET_PRICE_UPDATED. - ReplicateItems() is slow — Full AH scan is expensive. Use sparingly and handle results incrementally.
Weekly Installs
3
Repository
jburlison/wowad…piagentsGitHub Stars
7
First Seen
8 days ago
Security Audits
Installed on
cline3
github-copilot3
codex3
gemini-cli3
cursor3
opencode3