SuperAPI AI Directory

wow-api-professions

Coding & development

View repository

Updated 10-15 22:41

About this skill

Professions API (Retail — Patch 12.0.0)

Comprehensive reference for professions, crafting, and crafting order 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_TradeSkillUI — Recipe browsing, crafting, reagents, skill info
  • C_CraftingOrders — Crafting order system (customer & crafter)
  • C_ProfessionSpecUI — Profession specialization trees
  • Global TradeSKill — Legacy/global tradeskill functions

C_TradeSkillUI — Tradeskill System

Opening & State

Function Returns Description
C_TradeSkillUI.OpenTradeSkill(tradeSkillID) success Open tradeskill UI
C_TradeSkillUI.CloseTradeSkill() — Close tradeskill UI
C_TradeSkillUI.IsTradeSkillReady() isReady Is tradeskill data ready?
C_TradeSkillUI.IsTradeSkillGuild() isGuild Viewing guild crafters?
C_TradeSkillUI.IsTradeSkillLinked() isLinked Viewing linked tradeskill?
C_TradeSkillUI.IsNPCCrafting() isNPC Crafting at NPC?
C_TradeSkillUI.IsRecraftReady() isReady Recraft system ready?
C_TradeSkillUI.GetTradeSkillDisplayName(tradeSkillID) name Profession name

Profession Info

Function Returns Description
C_TradeSkillUI.GetProfessionInfoBySkillLineID(skillLineID) professionInfo Profession info
C_TradeSkillUI.GetChildProfessionInfos() infos Child profession tiers
C_TradeSkillUI.GetProfessionInfoByRecipeID(recipeID) professionInfo Profession for recipe
C_TradeSkillUI.GetBaseProfessionInfo() professionInfo Base profession info
C_TradeSkillUI.GetProfessionSlots(profession) slots Profession slots
C_TradeSkillUI.GetProfessionChararacterSlotInfo(slot) info Character slot info

Recipe List & Info

Function Returns Description
C_TradeSkillUI.GetAllRecipeIDs() recipeIDs All available recipes
C_TradeSkillUI.GetFilteredRecipeIDs() recipeIDs Filtered recipe list
C_TradeSkillUI.GetRecipeInfo(recipeID) recipeInfo Recipe details
C_TradeSkillUI.GetRecipeSchematic(recipeID, isRecraft [, recraftItemGUID]) schematic Recipe schematic
C_TradeSkillUI.GetRecipeDescription(recipeID) description Recipe description text
C_TradeSkillUI.GetRecipeNumItemsProduced(recipeID) min, max Items produced
C_TradeSkillUI.GetRecipeOutputItemData(recipeID [, reagents [, allocationItemGUID]]) outputInfo Output item data
C_TradeSkillUI.GetRecipeQualityItemIDs(recipeID) itemIDs Quality-tier item IDs
C_TradeSkillUI.GetRecipeQualityReagentItemLink(recipeSpellID, reagentIndex, qualityIndex) itemLink Quality reagent link
C_TradeSkillUI.GetRecipeRepeatCount() repeatCount Queue repeat count
C_TradeSkillUI.SetRecipeRepeatCount(count) — Set repeat count

Reagents

Function Returns Description
C_TradeSkillUI.GetRecipeReagentSlotInfo(recipeID, reagentIndex) slotInfo Reagent slot info
C_TradeSkillUI.GetRecipeRequirements(recipeID) requirements Recipe requirements
C_TradeSkillUI.GetOptionalReagentInfo(recipeID) optionalReagents Optional reagent slots
C_TradeSkillUI.GetRecipeFixedReagentItemLink(recipeID, dataSlotIndex) itemLink Fixed reagent link

Crafting

Function Returns Description
C_TradeSkillUI.CraftRecipe(recipeID [, count [, craftingReagents [, recipeLevel [, orderID]]]]) — Craft items
C_TradeSkillUI.RecraftRecipe(itemGUID, craftingReagents) — Recraft an item
C_TradeSkillUI.CraftSalvage(recipeID, count, itemTarget) — Salvage crafting
C_TradeSkillUI.CraftEnchant(recipeID [, count [, craftingReagents]]) — Craft enchant
C_TradeSkillUI.IsRecipeInBaseSkillLine(recipeID) inBase Is recipe in base skill?

Categories & Filters

