AgentSkillsCN

wow-api-professions

WoW Retail职业、交易技能、制作订单、配方,以及职业专精API的完整参考。涵盖C_TradeSkillUI(配方列表、制作、试剂、技能树、分类、再制作、回收、附魔)、C_CraftingOrders(客户/制作者订单系统、公开/私有/公会订单、订单创建、履行、上架)、C_ProfessionSpecUI(职业知识、专精树)、全球交易技能功能,以及职业专属的模式。当您需要处理职业、配方、制作、工作订单、制作订单、职业专精,或交易技能UI时,此功能将为您提供全面支持。

SKILL.md
--- frontmatter
name: wow-api-professions
description: "Complete reference for WoW Retail Professions, Tradeskill, Crafting Orders, Recipe, and Profession Specialization APIs. Covers C_TradeSkillUI (recipe list, crafting, reagents, skill lines, categories, recrafting, salvage, enchanting), C_CraftingOrders (customer/crafter order system, public/private/guild orders, order creation, fulfillment, listing), C_ProfessionSpecUI (profession knowledge, specialization trees), global tradeskill functions, and profession-specific patterns. Use when working with professions, recipes, crafting, work orders, crafting orders, profession specialization, or tradeskill UI."

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

FunctionReturnsDescription
C_TradeSkillUI.OpenTradeSkill(tradeSkillID)successOpen tradeskill UI
C_TradeSkillUI.CloseTradeSkill()Close tradeskill UI
C_TradeSkillUI.IsTradeSkillReady()isReadyIs tradeskill data ready?
C_TradeSkillUI.IsTradeSkillGuild()isGuildViewing guild crafters?
C_TradeSkillUI.IsTradeSkillLinked()isLinkedViewing linked tradeskill?
C_TradeSkillUI.IsNPCCrafting()isNPCCrafting at NPC?
C_TradeSkillUI.IsRecraftReady()isReadyRecraft system ready?
C_TradeSkillUI.GetTradeSkillDisplayName(tradeSkillID)nameProfession name

Profession Info

FunctionReturnsDescription
C_TradeSkillUI.GetProfessionInfoBySkillLineID(skillLineID)professionInfoProfession info
C_TradeSkillUI.GetChildProfessionInfos()infosChild profession tiers
C_TradeSkillUI.GetProfessionInfoByRecipeID(recipeID)professionInfoProfession for recipe
C_TradeSkillUI.GetBaseProfessionInfo()professionInfoBase profession info
C_TradeSkillUI.GetProfessionSlots(profession)slotsProfession slots
C_TradeSkillUI.GetProfessionChararacterSlotInfo(slot)infoCharacter slot info

Recipe List & Info

FunctionReturnsDescription
C_TradeSkillUI.GetAllRecipeIDs()recipeIDsAll available recipes
C_TradeSkillUI.GetFilteredRecipeIDs()recipeIDsFiltered recipe list
C_TradeSkillUI.GetRecipeInfo(recipeID)recipeInfoRecipe details
C_TradeSkillUI.GetRecipeSchematic(recipeID, isRecraft [, recraftItemGUID])schematicRecipe schematic
C_TradeSkillUI.GetRecipeDescription(recipeID)descriptionRecipe description text
C_TradeSkillUI.GetRecipeNumItemsProduced(recipeID)min, maxItems produced
C_TradeSkillUI.GetRecipeOutputItemData(recipeID [, reagents [, allocationItemGUID]])outputInfoOutput item data
C_TradeSkillUI.GetRecipeQualityItemIDs(recipeID)itemIDsQuality-tier item IDs
C_TradeSkillUI.GetRecipeQualityReagentItemLink(recipeSpellID, reagentIndex, qualityIndex)itemLinkQuality reagent link
C_TradeSkillUI.GetRecipeRepeatCount()repeatCountQueue repeat count
C_TradeSkillUI.SetRecipeRepeatCount(count)Set repeat count

Reagents

FunctionReturnsDescription
C_TradeSkillUI.GetRecipeReagentSlotInfo(recipeID, reagentIndex)slotInfoReagent slot info
C_TradeSkillUI.GetRecipeRequirements(recipeID)requirementsRecipe requirements
C_TradeSkillUI.GetOptionalReagentInfo(recipeID)optionalReagentsOptional reagent slots
C_TradeSkillUI.GetRecipeFixedReagentItemLink(recipeID, dataSlotIndex)itemLinkFixed reagent link

Crafting

FunctionReturnsDescription
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)inBaseIs recipe in base skill?

Categories & Filters

FunctionReturnsDescription
C_TradeSkillUI.GetCategories()categoryIDsAll categories
C_TradeSkillUI.GetCategoryInfo(categoryID)categoryInfoCategory details
C_TradeSkillUI.GetSubCategories(categoryID)subCategoryIDsSub-categories
C_TradeSkillUI.SetRecipeItemNameFilter(text)Filter by name
C_TradeSkillUI.GetRecipeItemNameFilter()textCurrent name filter
C_TradeSkillUI.SetOnlyShowMakeableRecipes(onlyMakeable)Filter to makeable
C_TradeSkillUI.GetOnlyShowMakeableRecipes()onlyMakeableShowing only makeable?
C_TradeSkillUI.SetOnlyShowSkillUpRecipes(onlySkillUp)Filter to skill-up
C_TradeSkillUI.GetOnlyShowSkillUpRecipes()onlySkillUpOnly skill-up?

C_CraftingOrders — Crafting Orders

Customer (Placing Orders)

