Skip to content

Achievements

Achievements motivate players and provide progression goals beyond core gameplay. Quest Data tracks unlock rates across your entire player base.

  1. Go to Players > Achievements
  2. Click New Achievement and fill:
    • ID: first_boss_defeat
    • Name: “First Blood”
    • Description: “Defeat the first boss”
    • Icon: Upload a PNG (128x128)
    • Hidden: Checkbox (hide from menu until earned)
    • Points: Optional XP reward
  3. Click Save

Unlock achievements using the dedicated SDK function:

# Unlock an achievement
QuestData.unlock_achievement("first_boss_defeat", func(response: Dictionary):
if response.get("success") and not response.get("already_unlocked"):
show_achievement_popup(response["achievement"])
)
# Fetch all achievements with unlock status
QuestData.get_achievements(func(achievements: Array, total: int, unlocked: int):
print("Unlocked %d / %d points" % [unlocked, total])
)

See the SDK Achievements guide for full API details and caching.

The dashboard shows what % of your player base has earned each achievement:

AchievementUnlocksPlayersRate
First Blood450100045%
Speedrunner120100012%
Completionist4510004.5%

Interpretation:

  • 50%: Too easy, maybe reduce reward or make more challenging

  • 10-50%: Good difficulty, healthy progression
  • <5%: Very hard, ultra-endgame, or broken

Achievements marked “Hidden” don’t appear in the menu until earned. Use for:

  • Secret bosses
  • Easter eggs
  • Speedrun challenges
  • Trolling achievements

Sort by:

  • Unlock Rate - Most to least common
  • Points - Highest reward first
  • Rarity - Rarest first (motivates completionists)
  • Edit: Change description, icon, points anytime
  • Disable: Mark obsolete achievements (locked to completed players)
  • Delete: Remove from new players’ lists
Terminal window
curl "https://api.questdata.io/v1/achievements" \
-H "x-game-api-key: YOUR_API_KEY"

Response:

{
"achievements": [
{
"id": "first_boss_defeat",
"name": "First Blood",
"description": "Defeat the first boss",
"points": 10,
"hidden": false,
"unlock_count": 450,
"unlock_rate": 45.0
}
]
}