Function Returns Description
C_TradeSkillUI.GetCategories() categoryIDs All categories
C_TradeSkillUI.GetCategoryInfo(categoryID) categoryInfo Category details
C_TradeSkillUI.GetSubCategories(categoryID) subCategoryIDs Sub-categories
C_TradeSkillUI.SetRecipeItemNameFilter(text) — Filter by name
C_TradeSkillUI.GetRecipeItemNameFilter() text Current name filter
C_TradeSkillUI.SetOnlyShowMakeableRecipes(onlyMakeable) — Filter to makeable
C_TradeSkillUI.GetOnlyShowMakeableRecipes() onlyMakeable Showing only makeable?
C_TradeSkillUI.SetOnlyShowSkillUpRecipes(onlySkillUp) — Filter to skill-up
C_TradeSkillUI.GetOnlyShowSkillUpRecipes() onlySkillUp Only skill-up?

C_CraftingOrders — Crafting Orders

Customer (Placing Orders)

Function Returns Description
C_CraftingOrders.PlaceNewOrder(orderInfo) — Place a crafting order
C_CraftingOrders.GetMyOrders(orderType) orders Your placed orders
C_CraftingOrders.GetOrderClaimInfo(orderType, orderID) claimInfo Order claim info
C_CraftingOrders.CancelOrder(orderID) — Cancel your order
C_CraftingOrders.GetCustomerOptions(skillLineAbilityID, orderType) options Customer options
C_CraftingOrders.GetCraftingOrderCost(recipeID, reagents, orderType) cost Order commission cost
C_CraftingOrders.GetDefaultOrdersSkillLine() skillLineID Default skill line
C_CraftingOrders.GetPersonalOrdersInfo() info Personal orders info
C_CraftingOrders.HasFavoriteCustomerOptions(skillLineAbilityID) hasFavorite Has favorited crafter?
C_CraftingOrders.ShouldShowCraftingOrderTab() shouldShow Show orders tab?

Crafter (Fulfilling Orders)

Function Returns Description
C_CraftingOrders.GetCrafterOrders(request) — Query available orders
C_CraftingOrders.GetCrafterBucketTable(request) — Get order grouped view
C_CraftingOrders.GetClaimedOrder() order Currently claimed order
C_CraftingOrders.ClaimOrder(orderID, professionID) — Claim an order
C_CraftingOrders.ReleaseOrder(orderID, professionID) — Release claimed order
C_CraftingOrders.FulfillOrder(orderID, crafterNote, professionID) — Complete the order
C_CraftingOrders.RejectOrder(orderID, rejectionNote, professionID) — Reject the order
C_CraftingOrders.GetNumFavoriteCustomerOptions() numFavorites Favorite customers count
C_CraftingOrders.GetCrafterOrderRemainingTime(orderID) timeRemaining Time left to fulfill
C_CraftingOrders.OpenCrafterCraftingOrders() — Open crafter orders UI
C_CraftingOrders.CloseCrafterCraftingOrders() — Close crafter orders UI

Order Types

Enum Description
Enum.CraftingOrderType.Public Anyone can fulfill
Enum.CraftingOrderType.Guild Guild members only
Enum.CraftingOrderType.Personal Specific crafter
Enum.CraftingOrderType.Npc NPC order

C_ProfessionSpecUI — Profession Specialization

Function Returns Description
C_ProfessionSpecUI.GetSpecTabInfo() tabInfo Spec tab info
C_ProfessionSpecUI.GetSpecTabIDsForSkillLineID(skillLineID) specTabIDs Spec tabs for profession
C_ProfessionSpecUI.ShouldShowSpecTab() shouldShow Show spec tab?
C_ProfessionSpecUI.GetRootPathForTab(specTabID) rootPath Root path for spec tab
C_ProfessionSpecUI.GetStateForPath(specTabID, pathID) state Path state (locked, etc.)
C_ProfessionSpecUI.GetStateForPerk(specTabID, perkID) state Perk state
C_ProfessionSpecUI.GetDescriptionForPath(pathID) description Path description
C_ProfessionSpecUI.GetDescriptionForPerk(perkID) description Perk description
C_ProfessionSpecUI.GetPerksForPath(pathID) perkIDs Perks in path
C_ProfessionSpecUI.GetChildrenForPath(pathID) childPathIDs Child paths
C_ProfessionSpecUI.GetSpendCurrencyForPath(pathID) currencyID, amount Currency to spend
C_ProfessionSpecUI.GetUnlockInfoForPath(pathID) unlockInfo Unlock requirements
C_ProfessionSpecUI.PurchaseSpecTabPerk(specTabID, perkID) — Purchase a perk