FunctionReturnsDescription
C_CraftingOrders.PlaceNewOrder(orderInfo)Place a crafting order
C_CraftingOrders.GetMyOrders(orderType)ordersYour placed orders
C_CraftingOrders.GetOrderClaimInfo(orderType, orderID)claimInfoOrder claim info
C_CraftingOrders.CancelOrder(orderID)Cancel your order
C_CraftingOrders.GetCustomerOptions(skillLineAbilityID, orderType)optionsCustomer options
C_CraftingOrders.GetCraftingOrderCost(recipeID, reagents, orderType)costOrder commission cost
C_CraftingOrders.GetDefaultOrdersSkillLine()skillLineIDDefault skill line
C_CraftingOrders.GetPersonalOrdersInfo()infoPersonal orders info
C_CraftingOrders.HasFavoriteCustomerOptions(skillLineAbilityID)hasFavoriteHas favorited crafter?
C_CraftingOrders.ShouldShowCraftingOrderTab()shouldShowShow orders tab?

Crafter (Fulfilling Orders)

FunctionReturnsDescription
C_CraftingOrders.GetCrafterOrders(request)Query available orders
C_CraftingOrders.GetCrafterBucketTable(request)Get order grouped view
C_CraftingOrders.GetClaimedOrder()orderCurrently 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()numFavoritesFavorite customers count
C_CraftingOrders.GetCrafterOrderRemainingTime(orderID)timeRemainingTime left to fulfill
C_CraftingOrders.OpenCrafterCraftingOrders()Open crafter orders UI
C_CraftingOrders.CloseCrafterCraftingOrders()Close crafter orders UI

Order Types

EnumDescription
Enum.CraftingOrderType.PublicAnyone can fulfill
Enum.CraftingOrderType.GuildGuild members only
Enum.CraftingOrderType.PersonalSpecific crafter
Enum.CraftingOrderType.NpcNPC order

C_ProfessionSpecUI — Profession Specialization

FunctionReturnsDescription
C_ProfessionSpecUI.GetSpecTabInfo()tabInfoSpec tab info
C_ProfessionSpecUI.GetSpecTabIDsForSkillLineID(skillLineID)specTabIDsSpec tabs for profession
C_ProfessionSpecUI.ShouldShowSpecTab()shouldShowShow spec tab?
C_ProfessionSpecUI.GetRootPathForTab(specTabID)rootPathRoot path for spec tab
C_ProfessionSpecUI.GetStateForPath(specTabID, pathID)statePath state (locked, etc.)
C_ProfessionSpecUI.GetStateForPerk(specTabID, perkID)statePerk state
C_ProfessionSpecUI.GetDescriptionForPath(pathID)descriptionPath description
C_ProfessionSpecUI.GetDescriptionForPerk(perkID)descriptionPerk description
C_ProfessionSpecUI.GetPerksForPath(pathID)perkIDsPerks in path
C_ProfessionSpecUI.GetChildrenForPath(pathID)childPathIDsChild paths
C_ProfessionSpecUI.GetSpendCurrencyForPath(pathID)currencyID, amountCurrency to spend
C_ProfessionSpecUI.GetUnlockInfoForPath(pathID)unlockInfoUnlock requirements
C_ProfessionSpecUI.PurchaseSpecTabPerk(specTabID, perkID)Purchase a perk

Global Tradeskill Functions

FunctionReturnsDescription
GetProfessions()prof1, prof2, arch, fish, cookCharacter professions (indices)
GetProfessionInfo(profIndex)name, icon, skillLevel, maxSkillLevel, numAbilities, spellOffset, skillLineID, skillModifier, specIndex, specOffsetProfession details
CastSpell(spellID)Open profession via spell

Common Patterns

List Player's Professions

lua
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

lua
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

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

Key Events

EventPayloadDescription
TRADE_SKILL_SHOWTradeskill UI opened
TRADE_SKILL_CLOSETradeskill UI closed
TRADE_SKILL_UPDATETradeskill data updated
TRADE_SKILL_LIST_UPDATERecipe list changed
TRADE_SKILL_DATA_SOURCE_CHANGEDData source changed
TRADE_SKILL_DATA_SOURCE_CHANGINGData source changing
TRADE_SKILL_CRAFT_BEGINStarted crafting
UPDATE_TRADESKILL_CAST_COMPLETECraft cast completed
UPDATE_TRADESKILL_CAST_STOPPEDCraft cast stopped
TRADE_SKILL_ITEM_CRAFTED_RESULTresultDataCrafted item result
CRAFTINGORDERS_ORDER_PLACEMENT_RESPONSEresultOrder placement result
CRAFTINGORDERS_CLAIMED_ORDER_ADDEDOrder claimed
CRAFTINGORDERS_CLAIMED_ORDER_REMOVEDOrder released
CRAFTINGORDERS_CLAIMED_ORDER_UPDATEDClaimed order updated
CRAFTINGORDERS_FULFILL_ORDER_RESPONSEresult, orderIDOrder fulfilled result
CRAFTINGORDERS_REJECT_ORDER_RESPONSEresult, orderIDOrder rejected result
CRAFTINGORDERS_ORDER_CANCEL_RESPONSEresult, orderIDOrder cancelled result
CRAFTINGORDERS_CUSTOMER_OPTIONS_PARSEDCustomer options loaded
CRAFTINGORDERS_CRAFTER_ORDER_LIST_UPDATEDCrafter order list refreshed
CRAFTINGORDERS_CAN_REQUESTCan request crafter orders
SKILL_LINES_CHANGEDSkill lines changed
LEARNED_SPELL_IN_SKILL_LINEspellID, skillLineID, isTrackedAsTradeskillNew 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 infoGetRecipeSchematic() provides reagent slots and quality data; GetRecipeInfo() provides name/icon/difficulty.
  4. Crafting orders are asyncGetCrafterOrders() 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.