askill
wow-api-achievements

wow-api-achievementsSafety 100Repository

Complete reference for WoW Retail Achievement, Statistics, and Achievement Criteria APIs. Covers C_AchievementInfo, global achievement functions (GetAchievementInfo, GetAchievementCriteriaInfo, GetStatistic, GetComparisonStatistic), achievement categories, guild achievements, achievement links, tracked achievements, toast notifications, and achievement-related events. Use when working with achievement tracking, achievement display, statistics, achievement criteria, guild achievements, or achievement completion detection.

3 stars
1.2k downloads
Updated 2/14/2026

Package Files

Loading files...
SKILL.md

Achievements API (Retail — Patch 12.0.0)

Comprehensive reference for achievements, statistics, and criteria 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

  • Achievement Functions — GetAchievementInfo, criteria, categories
  • Statistics — GetStatistic, comparison
  • Tracking — Tracked achievements
  • Guild Achievements — Guild-specific achievements

Achievement Info

Core Functions

FunctionReturnsDescription
GetAchievementInfo(achievementID)id, name, points, completed, month, day, year, description, flags, icon, rewardText, isGuild, wasEarnedByMe, earnedBy, isStatisticAchievement details
GetAchievementInfoFromCriteria(criteriaID)id, name, points, completed, ...Achievement from criteria
GetAchievementLink(achievementID)linkAchievement hyperlink
GetAchievementNumRewards(achievementID)numRewardsReward count
GetAchievementReward(achievementID, rewardIndex)text, type, ...Reward info
GetPreviousAchievement(achievementID)prevAchievementIDAchievement chain prev
GetNextAchievement(achievementID)nextAchievementIDAchievement chain next
GetTotalAchievementPoints([isGuild])pointsTotal achievement points
GetComparisonAchievementPoints()pointsCompared player's points
SetAchievementSearchString(searchText)numResultsSearch achievements
GetAchievementSearchSize()numResultsSearch result count
GetAchievementSearchProgress()progressSearch progress
GetFilteredAchievementID(index)achievementIDFiltered result at index

Achievement Criteria

FunctionReturnsDescription
GetAchievementNumCriteria(achievementID)numCriteriaNumber of criteria
GetAchievementCriteriaInfo(achievementID, criteriaIndex)criteriaString, criteriaType, completed, quantity, reqQuantity, charName, flags, assetID, quantityString, criteriaID, eligible, duration, elapsedCriteria details
GetAchievementCriteriaInfoByID(achievementID, criteriaID)criteriaString, criteriaType, completed, quantity, reqQuantity, charName, flags, assetID, quantityString, criteriaID, eligibleCriteria by ID

Achievement Categories

FunctionReturnsDescription
GetCategoryList()categoryIDsAll achievement categories
GetCategoryInfo(categoryID)title, parentCategoryID, flagsCategory info
GetCategoryNumAchievements(categoryID [, includeAll])numAchievements, numCompleted, numIncompleteCategory stats
GetAchievementCategory(achievementID)categoryIDAchievement's category

Achievement Comparison (Inspect)

FunctionReturnsDescription
GetComparisonStatistic(achievementID)valueCompared player's statistic
ClearAchievementComparisonUnit()Clear comparison
SetAchievementComparisonUnit(unit)successSet comparison target

Statistics

FunctionReturnsDescription
GetStatistic(achievementID)valueStatistic value (string)
GetStatisticsCategoryList()categoryIDsStatistic categories
GetCategoryAchievementPoints(categoryID, includeAll)points, completedPointsCategory points

Achievement Tracking

FunctionReturnsDescription
GetTrackedAchievements()... (achievementIDs)All tracked achievements
GetNumTrackedAchievements()numTrackedTracked count
AddTrackedAchievement(achievementID)Track achievement
RemoveTrackedAchievement(achievementID)Untrack achievement
IsTrackedAchievement(achievementID)isTrackedIs tracked?

Common Patterns

Check Achievement Completion

local function IsAchievementDone(achievementID)
    local _, _, _, completed = GetAchievementInfo(achievementID)
    return completed
end

Display Achievement Criteria Progress

local function PrintCriteriaProgress(achievementID)
    local _, name = GetAchievementInfo(achievementID)
    print("Achievement:", name)
    local numCriteria = GetAchievementNumCriteria(achievementID)
    for i = 1, numCriteria do
        local criteriaString, _, completed, quantity, reqQuantity = 
            GetAchievementCriteriaInfo(achievementID, i)
        local status = completed and "DONE" or (quantity .. "/" .. reqQuantity)
        print("  ", criteriaString, status)
    end
end

Search Achievements

local function SearchAchievements(text)
    local numResults = SetAchievementSearchString(text)
    local results = {}
    for i = 1, GetAchievementSearchSize() do
        local achievementID = GetFilteredAchievementID(i)
        local _, name, points, completed = GetAchievementInfo(achievementID)
        table.insert(results, {id = achievementID, name = name, points = points, done = completed})
    end
    return results
end

Key Events

EventPayloadDescription
ACHIEVEMENT_EARNEDachievementID, alreadyEarnedAchievement completed
CRITERIA_EARNEDachievementID, criteriaStringCriteria completed
CRITERIA_UPDATECriteria progress updated
CRITERIA_COMPLETEAll criteria complete
TRACKED_ACHIEVEMENT_LIST_CHANGEDachievementID, addedTracking changed
TRACKED_ACHIEVEMENT_UPDATEachievementIDTracked achievement updated
ACHIEVEMENT_SEARCH_UPDATEDSearch results ready
INSPECT_ACHIEVEMENT_READYguidInspect achievement data ready
RECEIVED_ACHIEVEMENT_MEMBER_LISTachievementIDMember list received

Gotchas & Restrictions

  1. GetAchievementInfo returns 15 values — Destructure carefully. The completed boolean is the 4th return.
  2. Guild vs personal — Pass true as isGuild to GetCategoryNumAchievements() for guild achievements.
  3. Statistics are stringsGetStatistic() returns a formatted string, not a number. Parse with tonumber() if needed.
  4. Criteria index is 1-based — Criteria indices start at 1, up to GetAchievementNumCriteria().
  5. Achievement chains — Some achievements are chained (10/25/50 kills etc.). Use GetPreviousAchievement()/GetNextAchievement().
  6. Search is asyncSetAchievementSearchString() may not return all results immediately. Wait for ACHIEVEMENT_SEARCH_UPDATED.
  7. Tracking limit — There's a maximum number of tracked achievements.
  8. Inspect data — Achievement comparison requires SetAchievementComparisonUnit() and waiting for INSPECT_ACHIEVEMENT_READY.

Install

Download ZIP
Requires askill CLI v1.0+

AI Quality Score

92/100Analyzed 2/24/2026

Comprehensive and well-structured API reference for WoW Retail Achievement APIs. Contains detailed function tables, code examples for common patterns, event documentation, and gotchas. Clear "Use when" trigger section. Located in dedicated skills folder with appropriate metadata. High-density technical content that is accurate and reusable for any WoW addon development.

100
90
90
90
92

Metadata

Licenseunknown
Version-
Updated2/14/2026
PublisherJBurlison

Tags

apici-cd