Global Tradeskill Functions

Function Returns Description
GetProfessions() prof1, prof2, arch, fish, cook Character professions (indices)
GetProfessionInfo(profIndex) name, icon, skillLevel, maxSkillLevel, numAbilities, spellOffset, skillLineID, skillModifier, specIndex, specOffset Profession details
CastSpell(spellID) — Open profession via spell

Common Patterns

List Player's Professions

local prof1, prof2, archaeology, fishing, cooking = GetProfessions()
local function PrintProf(index)
    if index then
        local name, icon, skillLevel, maxSkillLevel = GetProfessionInfo(index)
        print(name, skillLevel .. "/" .. maxSkillLevel)
    end
end
PrintProf(prof1)
PrintProf(prof2)
PrintProf(cooking)

Search Recipes by Name

C_TradeSkillUI.SetRecipeItemNameFilter("Enchant")
local recipeIDs = C_TradeSkillUI.GetFilteredRecipeIDs()
for _, recipeID in ipairs(recipeIDs) do
    local info = C_TradeSkillUI.GetRecipeInfo(recipeID)
    if info then
        print(info.name, "Skill:", info.relativeDifficulty)
    end
end

Craft an Item

-- Craft 5 of a recipe
local recipeID = 12345
C_TradeSkillUI.CraftRecipe(recipeID, 5)

Key Events

Event Payload Description
TRADE_SKILL_SHOW — Tradeskill UI opened
TRADE_SKILL_CLOSE — Tradeskill UI closed
TRADE_SKILL_UPDATE — Tradeskill data updated
TRADE_SKILL_LIST_UPDATE — Recipe list changed
TRADE_SKILL_DATA_SOURCE_CHANGED — Data source changed
TRADE_SKILL_DATA_SOURCE_CHANGING — Data source changing
TRADE_SKILL_CRAFT_BEGIN — Started crafting
UPDATE_TRADESKILL_CAST_COMPLETE — Craft cast completed
UPDATE_TRADESKILL_CAST_STOPPED — Craft cast stopped
TRADE_SKILL_ITEM_CRAFTED_RESULT resultData Crafted item result
CRAFTINGORDERS_ORDER_PLACEMENT_RESPONSE result Order placement result
CRAFTINGORDERS_CLAIMED_ORDER_ADDED — Order claimed
CRAFTINGORDERS_CLAIMED_ORDER_REMOVED — Order released
CRAFTINGORDERS_CLAIMED_ORDER_UPDATED — Claimed order updated
CRAFTINGORDERS_FULFILL_ORDER_RESPONSE result, orderID Order fulfilled result
CRAFTINGORDERS_REJECT_ORDER_RESPONSE result, orderID Order rejected result
CRAFTINGORDERS_ORDER_CANCEL_RESPONSE result, orderID Order cancelled result
CRAFTINGORDERS_CUSTOMER_OPTIONS_PARSED — Customer options loaded
CRAFTINGORDERS_CRAFTER_ORDER_LIST_UPDATED — Crafter order list refreshed
CRAFTINGORDERS_CAN_REQUEST — Can request crafter orders
SKILL_LINES_CHANGED — Skill lines changed
LEARNED_SPELL_IN_SKILL_LINE spellID, skillLineID, isTrackedAsTradeskill New recipe learned

Gotchas & Restrictions

  1. Tradeskill must be open — Most C_TradeSkillUI functions only work when the tradeskill window is open.
  2. CraftRecipe requires hardware event — Crafting requires a user-initiated action (click/key).
  3. Recipe schematic vs recipe info — GetRecipeSchematic() provides reagent slots and quality data; GetRecipeInfo() provides name/icon/difficulty.
  4. Crafting orders are async — GetCrafterOrders() is async. Wait for CRAFTINGORDERS_CRAFTER_ORDER_LIST_UPDATED.
  5. Quality tiers — Dragonflight+ recipes have quality tiers (1-5). Use GetRecipeQualityItemIDs() to get items per tier.
  6. Recraft — Recrafting uses RecraftRecipe() with the item's GUID, not CraftRecipe().
  7. Profession specs use C_Traits — Under the hood, profession specializations use the same C_Traits system as class talents with a different config type.
  8. GetProfessions returns indices — Pass the index to GetProfessionInfo(), not a profession ID.